개인공부

동영상 실습 (AVKit)

h_luz 2024. 5. 6. 22:37

 

iOS 앱 개발 심화 (실습)
스파르타 코딩 클럽

 

import AVKit

: AudioVisual ( 소리와 시각적 요소를 모두 처리하는 전자 매체 )를 사용하기 위한 기본적 사용자 인터페이스

 

URL

: URL은 특정 리소스의 위치를 나타냄 ( 보통 String을 통해서 접근 && 한글이나 공백 포함 시 리턴 값이 nil )

let url = URL(string : "url 주소")!

 

playerButton = 눌렀을 때 동영상을 띄우기 위해 뷰에 생성될 버튼이다.

url = 띄울 동영상의 url

playerController = 동영상플레이어의 컨트롤러 인스턴스 생성 (AVPlayerViewController)

player = 동영상 인스턴스 생성 (AVPlayer)

    ㄴ AVPlayer?로 선언하여 Optional로 만든 것은 URL이 유효하지 않은 경우에도 AVPlayer가 nil이 될 수 있게 하기 위함이다.
        ( URL이 nil이거나 잘못된 경우에는 player가 nil이 되어 안전하게 처리 가능)

 

버튼 클릭 시, player를 옵셔널 바인딩으로 풀어주고, player에 url 동영상을 playerController에 재생하도록 설정한다.

present()를 사용하여 동영상 플레이어를 모달로 표시하고, 동영상을 play 함.

setupConstraints에서는 버튼을 센터로 오토레이아웃을 잡아줌 !

 

viewDidLoad()에 setupConstraints()와 configureUI() 호출도 잊으면 안 됨...!

 

코드로 버튼 사용 법!

@objc func 버튼함수이름() { //버튼 실행 시 동작할 것 }

이렇게 입력해 주고

버튼변수.addTarget(self, action: #selector(버튼함수이름), for: .touchUpInside)

이렇게 함수를 버튼에 연결해 줘서 사용함!

 

 

더보기

//전체코드

import UIKit

import SnapKit

import AVKit

 

class ViewController: UIViewController {

 

    let playerButton = UIButton(type: .system)

    

    let url = URL(string: "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4")!

    

    let playerController = AVPlayerViewController()

    

    var player: AVPlayer?

 

    override func viewDidLoad() {

        super.viewDidLoad()

        configureUI()

        setupConstraints()

    }

    

    @objc func playButtonTapped() {

        guard let player = player else { return }

        

        playerController.player = player

        

        present(playerController, animated: true) {

            player.play()

        }

    }

    

    func setupConstraints() {

        view.addSubview(playerButton)

        

        playerButton.snp.makeConstraints {

            $0.center.equalToSuperview()

        }

    }

    

    func configureUI() {

        playerButton.setTitle("Play Video", for: .normal)

        playerButton.addTarget(self, action: #selector(playButtonTapped), for: .touchUpInside)

        

        // Initialize AVPlayer after configuring UI

        player = AVPlayer(url: url)

    }

}