03_为 HTTP 实时流式传输准备音频

概述

如果使用高级音频编码 (AAC) 系列格式对音频进行编码,则为 HTTP 实时流式处理 (HLS) 制作媒体需要特殊注意事项。

AAC 音频处理需要少量领先的“一次性”音频来启动编码器并初始化内部表。这种少量音频是由编码器延迟引起的,编码器延迟在编码过程中发生,以产生格式正确、编码的音频数据包,其持续时间通常称为启动持续时间。此音频需要在视频的第一帧之前出现;否则,视频的前几帧将没有音频。

音频轨道中的音频启动示例的图示位于视频轨道中的视频样本之前。

音频采样率通常为 44.1 kHz 或 48 kHz。

对 MPEG-2 传输流段进行编码页面链接

MPEG-2 传输流在对媒体进行编码时创建任意时间戳,使用每 26 小时滚动一次的 33 位时钟。例如,如果您的视频从两小时标记开始,则音频从两小时加上前导音频的时间开始。因此,与从两小时标记开始的视频片段配对的音频片段需要从两小时标记开始的音频减去启动持续时间。此附加片段可确保视频的第一帧与音频同步播放。

对页面链接中的分段 MPEG-4 段进行编码

MPEG-4 文件格式 (ISO BMFF) 假定所有轨道时间线都以时间零开头,无论时间线是否划分为片段。但是,您可以通过跟踪片段基础媒体解码时间盒 (tfdt) 将任何片段的初始解码时间设置为任意值。使用此框允许将音频时间轴与将启动音频放在第一个视频帧之前的视频时间轴对齐。

或者,从 iOS 13.1 开始,可以使用跟踪框 (trak) 中的编辑列表框 (elst) 将启动音频的持续时间放在时间 0 之前。这允许其他轨道与时间 0 的音频自然对齐。编辑列表需要有一个条目,其中 media_start 的值等效于音频启动持续时间,segment_duration 的值为 0。这是通用媒体应用程序格式 (CMAF) 的时间对齐的推荐方法。

处理页面链接中内容中的播放位置更改

将播放位置更改为内容中的特定时间点称为搜索,并且是编码音频的另一个注意事项。HTTP 实时流 (HLS) 具有可单独下载的单个片段;每个都包含整个媒体时间线 4 到 6 秒的媒体数据。在视频中寻找某个点时,跳过当前播放位置和目标播放位置之间的中间片段并加载相应的片段。