Video 实施'-异步1';用C代码纠正不同步的音频

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的等价物是

我已经建立了一个分段器,根据HLS规范将h264/AAC视频和分段作为输入。它的源代码可以在这里看到:

它是作为python扩展实现的,但有趣的部分在
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命令行程序代码。