有没有办法在使用AVPlayer进行HTTP直播音频流时选择比特率?

时间:2011-03-16 15:24:01

标签: iphone objective-c streaming avplayer

我正在使用AVPlayer流式传输以两种质量格式提供的音频内容。

问题是当从较低格式传递到较高格式时(当wi-fi可用时由框架自动完成),播放时会有延迟。

有没有办法手动选择所需的质量以防止延迟?

3 个答案:

答案 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