我是一名新的iOS開發人員,我正在爲視頻共享網站開發視頻播放器應用程序,有時錄製內容包含兩個視頻流(一個顯示演示者,另一個顯示他的屏幕錄製)。我試圖用AVFoundation播放第二個視頻,創建一個AVPlayer。有些視頻效果很好,但有些視頻效果不佳。經過很多調查,我發現它試圖將整個視頻緩衝到內存中。AVPlayer(和MPMoviePlayerController)試圖緩衝整個(流媒體)視頻,耗盡內存
我花了數小時搜索它,但找不到任何東西。
我創建了一個小項目來證明這一點: github project。它爲兩個不同的視頻流設置兩個AVPlayer,並更新UI以顯示玩家的AVPlayerItem的loadedTimeRanges。對於第一個視頻,它只緩存〜60秒,這很好,但對於第二個視頻,它保持緩衝。
self.player1 = [AVPlayer playerWithURL:url1];
self.player2 = [AVPlayer playerWithURL:url2];
和兩個文本標籤:
self.data1.text = [NSString stringWithFormat:@"Player 1 loadedTimeRanges: %@",
self.player1.currentItem.loadedTimeRanges];
self.data2.text = [NSString stringWithFormat:@"Player 2 loadedTimeRanges: %@",
self.player2.currentItem.loadedTimeRanges];
也許這可能是重要的:過度緩衝的視頻沒有音軌,只是視頻。
UPDATE:我重現了使用MPMoviePlayerController而不是AVPlayer,並檢查playableDuration屬性的問題。第一部電影停在60秒左右,第二部電影繼續播放,然後耗盡內存。
UPDATE2:我得到了實際的視頻文件,並把它們放到Dropbox,並試圖流式傳輸那些:然後我沒有問題!它會緩衝整部電影,但不會耗盡內存。如果我從原始網站(我們的視頻共享網站)流式傳輸它,它只會耗盡內存。這些網址在github項目中。
我真的很期待任何提示可能會導致這種情況。
謝謝!
正如蘋果指南所建議的,不要使用漸進式下載更大的文件,而是使用正確的HTTP流。 – Till
Hi @Till!感謝您的評論!我不確定我是否理解,如果我應該更改應用程序以使用流媒體,或者服務器端不正常?我遇到的問題是:http://stream.videotorium.hu:1935/vtorium/_definst_/mp4:705/3705/3705_3571_content_hq.mp4/playlist.m3u8?sessionid = cp8dl757mvqukp0bsoflhd79s0_3705',如果我捲曲它,我收到一個m3u,其中包含另一個URL,如果我這樣做,我會得到一個包含數百個URL的m3u,如'media_1.ts?wowzasessionid = 530673462&sessionid = cp8dl757mvqukp0bsoflhd79s0_3705'。這是否意味着服務器端正在發送適當的流? – zsombornagy