11

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

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

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

4

3 回答 3

21

现在在 iOS8 中是可能的。

在 AVPlayerItem 上查看preferredPeakBitRate 。

以下是从 Apple 的文档中复制的:

此项目所需的网络带宽消耗限制(以每秒位数为单位)。
SWIFT: var preferredPeakBitRate: Double
OBJECTIVE-C: @property(nonatomic) double preferredPeakBitRate

将preferredPeakBitRate 设置为非零表示播放器应尝试将项目播放限制为该比特率,以每秒比特数表示。

如果无法降低网络带宽消耗以满足preferredPeakBitRate,则在继续播放该项目的同时尽可能降低。

于 2014-10-02T12:15:23.677 回答
6

更新:在您对此投反对票之前,请注意这是在 iOS 4 期间准确且被接受的答案。有关更新的 iOS 8 答案,请参阅此处


我已经为自己研究了这个问题,但没有找到答案,这意味着我很肯定没有办法做到这一点。Apple 文档并不总是提供有关您可以对事物做什么的所有详细信息,但是如果您查看所有可用的属性、方法等,您会发现没有任何东西可以让您调整流。

我认为这是 HLS 的重点。Apple 希望 iPhone 用户能够获得最佳的流媒体体验。如果他们为开发人员提供了调整正在使用哪个流的控件,那么就达不到目的了。当涉及到切换流时,系统最清楚。如果手机无法处理额外的带宽,那么它不会(或不应该)切换到更高的流。我发现的一些东西你可能想看看……

您的文件是否以 10 秒为增量进行分块?如果不止于此,您可能需要缩短它们。

某些文件转换程序无法获得完全正确的比特率,如果是这种情况,您的手机可能会认为它具有 96 kbps 提要的带宽,但实际上您的提要是 115 kbps。看看这篇文章中接受的答案:iPhone - App Rejected again, HTTP Live Streaming 64kbps baseline feed

于 2011-03-31T12:39:14.933 回答
1

Use Pantomime,是一个适用于 iOS、OSX 和 tvOS 的轻量级框架,可以读取和解析 HTTP Live Streaming 清单。 哑剧

于 2018-05-07T04:45:47.597 回答