티스토리 뷰

2020/10/12 - [개발/iOS] - AVPlayer클래스 살펴보기

2020/10/12 - [개발/iOS] - AVPlayer에서 플레이어 상태 파악하기

 

AVPlayer는 미디어 재생과 타임을 관리할 수 있는 컨트롤러이다.

이번에 AVPlayer를 사용해 개발하다가 하루 종일 끙끙거린 문제가 있었다.

먼저 AVAsset으로 모델링한 것으로 AVPlayerItem을 만들어 플레이어에 넣어주었다. 

그리고 플레이어를 재생시키면 잘 재생되는 것 까지 확인 완료.

 

문제는 여기다.

 

잘 재생되다가 오디오 인터럽트가 지속될시에 현재 재생하고 있는 미디어가 노출되지 않는 현상이 발생했다.

(카메라 앱에서 동영상을 오래동안 찍고 있거나 슬립 상태에 진입)

애플에서 자체적으로 비디오 렌더링을 못하게 막는 것 같았음.

하지만 오디오 인터럽트가 지속되어도 다시 돌아왔을 때 유저가 resume을 하면 다시 재생이 되어야 하니 수정이 필요했다.

 

현재 플레이어의 status와 rate를 옵저빙하고 있는 상황이었고 

다시 재생시켜야 하는 타이밍을 잡기 위해 status와 rate와 비디오 렌더링이 나오지 않는 시점 이렇게 3가지 조합해서

동일한 URL로 모델링하여 동일한 플레이어에 replaceCurrentItem을 시켜줬다.

developer.apple.com/documentation/avfoundation/avplayer/1390806-replacecurrentitemwithplayeritem?language=objc

(replaceCurrentItem은 현재 플레이어 아이템을 새로운 플레이어 아이템으로 교체시키는 메서드이다.)

오디오 인터럽트가 지속되어 렌더링이 종료되어도 replaceCurrentItem을 통해 다시 재생할 수 있도록 수정했다.

 

또한 플레이어를 리셋시키고 종료해야하는 시점에는 replaceCurrentItem에 nil을 넣어주도록 하여 

currentItem이 데이터를 더 이상 불러오지 못하도록 했다.

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/06   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
글 보관함