我希望在用户播放视频并进入后台模式(使用HLS流)时减少我的应用消耗的带宽。我希望音频仍然可以播放,但似乎AVPlayer不断下载视频片段,即使它们不需要(用户无论如何也看不到任何东西)。
理论上,当应用进入后台模式时,我可能会有一个比特率非常低的视频(例如黑屏)并设置player.currentItem.preferredPeakBitRate = 1
,但我不知道如何阻止该应用从背景中下载大量黑色视频片段,以便当用户返回时,他/她长时间获得黑屏。另外,如果用户连接不良,我不清楚如何防止黑屏显示在前台模式?
我还尝试通过AVURLAsset的- (AVMediaSelectionGroup *)mediaSelectionGroupForMediaCharacteristic:(NSString *)mediaCharacteristic
禁用视频。我可以为音频做这个,但不能用于视频,因为该方法为参数AVMediaCharacteristicVisual
返回nil。是否可以在我的HLS清单中更改以启用此功能?
答案 0 :(得分:0)
处理此问题的最佳方法是通过清单使用传入的音频配置文件,而不是在客户端端为此做很多事情。这是因为仅音频配置文件的比特率将低于音频+视频配置文件,如果您要检查条件 - 如果显示的比特率低于清单所具有的最小音频+视频配置文件,它将自动切换到音频配置文件这个需要。
您还需要添加 AVPlayerItemNewAccessLogEntry 的观察者。