Project 16 - VideoSplashView

DaY·2021년 4월 28일
1

iOS

목록 보기
38/52
post-thumbnail

Video를 삽입하기 위해서는 새로운 VideoSplashViewController를 생성하여 메인 ViewController에서 사용할 수 있도록 해야한다.

라이브러리

  • MediaPlayer
  • AVKit

MediaPlayer

MusicKit의 일부인 Media Player 프레임 워크를 사용하여 앱에서 사용자 미디어 재생을 제어한다.
앱에 음악이 포함 된 경우이 해당 콘텐츠를 직접 재생하거나 시스템 음악 앱에 재생을 요청할 수 있다.

AVKit

AVKit는 video와 상호작용 하기위해 제공된 모든 필요한 UI와 AVFoundation의 상위에 위치한다.
AVKit을 사용하면 플랫폼의 기본 재생 환경과 일치하는 어플용 플레이어 인터페이스를 쉽게 제공할 수 있다.

AVPlayer

먼저, url 속성을 가지는 비디오 객체를 생성한다.

self.moviePlayer.player = AVPlayer(url: url)

AVPlayer는 비디오 플레이의 중심으로, 비디오 시작과 정지, 재생속도 변경, 볼륨 조정 등의 기능을 제공한다.

AVPlayerViewController

private let moviePlayer = AVPlayerViewController()
self.moviePlayer.player?.play()

AVPlayerViewController는 player 객체가 필요한 뷰 컨드롤러이다.
비디오를 시작하기 위해 play() 호출이 필요하다.

볼륨 조정

open var sound: Bool = true {
    didSet {
        if sound {
            moviePlayerSoundLevel = 1.0
        } else {
            moviePlayerSoundLevel = 0.0
        }
    }
}

반복 설정

open var alwaysRepeat: Bool = true {
    didSet {
        if alwaysRepeat {
            NotificationCenter.default.addObserver(self, selector: #selector(VideoSplashViewController.playerItemDidReachEnd), name: NSNotification.Name.AVPlayerItemDidPlayToEndTime, object: moviePlayer.player?.currentItem)
        }
    }
}

영상 크기 설정

open var fillMode: ScalingMode = .resizeAspectFill {
    didSet {
        switch fillMode {
        case .resize:
            moviePlayer.videoGravity = convertToAVLayerVideoGravity(AVLayerVideoGravity.resize.rawValue)
        case .resizeAspect:
            moviePlayer.videoGravity = convertToAVLayerVideoGravity(AVLayerVideoGravity.resizeAspect.rawValue)
        case .resizeAspectFill:
            moviePlayer.videoGravity = convertToAVLayerVideoGravity(AVLayerVideoGravity.resizeAspectFill.rawValue)
        }
    }
}

투명도 설정

open var alpha: CGFloat = CGFloat() {
    didSet {
        moviePlayer.view.alpha = alpha
    }
}

0개의 댓글