【问题标题】:Is there a way to select the bit rate while using AVPlayer for HTTP live audio streaming?有没有办法在使用 AVPlayer 进行 HTTP 实时音频流时选择比特率?
【发布时间】:2011-07-16 16:46:00
【问题描述】:

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

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

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

【问题讨论】:

    标签: iphone objective-c streaming avplayer


    【解决方案1】:

    更新:在您对此投反对票之前,请注意这是在 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

    【讨论】:

    • 文件被精确地压缩成 10 秒的片段,但传输格式是 mpegts,这会增加一点开销——我想我们会切换到 mpeg。至于研究,我需要像我一样搜索库的人的意见;感谢您提供信息和链接。
    • 你能不能使用几个 M3U8 主文件,每个文件都有单独的比特率?
    • 可以通过实现NSURLProtocol,随时以编程方式决定AVPlayer 加载哪些数据。服务器也需要调整。虽然有可能,但绝非易事。
    【解决方案2】:

    现在在 iOS8 中是可能的。

    在 AVPlayerItem 上结帐 preferredPeakBitRate

    以下复制自 Apple 的文档:

    此项目所需的网络带宽消耗限制(以比特/秒为单位)。
    SWIFT: var preferredPeakBitRate: Double
    目标-C:@property(nonatomic) 双首选PeakBitRate

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2012-02-26
        • 2020-01-01
        • 2012-12-09
        • 1970-01-01
        • 2015-10-07
        • 1970-01-01
        • 2011-02-11
        • 2011-05-30
        • 1970-01-01
        相关资源
        最近更新 更多