我希望在我的C代码中复制FFmpeg命令行命令。具体来说,我希望能够运行:
ffmpeg -re -i video.mp4 -f mpegts udp://localhost:7777
在查看那些在自己的代码中使用FFmpeg库的人的代码时,我注意到的一件事是,他们通常有几百行代码用于类似于FFmpeg命令行命令的单个命令。我猜这只是因为他们在做一些非常具体的事情,因为如果我能在命令行上运行这个短命令并得到我想要的,它应该只需要大约十行代码就可以在C代码中做同样的事情。这应该只需要这么多的工作,对吧?为什么要付出更多呢?
我很难找到关于如何使用FFmpeg库的流功能的解释,这些库并不过于复杂,因为它们是用于非常特定的目的。谁能解释一下我该如何为上面的命令编写代码?或者至少给我一些文档来解释如何编写这样的脚本/程序?非常感谢!
编辑:我确实希望从iPhone应用程序最终运行这个,所以我将不只是能够直接从我的程序调用FFmpeg。我需要使用FFmpeg使用的库。
FFmpeg的内部库(libavcode, libavformat等)具有相当复杂的代码结构。您将需要时间来理解基本的东西是如何工作的,然后您应该尝试编写一些简单的测试应用程序,只有这样您才能复制给定的命令。
有相当多可用的教程如何使用FFmeg的库(其中一些使用过时的API),也请查看"doc/examples"目录中的演示代码。
希望有帮助!
From Comments:
从最新的FFmpeg版本中查看examples/muxing.c源代码。尝试提供URL而不是输出文件。检查avformat_alloc_output_context2()
函数的文档/源代码。然后你应该得到基本的想法如何添加流支持