ios – 如何使用AVPlayer在备用音频流之间切换

我有一个测试应用程序,它使用AVPlayer播放由m3u8 HLS播放列表指定的视频.播放列表指定了几个备用音频流,类似于Apple提供的“清单10”示例播放列表: http://developer.apple.com/library/ios/#technotes/tn2288/_index.html#//apple_ref/doc/uid/DTS40012238-CH1-ALTERNATE_MEDIA应用程序需要能够在视频播放时在备用音频流之间切换.例如,应用程序应该能够在视频播放时通过用户点击应用程序中的按钮在英语,法语和西班牙语音频流之间切换.

AVPlayer及其相关对象将使用哪些AVFoundation类和方法来切换m3u8播放列表中指定的音频流?我查看了AVFoundation类文档,但没有看到如何执行此操作.

指向如何执行此操作的示例代码链接将非常棒.我一直在网上搜索这些信息但没有成功.感谢您对此的任何帮助.

解决方法

对于使用AVPlayer播放m3u8,看起来您无法使用AVAsset构建AVPlayerItem.您需要直接从URI构造AVPlayerItem.在使用此AVPlayerItem实例化AVPlayer,然后KVO侦听属性@“status”时,如果状态为AVPlayerStatusReadyToPlay,则[[avPlayerInstance currentItem]资产]中将有一个资产.这在 AV Foundation Programming Guide的第20页中有描述.

要将音频更改为各种替换使用:

AVMediaSelectionGroup *audioSelectionGroup = [[[avPlayerInstance currentItem] asset] mediaSelectionGroupForMediaCharacteristic: AVMediaCharacteristicAudible];

NSLog(@"audioSelectionGroup: %@",audioSelectionGroup);

// [audioSelectionGroup options] // Array of the options in the group above.

并选择AVMediaSelectionoption(您想要的音频通道):

[[avPlayerInstance currentItem] selectMediaOption:avMediaSelectionoptionInstance] inMediaSelectionGroup: audioSelectionGroup];

这同样适用于视频.

这在AV Foundation Release Notes for IOS 5(第3部分)的“根据语言和其他标准选择音频和字幕媒体”部分中进行了描述.

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...