【发布时间】:2020-04-04 13:12:13
【问题描述】:
我正在开发一个 tvOS 应用程序,我正在使用 AVPlayer 播放 HLS 播放列表,该列表为某些语言提供两种格式的音频。例如:
- 法语 (AAC)
- 法语 (EC-3)
- 英语
我正在尝试显示一个自定义对话框,允许用户在每个轨道之间进行选择。
播放列表如下所示:
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio-mp4a.40.2",NAME="Français",DEFAULT=YES,AUTOSELECT=YES,LANGUAGE="fr",URI="..."
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio-ec-3",NAME="Français",DEFAULT=NO,AUTOSELECT=YES,LANGUAGE="fr",URI="..."
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio-mp4a.40.2",NAME="English",DEFAULT=NO,AUTOSELECT=YES,LANGUAGE="en",URI="..."
问题在于,据我所知,AVPlayer 按语言对曲目进行分组,并且它永远不会返回所有 3 首曲目。
(lldb) po player?.currentItem?.asset.mediaSelectionGroup(forMediaCharacteristic: .audible)
▿ Optional<AVMediaSelectionGroup>
- some : <AVAssetMediaSelectionGroup: 0x283961940, options = (
"<AVMediaSelectionKeyValueOption: 0x2839a5a00, language = fr, mediaType = 'soun', title = Français, default = YES>",
"<AVMediaSelectionKeyValueOption: 0x2839a5b00, language = en, mediaType = 'soun', title = English>"
), allowsEmptySelection = YES>
我更深入地研究了法语项目 (player?.currentItem?.asset.mediaSelectionGroup(forMediaCharacteristic: .audible)?.options.first),但我仍然找不到任何有用的东西。我还尝试查看AVPlayer 中的其他字段,但没有成功。
即使我使用AVPlayerViewController,我也只能看到两个音轨可供选择。
有什么方法可以获取所有可用的音轨吗?
【问题讨论】:
标签: ios avplayer http-live-streaming tvos