并行化ffmpeg中仅音频段的编码

时间:2013-03-18 23:20:53

标签: ffmpeg http-live-streaming aac

我们希望通过利用我们机器的所有内核,使用ffmpeg将分段/编码的执行时间从wav减少到为HTTP实时流分段的aac,以便分段并生成m3u8播放列表。

在一个实验中,我有一个ffmpeg直接将一个wav文件用libfdk_aac分割成aac,但是花了很长时间才完成。

在第二个实验中,我有ffmpeg段一个wav文件(wav)非常快(在我们的机器上<1秒),然后使用GNU parallel再次执行ffmpeg将wav段编码为aac和手动更改.m3u8文件而不更改其持续时间。这样做的速度要快得多,但在输出音频时可以听到“静音”间隙。

我最初尝试使用mp3的第二种情况,结果仍然完全相同。虽然我已经读过lame在编码期间添加填充(http://scruss.com/blog/2012/02/21/generational-loss-in-mp3-re-encoding/),这是否意味着libfdk_aac在编码期间还添加了填充?

也许这个问题与这个问题有关:How can I encode and segment audio files without having gaps (or audio pops) between segments when I reconstruct it?

1 个答案:

答案 0 :(得分:4)

根据section 4 of HLS Specification,我们有:

  

传输流或音频基本流段必须是   在段的末尾继续使用编码媒体   前一个序列号,其中连续序列中的值,例如   时间戳和连续性计数器,继续不间断

“沉默”缺口是99,99%与错误的计数器/不连续相关的时间。因为您写道手动更改.m3u8文件而不更改其持续时间我推断您尝试自己剪切音频。它无法完成。

由于这些计数器,HLS流无法进行可并行化的创建。它们必须遵循一个序列[MPEG2-TS :-(]。你最好得到一个更快的处理器。