iOS AVPlayerViewController 적용

MPMoviePlayerViewController 가 iOS 13 에서 공식적으로 deprecated 되면서
AVPlayerViewController로 변경이 필요 하게 되었다

AVPlayerViewController 기본 사용 코드


//플레이어 생성
@property (assign, nonatomic) AVPlayerViewController * playerController;

  self.playerController = [AVPlayerViewController new];

        self.playerController.showsPlaybackControls = NO; //기본 컨트롤러 안보이게
        self.playerController.player.actionAtItemEnd = AVPlayerActionAtItemEndPause;

//url 등록 후 
self.playerController.player = [[AVPlayer alloc] initWithURL:[NSURL fileURLWithPath:videoUrl]];

//영상이 끝난 후 호출을 받을 수 있게 노티 등록
//완료 처리 콜백 함수 videoFinished(여기서 후처리) 등록
[[NSNotificationCenter defaultCenter] addObserver:self
                                      selector:@selector(videoFinished:)
                                      name:AVPlayerItemDidPlayToEndTimeNotification
                                      object:self.playerController.player.currentItem];

[self.playerController.view setFrame:videoRect]; //비디오 사이즈 설정 
[self.view addSubview:self.playerController.view]; 

//play 
//resume
[self.playerController.player play];

//pause
[self.playerController.player pause];

//stop
/* MPMoviePlayerViewController의 경우에는 *stop 기능*을 이용하여서 *stop 종료 핸들러를 통해* 처리를 하고 있었다.
AVPlayerViewController의 경우 *stop* 같은 함수가 따로 제공 되어 있지 않다.
그래서 seekToTime 함수를 이용하여서 클릭시 stop 처리 함 */
[self.playerController.player seekToTime:CMTimeMake(sec, 1)]; // 종료 시간을 넣어주게 처리

//플레이어 해제시
//노티 삭제
[[NSNotificationCenter defaultCenter] removeObserver:self
                                      name:AVPlayerItemDidPlayToEndTimeNotification
                                      object:self.playerController.player.currentItem];

self.playerController.player.actionAtItemEnd
* 재생 완료 후 수행
* AVPlayerActionAtItemEndPause 재생 후 정지 되도록

노티 등록
* AVPlayerItemDidPlayToEndTimeNotification
* AVPlayer의 영상이 종료 되었을때 노티 받을 수 있는 핸들러

그리드형(광고전용)

이 글을 공유합시다

facebook twitter googleplus kakaoTalk kakaostory naver band

댓글

Designed by JB FACTORY