我可以帮您找到一份详尽的C/C++ FFmpeg教程吗?

12

我想使用ffmpeg(以其c库形式)将视频分成更多部分,重新组合它们并编码成最终结果。需要一些基础帮助,但很难找到相关的文档或提示。请问应该去哪里寻求帮助和建议?


怎么样:http://www.inb.uni-luebeck.de/~boehme/using_libavcodec.html(基本上是从http://ffmpeg.org/documentation.html链接的教程)? - ArjunShankar
3
看看这个...虽然不是最新版但是可以作为一个很好的起点。http://dranger.com/ffmpeg/ ,还有别忘了FFmpeg的Doxygen文档 http://ffmpeg.org/doxygen/。 - A.G.
我也发现了这个网站:http://ffmpeg.org/developer.html - Jack
1
+1 给Dranger.com教程。这是我找到的唯一一个提供逐步教程创建简单剥离应用程序并解释每个步骤以及涵盖API特殊性的教程。 - Jason B
C语言中的最小可运行调整大小示例:https://dev59.com/Pmcs5IYBdhLWcg3wdjzR#36487785 - Ciro Santilli OurBigBook.com
4个回答

7

通过FFmpeg项目维护的命令行工具的源代码,您可以学到很多知识。

ffplay.c 中,main() 函数将向您展示如何初始化库。 stream_component_open() 展示了如何将编解码器与媒体流匹配,而 get_video_frame() 则展示了如何解码包并获取其PTS (演示时间戳)。 您需要这个来正确计时。

这应该让您开始进行解码。 对于编码方面,请查看 ffmpeg.c。 它比ffplay更大更复杂,但编码帧的过程几乎与解码过程相似,因此一旦您完成解码,它就会更有意义。


4

2
我曾经也找了很久一个好的C/C++ FFmpeg教程,而这个C/C++ ffmpeg-libav-tutorial绝对是我目前找到的最好的。它解释了如何将FFmpeg用作库,并在此之前清晰地概述了视频关键字(如编码、解码、转码、混流等),这对于不太熟悉视频的人非常有帮助。
此外,这个教程很好地解释了视频的概念,所以对于那些对视频世界不太熟悉的人来说,我建议从这里开始,然后再继续学习C/C++ ffmpeg-libav-tutorial

0

简而言之;

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源文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接