簡體   English   中英

AVPlayer和AWS服務流

[英]AVPlayer and AWS Services Streaming

我正在嘗試從AWS S3存儲桶流式傳輸視頻。 我上傳了幾份具有“讓每個人都擁有”權限的文件。

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

在我的項目中,我啟動了一個AVPlayer,該AVPlayer從表視圖獲取路徑(就像iTunes一樣,但用於電影)。 每行的文件與在我的網絡瀏覽器中測試的文件相同: http : //distribution.cloudfront.net/movie1.mov for row1 distribution.cloudfront.net/movie2.mov for row2 ...

玩家沿路徑前進並開始游戲,但總是同時凍結。 我必須暫停或前進/后退才能繼續播放視頻。

因此,這似乎是一個緩沖問題。

我想知道我是否使用得當,以及如何解決緩沖區問題。

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

謝謝您的幫助。

問候

您是否在Cloudfront上設置了地理限制,以便它使用離您最近的區域中的服務器?

我的第一句話是在Web和RMTP之間。 您需要網絡,以便正確。

現在僅限法國使用,請再次測試您的視頻,看看它們的效果是否更好。

隨着使用范圍的擴大,您將希望允許其他區域。 請記住,不同地區的Cloudfront價格不同。 歐盟和美國一樣,但是其他地區的價格可能是其兩倍甚至更高。

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

流長視頻時,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
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM