Video 实施'-异步1';用C代码纠正不同步的音频
我已经建立了一个分段器,根据HLS规范将h264/AAC视频和分段作为输入。它的源代码可以在这里看到: 它是作为python扩展实现的,但有趣的部分在Video 实施'-异步1';用C代码纠正不同步的音频,video,ffmpeg,libav,Video,Ffmpeg,Libav,我已经建立了一个分段器,根据HLS规范将h264/AAC视频和分段作为输入。它的源代码可以在这里看到: 它是作为python扩展实现的,但有趣的部分在process\u video()函数中。它利用libav库(或者ffmpeg)来进行重载 它95%的时间都能工作,但我们也遇到过一些视频,它会产生音频不同步的片段。如果我使用命令行工具,我可以简单地添加-async1来修复它,但是如何在我的C代码中实现相同的功能呢 我在avconv_filter.c(对于libav,我不确定ffmpeg的等价物是
process\u video()
函数中。它利用libav
库(或者ffmpeg
)来进行重载
它95%的时间都能工作,但我们也遇到过一些视频,它会产生音频不同步的片段。如果我使用命令行工具,我可以简单地添加-async1
来修复它,但是如何在我的C代码中实现相同的功能呢
我在avconv_filter.c
(对于libav
,我不确定ffmpeg
的等价物是什么)中找到了一段代码,它们是在哪里启动过滤器的,但是如果没有任何文档,就很难在整个模块化设置之外找到如何执行此操作的方法
我只需要:
欢迎任何帮助;示例代码、过滤器的解释等。您是指
libav
命令行工具avconv
中的asynchts
?您是否查看了ffmpeg.c
搜索标志音频同步方法
?Gene:是的,这就是名称。alk:我还没有,但是通过阅读ffmpeg中的一些示例,(对我来说)如何在我的代码中应用这些过滤器并不是非常明显(参见文件)。如果使用选项-async 1
调用ffmpeg
,则涉及的相关代码(在ffmpeg.c
中)少于40行。这对我来说也不是“非常明显”,但这可能是因为我已经4年多没有在FFmpeg的sourcess中进行黑客攻击了。但你似乎正在努力,我相信你会成功的然而,is看起来不像-async 1
应用了一个单独的过滤器。问题是,要理解输入过滤器的位和块,您必须理解大部分流程。函数在一个地方定义,命令行参数在另一个地方定义,过滤器的实际应用在第三个地方完成。这就是为什么我在寻找一个可以解释它的人,而不必纠结于ffmpeg.c命令行程序代码。