【问题标题】:Parallelize encoding of audio-only segments in ffmpeg在 ffmpeg 中并行化纯音频段的编码
【发布时间】:2013-03-07 11:54:22
【问题描述】:

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

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

在第二个实验中,我让 ffmpeg 按原样 (wav) 分段一个 wav 文件,这非常快(在我们的机器上

我最初使用 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?

【问题讨论】:

  • 我理解正确吗:您对 wav 进行分段,然后分别对每个分段进行编码?可能是输出ts不符合时间戳规则-即每个段的第一个时间戳=上一个段的最后一个时间戳+帧间隔?
  • @NiRR 就在现场叹息

标签: ffmpeg http-live-streaming aac


【解决方案1】:

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

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

“静默”间隙有 99.99% 的时间与错误的计数器/不连续性有关。因为您写道您手动更改了 .m3u8 文件而不更改其持续时间我推断您试图自己剪切音频。做不到。

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

【讨论】:

  • 这正是我所做的......看起来获得更快的处理器是目前唯一的解决方案:-/。不过,我们现在改用了另一种方法。
猜你喜欢
  • 2023-01-14
  • 2020-09-02
  • 2012-01-26
  • 1970-01-01
  • 1970-01-01
  • 2020-07-14
  • 1970-01-01
  • 1970-01-01
  • 2023-03-24
相关资源
最近更新 更多