我在哪里可以找到C / C ++ FFmpeg广泛的教程?

时间:2012-07-09 13:41:20

标签: c++ c ffmpeg video-editing

我想使用ffmpeg(在其c库形式中)将视频分成更多部分,重新​​组合它们并对最终结果进行编码。基本的东西。但是很难找到关于此的文档或提示。我应该在哪里寻求建议?

4 个答案:

答案 0 :(得分:6)

您可以从FFmpeg项目维护的命令行实用程序的源代码中学到很多东西。

ffplay.c 中, main()将向您展示如何初始化库。 stream_component_open()演示将匹配编解码器与媒体中的流进行匹配, get_video_frame()显示如何解码数据包并获取其PTS(演示时间戳)。你需要这样才能正确计算你的分裂时间。

这应该让你开始解码方面。在编码方面,请查看 ffmpeg.c 。它比ffplay更大,更复杂,但编码帧的过程几乎反映了它的解码过程,所以一旦解码工作,它应该更有意义。

答案 1 :(得分:4)

我正在寻找一个FFmpeg教程和PHP,但我发现以下是用任何语言学习它的最佳地方 我认为这本书是关于FFmpeg的唯一一本书 FFmpeg基础:使用快速音频和视频编码器进行多媒体处理

http://www.amazon.com/FFmpeg-Basics-Multimedia-handling-encoder/dp/1479327832/ref=sr_1_12?ie=UTF8&qid=1357356672&sr=8-12&keywords=ffmpeg

enter image description here

,第二名是 http://ffmpeg.org/documentation.html

答案 2 :(得分:2)

一段时间以来,我也在寻找一个好的c / c ++ FFmpeg教程,而这个c/c++ ffmpeg-libav-tutorial绝对是我到目前为止发现的最好的教程。它说明了如何将FFmpeg用作库,并且在此之前对视频关键词(例如编码,解码,转码,混合等)给出了清晰的概述,这对不熟悉视频的人非常有帮助。

此外,此tutorial非常适合理解视频的概念,因此对于那些对视频世界不够熟悉的人,我建议从此开始,然后再继续{{ 3}}。

答案 3 :(得分:0)

TLDR;

https://github.com/ShootingKing-AM/ffmpeg-pseudocode-tutorial - 通过松散的伪代码对 ffmpeg-cli 的广泛工作流程理解。


对于 FFmpeg 开发者来说,最好的方法是通读 ffmpeg libav 和/或 ffmpeg-cli 的源代码。

理解ffmpeg-cli的目标是能够将FFmpeg集成到我们的项目中,而无需在后台调用ffmpeg-cli进行多媒体操作。这很重要,因为

  • 启动外部可执行文件往往会被防病毒软件阻止,并可能导致用户出现问题。
  • 优化您的项目特定的 libav 使用并从 ffmpeg-cli 中跳过不必要的代码 此外,ffmpeg 官方文档充其量是含糊不清的,对于希望在其代码中实现 ffmpeg 库 (libav) 功能的开发人员来说,唯一的选择是阅读命令行界面的源代码。

但是,阅读 ffmpeg-cli 的源代码非常困难,因为它不是用作了解如何使用 libav 的学习材料,而是用作优化的多媒体工具。因此,我试图将其源代码整理成简单的伪代码函数,突出显示何时何地调用重要的(几乎所有)libav 的函数,以获得 ffmpeg 工作流程的整体更广阔的画面。有关如何调用 libav 函数调用的信息,可以参考 doxygen 文档和 ffmpeg-cli-source 文件。