我们已经使用 AVPlayer 实现了 HLS 流媒体,
fileURL = [NSURL URLWithString:@"https://devstreaming-cdn.apple.com/videos/streaming/examples/img_bipbop_adv_example_ts/master.m3u8"];
avAsset = [AVURLAsset assetWithURL:fileURL];
AVPlayerItem *avPlayerItem =[[AVPlayerItem alloc]initWithAsset:self->avAsset];
self->avPlayer = [AVPlayer playerWithPlayerItem:avPlayerItem];
视频质量是根据网络速度自动选择的,也需要用户选择手动选择视频质量。但我们无法手动选择媒体文件(质量 1080p、720p、270p 等)。
如果有人了解 HLS 流媒体和手动质量选择,请分享您的想法。提前致谢!
是的,我们可以,但我不确定这是正确的方法。但这对我有用
首先,我们需要获得视频所需的所有品质。
有两种方法可以获得此选项
- 通过API从后端获取
- “m3u8”您实际上可以下载它并阅读其内容。您所要做的就是获取键“RESOLUTION”的值
It will be like this
获得决议列表后。您必须将其显示为列表或选项给用户。
接下来是第二点。
如何让选择的分辨率在AVPlayer中播放。
AVPlayer 调用了一个选项首选峰值比特率 https://developer.apple.com/documentation/avfoundation/avplayeritem/1388541-preferredpeakbitrate
之后,我们必须根据我计算的这些值来设置比特率。
将其应用到当前玩家
open func setBitRate(_ definition: String) {
// 1. 240p = 700000
// 2. 360p = 1500000
// 3. 480p = 2000000
// 4. 720p = 4000000
// 5. 1080p = 6000000
// 6. 2k = 16000000
// 7. 4k = 45000000
var maxBitRate: Double = 0
switch definition {
case "240p":
maxBitRate = 700000
case "360p":
maxBitRate = 1500000
case "480p":
maxBitRate = 2000000
case "720p":
maxBitRate = 4000000
case "1080p":
maxBitRate = 6000000
case "2k":
maxBitRate = 16000000
case "4k":
maxBitRate = 45000000
case "Auto":
maxBitRate = 0
default:
maxBitRate = 0
}
player?.currentItem?.preferredPeakBitRate = maxBitRate
print("Playing in Bit Rate \(String(describing: player?.currentItem?.preferredPeakBitRate))")
}
虽然播放器需要一点时间来更新比特率,但它肯定会起作用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)