2015-04-22 50 views
0

我試圖從AWS S3存儲桶中流式傳輸視頻。 我上傳了「爲所有人」權限的幾個fils。AVPlayer和AWS Services Streaming

我也創建了一個CloudFront分配(我只是選擇了我的存儲桶,並讓其他所有選項默認)。 在網絡瀏覽器中,我可以下載文件/閱讀地址http://distribution.cloudfront.net/movie1.mov

在我的項目中,我啓動了一個AVPlayer,它從一個tableview(如itune但是用於電影)中獲取路徑。 文件的每一行是一樣的在我的網頁瀏覽器進行測試: http://distribution.cloudfront.net/movie1.mov爲ROW1 distribution.cloudfront.net/movie2.mov爲2行...

玩家扮演很好的路徑,並開始播放,但它總是在同一時間凍結。我必須暫停或前進/後退才能繼續播放視頻。

所以它似乎是一個緩衝區問題。

我想知道我是否使用AWS Cloud Front以及如何解決緩衝區問題。

我沒有找到任何關於此的好教程或答案。

謝謝你的幫助。

問候

+1

的Cloudfront有分佈設置,如果該文件是爲「下載」或「流」的默認是下載。你可以驗證你是否轉換爲流媒體?您是否還在雲端設置了地理限制,以便使用距離您最近的服務器? –

+0

謝謝你的回答。 對於你的第一個問題:當我創建發行版時,我沒有選擇下載或流媒體。 或者也許這是Web和RMTP之間的選擇。 如果我選擇Web。 - >我必須換成RMTP? 我沒有受到地域限制。我在哪裏可以找到它? – Jojo

+0

我發現了地理限制,並僅爲法國(現在)設置了它。所以如果我想擴大我的申請到歐盟或美國,我必須增加更多的國家。而已 ? – Jojo

回答

0

你設置CloudFront的地理限制,以便它使用的服務器在離你最近的區域?

我的意思是在我的第一條評論中,網絡和RMTP之間。你想要網頁是正確的。

現在,它只限於法國,再次測試您的視頻,看看他們的表現是否更好。

隨着用途的擴展,您將需要允許其他區域。請記住,不同地區的雲端價格不同。歐盟和美國是相同的,但其他地區可能是兩倍或更多。

http://aws.amazon.com/cloudfront/pricing/

+0

謝謝你的細節。 我與限制測試,但是影片幾秒鐘後:(仍然凍結 選擇RMTP不會幫助 – Jojo

+0

我也試圖打開鏈接: http://distribution.cloudfront.net/movie1.mov 在vlc中,但它仍然緩慢並在同一時間凍結。任何想法? – Jojo

+0

它在你的本地計算機上的VLC中也失敗了嗎?你確定文件沒有被損壞嗎?嘗試把文件放到你的常規web服務器上s3)並觀看電影的方式進行測試 –

0

而流長視頻AVPlayer可以熄火。

您需要的鑰匙登記觀察家playbackBufferEmpty和playbackLikelyToKeepUp

[playerItem addObserver:self forKeyPath:@"playbackBufferEmpty" options:NSKeyValueObservingOptionNew context:nil]; 
[playerItem addObserver:self forKeyPath:@"playbackLikelyToKeepUp" options:NSKeyValueObservingOptionNew context:nil]; 

上。然後,

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object 
         change:(NSDictionary *)change context:(void *)context { 
    if (!player) { 
     return; 
    } 

    else if (object == playerItem && [keyPath isEqualToString:@"playbackBufferEmpty"]) { 
     if (playerItem.playbackBufferEmpty) { 
      //Other relevant code here, like adding spinner 
     } 
    } 

    else if (object == playerItem && [keyPath isEqualToString:@"playbackLikelyToKeepUp"]) { 
     if (playerItem.playbackLikelyToKeepUp) { 
      [player play]; 
      //Other relevant code here, like removing spinner 
     } 
    } 
} 
+0

它已經實現爲我從這裏使用的播放器: https://github.com/piemonte/Player 但它始終定格在同一時間 任何其他的想法 – Jojo

+0

然後我不認爲這是?與應用程序端部分有關。 – Xcoder