2017-05-05 21 views
3

나는 AVQueuePlayer을 사용하는 AVPlayerLooper입니다. 비디오를 반복하는 것은 정말 쉽지만 1 초 동안에는 비디오가 흐려지기를 원했고 1 초 동안에는 사라집니다. 나는 불투명도를 적절하게 움직이는 AVPlayerLayerCABasicAnimation을 사용하여 페이드 인/페이드 아웃 할 수 있었지만 완벽하고 100 % 신뢰할 수는 없습니다. 나는 AVPlayerItemDidPlayToEndTimeAVPlayerItemTimeJumped에 대해 NotificationCenter을 사용해 보았습니다. 또한 키가 isReadyForDisplay 인 KVO를 사용해 보았습니다. 내가 addPeriodicTimeObserver을 시도했을 때, 페이드를 정확하게 맞추기에 충분할 정도로 정확한 사운드를 얻을 수 없었습니다. 나는 심지어 addBoundaryTimeObserver에 가려고했지만 그 정도면 충분하지도 않았습니다.AVPlayerLooper로 부드러운 페이드 인/아웃 전환을 추가하려면 어떻게합니까?

누구나 AVPlayerLooper/AVQueuePlayer에 크로스 페이드를 구현하는 방법에 대한 제안 사항이 있습니까?

답변

0

AVPlayerLooper은 항상 이상한 클래스로 나를 쳤습니다. 반복하지 않는 것이 더 직각이고 랩으로 사용하면 AVAssetTrack 또는 심지어 AVPlayerItem이됩니다. 예 :

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

어쨌든, 당신은 AVMutableComposition로 초기 페이드를 작성하여 대기열에, 당신은 이미 완료 한 AVPlayerLooper 루핑 버전을 대기열 수 있습니다.

페이드 아웃은 페이드 아웃을 큐에 넣을 수 있습니다. 페이드 아웃은 looper.disableLooping()으로 반복을 중지하면 재생됩니다. (사실, 어쩌면이 내 질문에 대한 대답 AVAssetTrack 또는 AVPlayerItemdisableLooping 이상한 것입니다).