我想使用ffmpeg(以其c库形式)将视频分成更多部分,重新组合它们并编码成最终结果。需要一些基础帮助,但很难找到相关的文档或提示。请问应该去哪里寻求帮助和建议?
我想使用ffmpeg(以其c库形式)将视频分成更多部分,重新组合它们并编码成最终结果。需要一些基础帮助,但很难找到相关的文档或提示。请问应该去哪里寻求帮助和建议?
通过FFmpeg项目维护的命令行工具的源代码,您可以学到很多知识。
在 ffplay.c 中,main() 函数将向您展示如何初始化库。 stream_component_open() 展示了如何将编解码器与媒体流匹配,而 get_video_frame() 则展示了如何解码包并获取其PTS (演示时间戳)。 您需要这个来正确计时。
这应该让您开始进行解码。 对于编码方面,请查看 ffmpeg.c。 它比ffplay更大更复杂,但编码帧的过程几乎与解码过程相似,因此一旦您完成解码,它就会更有意义。
https://github.com/ShootingKing-AM/ffmpeg-pseudocode-tutorial - 通过松散的伪代码,了解 ffmpeg-cli 的广泛工作流程。
FFmpeg开发人员建议的最佳方法是阅读ffmpeg libav和/或ffmpeg-cli的源代码。
了解ffmpeg-cli的目的是为了能够将FFmpeg集成到我们的项目中,而无需在后台调用ffmpeg-cli进行多媒体操作。这很重要,因为:
但是,阅读ffmpeg-cli的源代码非常困难,因为它不是用作理解如何使用libav的学习材料,而是作为优化的多媒体工具。因此,我尝试将其源代码整理成简单的伪代码函数,突出何时何地调用重要(几乎所有)的libav函数,以便更全面地了解ffmpeg的工作流程。有关如何调用libav函数调用的信息,可以参考doxygen文档和ffmpeg-cli源文件。