5

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

在一个实验中,我让 ffmpeg 使用 libfdk_aac 直接将一个 wav 文件分段为 aac,但是它需要很长时间才能完成。

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

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

也许这与这个问题有关:如何在重建音频文件时对音频文件进行编码和分段,而不会在片段之间出现间隙(或音频弹出)?

4

1 回答 1

4

根据HLS Specification 的第 4 节,我们有:

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

“沉默”的差距是 99,99% 的时间与错误的计数器/不连续性有关。因为您写道您手动更改了 .m3u8 文件而不更改其持续时间,所以我推断您试图自己剪切音频。这是不可能的。

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

于 2013-06-05T06:16:20.107 回答