2017-05-05 42 views
3

我有一個AVPlayerLooper它使用AVQueuePlayer。循環播放視頻非常簡單,但我想在第一秒鐘內淡入視頻,並在最後一秒淡出。我已經能夠通過使用AVPlayerLayerCABasicAnimation來適當地使不透明度動態化,但我無法使其無縫並且100%可靠。我試過NotificationCenter用於AVPlayerItemDidPlayToEndTimeAVPlayerItemTimeJumped。我也試着用鑰匙isReadyForDisplay來使用KVO。當我嘗試addPeriodicTimeObserver時,我無法準確地確定淡化時間。我甚至試過addBoundaryTimeObserver,但那還不夠一致。如何向AVPlayerLooper添加平滑淡入/淡出轉換?

有沒有人有任何建議如何實現交叉淡入到AVPlayerLooper/AVQueuePlayer?

回答

0

AVPlayerLooper一直讓我覺得這是一個奇怪的類 - 不會循環更正交和有用的包裝AVAssetTrack甚至AVPlayerItem?例如

loop(AVAssetTrack) -> AVAssetTrack 
loop(AVPlayerItem) -> AVPlayerItem 

無論如何,你可以在創建初始褪色爲AVMutableComposition和隊列它,然後排隊,你已經做了AVPlayerLooper循環版本。

至於淡出,你可以排隊一個淡出,一旦你停止與looper.disableLooping()循環播放。 (實際上,也許這回答我的問題,如果AVAssetTrackAVPlayerItem上有disableLooping會很奇怪)。