我正在使用AVPlayer流式传输以两种质量格式提供的音频内容。
问题是当从较低格式传递到较高格式时(当wi-fi可用时由框架自动完成),播放时会有延迟。
有没有办法手动选择所需的质量以防止延迟?
答案 0 :(得分:16)
现在可以在iOS8中使用。
在AVPlayerItem上结帐preferredPeakBitRate。
从Apple的文档中复制后:
此项目的网络带宽消耗的所需限制(以每秒位数为单位) SWIFT:var preferredPeakBitRate:双倍 目标-c:@property(非原子)double preferredPeakBitRate
将preferredPeakBitRate设置为非零,表示播放器应尝试将项目播放限制为该比特率,以每秒位数表示。
如果无法降低网络带宽消耗以满足preferredPeakBitRate,则在继续播放该项目时将尽可能减少它。
答案 1 :(得分:5)
更新:在您投票之前,请注意这是在iOS 4期间准确且接受的答案。对于更新的iOS 8答案,see here。
我已经为自己研究了这个问题,并且没有找到答案,这意味着我很肯定没有办法做到这一点。 Apple文档并不总是提供有关您可以对事物做什么的所有细节,但如果您查看所有可用的属性,方法等,您会发现没有任何东西可以让您调整流。
我认为这是HLS的重点。 Apple希望iPhone用户能够获得最佳的流媒体体验。如果他们给开发人员控制以调整正在使用的流,那么就会失败。在切换流时,系统最了解。如果手机无法处理额外的带宽,那么它将不会(或不应该)切换到更高的流。我发现你可能想看一些东西......
您的文件是否以10秒的增量分块?如果不止于此,您可能希望缩短它们。
某些文件转换程序无法完全正确地获得比特率,如果是这种情况,您的手机可能会认为它具有带宽,例如96 kbps馈送,但实际上您的馈送速率为115 kbps。请看一下这篇文章中接受的答案:iPhone - App Rejected again, HTTP Live Streaming 64kbps baseline feed
答案 2 :(得分:0)
使用Pantomime,是iOS,OSX和tvOS的轻量级框架,可以读取和解析HTTP Live Streaming清单。 Pantomime