[英]Pre-load an AVPlayer streaming video
我正在嘗試使用AVPlayer播放流媒體視頻而沒有任何網絡延遲。 幸運的是,我們的應用程序在播放視頻的屏幕之前有一個進度屏幕。 我希望在這個進度屏幕上使用一些時間來預加載視頻,以便在下一個屏幕上無延遲地播放。
我提出的最有前途的方法是使用AVQueuePlayer播放2個視頻,第一個是我在屏幕上播放的視頻(所以你看不到它)並且是靜音的,所以你不要聽到。 從我在SO AVQueuePlayer上看到的內容,當第n個視頻接近完成時,緩沖第n + 1個視頻。
這是我的代碼:
NSString *blackVideoPath = [[NSBundle mainBundle] pathForResource:@"black10-counting" ofType:@"MOV"];
AVPlayerItem *blackVideoItem = [AVPlayerItem playerItemWithURL:[NSURL fileURLWithPath:blackVideoPath]];
AVPlayerItem *realVideoItem = [AVPlayerItem playerItemWithURL:_videoWithEffectsURL];
NSArray *theItems = [NSArray arrayWithObjects:blackVideoItem, realVideoItem, nil];
AVQueuePlayer *theQueuePlayer = [AVQueuePlayer queuePlayerWithItems:theItems];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(playerItemDidReachEnd:)
name:AVPlayerItemDidPlayToEndTimeNotification
object:[theItems firstObject]];
AVPlayerLayer* playerLayer = [AVPlayerLayer playerLayerWithPlayer:theQueuePlayer];
playerLayer.frame = self.view.bounds;
[self.view.layer addSublayer:playerLayer];
[theQueuePlayer play];
這確實播放了我的第一個視頻(用於調試我有一個帶有計數音軌的視頻)但是當到達結尾並前進到下一個屏幕(在playerItemDidReachEnd中)時,我的真實視頻不能立即播放。
為了確保我的網址是正確的,我在列表中顛倒了blackVideoItem和realVideoItem,我確實聽到了我的“真實”視頻的配樂。
我搜索了很多,似乎沒有辦法播放流媒體視頻沒有延遲。 我愛是錯的。
您可以在沒有AVQueuePlayer的情況下執行此操作。
根據網絡連接的不同,您可能無法在整個過程中體驗流暢的播放,但監控播放器項目應該讓您在播放器緩沖時顯示一些UI。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.