Video 苹果分节器是什么;“优化”;选项实际对AAC音频有何影响?

Video 苹果分节器是什么;“优化”;选项实际对AAC音频有何影响?,video,http-live-streaming,aac,mediastreamsegmenter,Video,Http Live Streaming,Aac,Mediastreamsegmenter,我正在编写一个Flash视频播放器来播放Apple HLS视频流,我发现任何带有AAC音轨的内容,如果苹果工具启用了-optimize选项(现在是默认选项),则会有一个我无法解码的音轨(同步字节不是我认为应该的位置) 优化选项对音频有什么作用?它是重新编码还是以不同的方式打包 最重要的是,为了正确阅读音频曲目,我需要做什么 我已经搜索了几个月了,但似乎没有人能从技术上对此给出有用的答案(即,除了“它使文件变小”之外的任何东西) 这似乎只会影响音轨,如果我禁用音频解码,视频在所有情况下都能正常播放

我正在编写一个Flash视频播放器来播放Apple HLS视频流,我发现任何带有AAC音轨的内容,如果苹果工具启用了
-optimize
选项(现在是默认选项),则会有一个我无法解码的音轨(同步字节不是我认为应该的位置)

优化选项对音频有什么作用?它是重新编码还是以不同的方式打包

最重要的是,为了正确阅读音频曲目,我需要做什么

我已经搜索了几个月了,但似乎没有人能从技术上对此给出有用的答案(即,除了“它使文件变小”之外的任何东西)


这似乎只会影响音轨,如果我禁用音频解码,视频在所有情况下都能正常播放,至少到目前为止我所看到的一切——苹果工具、ffmpeg、商用编码器等。

好的,所以经过一些实验,我想我已经找到了问题的答案

通常,AAC帧被打包,使得(小的)全部AAC帧适合单个有效负载单元,大致按照PTS顺序与它们同步的视频帧交错。然后将这些有效负载单元打包到连续188字节TS数据包的有效负载空间中,最后一个TS数据包中的空白空间填充有垃圾(即,不是数据流的一部分)。这可能意味着在10秒的TS段中,您可能会有大约2-6KB的开销

通过AAC优化,两件事似乎发生了变化

  • 包含AAC帧的有效负载单元的大小增加,从而减少了有效负载单元的总体数量
  • 有效负载单元的大小是TS分组中有效负载空间的精确倍数,而不是适合整个AAC帧的数量
  • 这意味着几乎消除了填充-所有使用的空间都是有价值的数据,因此总体大小减小

    此外,这意味着AAC帧不再直接与它们应该同步的视频帧相邻-实际上它们之间可能有相当大的距离

    然而,这也意味着,一个单独的有效负载单元可能无法在末尾安装整个AAC帧,因此将安装的大部分帧都放在该有效负载单元中,其余部分放在下一个AAC有效负载单元的开头-这意味着AAC有效负载单元可能不会以AAC帧同步字节开始!(这就是我看到的!)

    如果读取的AAC帧长度不足以包含整个标头,或者AAC标头中的AAC有效负载长度小于剩余有效负载单元长度,则剩余数据必须位于下一个AAC有效负载单元中-注意,这可能位于下一段中