[英]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價格不同。 歐盟和美國一樣,但是其他地區的價格可能是其兩倍甚至更高。
流長視頻時,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.