HLS Streaming:视频流中的多种音频选择

HLS Streaming: Multiple Audio Alternatives in Video Stream

我的某个 HLS 流设置有问题。到目前为止,我的设置是使用流的视频再现,其中包含名称为 .mp4 的流的所有不同音频替代方案。根据 specs,这应该可以通过像这样设置我的 HLS 主清单来实现:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-ALLOW-CACHE:NO

#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aac",CODECS="mp4a.40.5",LANGUAGE="deu",NAME="Deutsch",DEFAULT=YES,AUTOSELECT=YES
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aac",CODECS="mp4a.40.5",LANGUAGE="spa",NAME="Español",DEFAULT=NO
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aac",CODECS="mp4a.40.5",LANGUAGE="eng",NAME="English",DEFAULT=NO

#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1391346,RESOLUTION=1022x574,CODECS="avc1.4d001f,mp4a.40.5",AUDIO="aac"
0009_orig/manifest.m3u8

然而,在 iPad 上进行测试时,视频播放器为我提供了不同的语言,但在选择它们之后,播放器 并没有 实际切换语言。

我的猜测是播放器实际上无法在原始流中找到相应的曲目。这可能吗?我可以在清单中设置此信息吗?

更新:以下答案适用于version 3 of the protocol. The IETF draft you linked is for version 7。如果设备支持版本 7,您可以使用混合媒体文件,尽管我还没有尝试过。请改用 #EXT-X-VERSION:7

根据developer.apple.com

Alternate Audio and Video Renditions

The audio tracks contain unmuxed (signals have not been combined) audio segments. The master playlist file controls the playback.

我认为这意味着您为单个音频流提供 URI:

#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aac",NAME="Deutsch", \
      DEFAULT=NO,AUTOSELECT=YES,LANGUAGE="de", \
      URI="main/german-audio.m3u8"