我使用AVPlayer以兩種質量格式傳送音頻內容。在使用AVPlayer進行HTTP實況音頻流時,有沒有辦法選擇比特率?
問題是,當從較低格式傳遞到較高格式(當wi-fi可用時由框架自動完成)時,播放時會有延遲。
有沒有辦法手動選擇所需的質量,以防止延遲?
我使用AVPlayer以兩種質量格式傳送音頻內容。在使用AVPlayer進行HTTP實況音頻流時,有沒有辦法選擇比特率?
問題是,當從較低格式傳遞到較高格式(當wi-fi可用時由框架自動完成)時,播放時會有延遲。
有沒有辦法手動選擇所需的質量,以防止延遲?
更新:在您投票之前,請注意這是在iOS 4期間的準確和可接受的答案。對於更新的iOS 8答案,see here。
我已經爲自己研究過這個問題,還沒有找到答案,這意味着我非常積極,沒有辦法做到這一點。 Apple文檔並不總是詳細說明你可以對事物做些什麼,但如果你看看所有可用的屬性,方法等,你會發現沒有什麼可以讓你調整流。
我認爲這是HLS的重點。蘋果希望iPhone用戶擁有最佳的流媒體體驗。如果他們給開發人員一些控制來調整正在使用的流,那就會失去目的。系統知道何時切換流。如果手機無法處理額外的帶寬,那麼它不會(或不應該)切換到較高的數據流。有些事情,我發現你可能想看...
你的文件分成10秒的增量?如果這不僅僅是你想縮短它們。
某些文件轉換程序不能正確獲得比特率,如果是這種情況,您的手機可能會認爲它具有96 kbps的數據傳輸帶寬,但實際上您的數據傳輸速率爲115 kbps。看看在這篇文章中接受的答案:iPhone - App Rejected again, HTTP Live Streaming 64kbps baseline feed
現在可能在iOS8中。
在AVPlayerItem上籤出preferredPeakBitRate。
繼從蘋果公司的文件複製:
所需的極限,在比特每秒,網絡帶寬消耗爲這個項目。
SWIFT:VAR preferredPeakBitRate:雙
的Objective-C:@property(非原子)雙preferredPeakBitRate
設置preferredPeakBitRate爲非零,表明玩家應該嘗試項目的播放限制爲比特率,單位爲比特每秒。
如果無法降低網絡帶寬消耗以滿足preferredPeakBitRate,則會在繼續播放項目的同時儘可能減少網絡帶寬消耗。
@UwePlonus(和其他評論者:)這不是一個僅鏈接的答案。你有沒有注意到這個鏈接到實際的文檔? – Unihedron 2014-10-02 13:10:43
擴展答案後,我的意見不再有效,因此刪除。 – 2014-10-02 14:37:06
這些文件被精確切割成10秒,但傳輸格式爲mpegts,增加了一個小的開銷 - 我認爲我們將切換到mpeg。至於研究,我需要像我這樣搜索庫的人的意見;我感謝你的信息和鏈接。 – Spiri 2011-04-06 09:29:22
你可不可以使用幾個M3U8主文件,每個都有獨立的比特率? – Robert 2012-06-06 11:15:50
通過實現一個'NSURLProtocol',可以在任何時候以編程方式決定'AVPlayer'加載哪些數據。服務器也需要進行調整。雖然可能,但這並不容易。 – Berik 2014-04-23 15:47:34