我有一个测试应用程序,它使用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部分)的“根据语言和其他标准选择音频和字幕媒体”部分中进行了描述.
原文地址:https://www.jb51.cc/iOS/335013.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。