iOS로 AV에 대한 Vol.2AVKit 애니메이션 재생

입문


이 글은 iOS가 AV 시리즈에 직면한 두 번째다.
지난번는 AVFoundation과 AVKit의 차이점을 소개했다.
이번에는 AVKit의 AVPlayerViewController를 이용하여 애니메이션을 재생하고 각종 필드와 방법을 검증하는 동작을 합니다.

이 시리즈의 종점


독자들을 위해 iOS를 입력하여 AV를 재생하고 제작하는 기초와 시작, 응용 프로그램의 개발을 난처하게 하지 않는 일을 목표로 한다.

전제 조건


  • 지난번 이전의 보도는 어느 정도
  • 본 보도의 종점

  • AVKit의 AVPlayerViewController 비디오 재생 가능
  • AVKit의 AVPlayerViewController에 대한 다양한 필드 및 방법에 대한 동작 파악
  • 미리 알다


    이번부터 우리는 AVFoundation과 AVKit 각급이 인터넷에 발표한 동영상을 방송할 것이다.
    인터넷에 동영상을 어떻게 게시하는지 미리 설명하다.

    네트워크 비디오 게시 방식


    인터넷에서 동영상을 발표하는 데는 두 가지가 있는데 그것이 바로 흐름식과 점진적이다.

    유동식 전송


    인터넷에서 애니메이션과 사운드 등을 다운로드하면서 순차적으로 재생하는 방식이다.
    서버에서 조금씩 영상과 음성 데이터를 보내고 수신 측면에서 동시에 재생합니다.
    장점은 네트워크에 대한 부담이 적고 다운로드 대기 시간이 적으며 다중 주파수 대역에서 애니메이션을 보내는 상황에서 통신 상황에 따라 주파수 대역을 바꾸면서 재생할 수 있다는 것이다.
    단점은 통신 속도에 따라 애니메이션이 중단되고 소리가 날아다니며 배신 측에 많은 설비와 구조가 필요하다는 것이다.

    차례차례


    인터넷에서 애니메이션을 다운로드한 후에 재생하는 방식이다.
    장점은 다운로드가 완료되면 네트워크 상황에 상관없이 재생을 완성할 수 있고 배포자는 전용 구조를 필요로 하지 않는다는 것이다.
    단점은 인터넷에 대한 부담이 커서 원칙적으로 다운로드가 끝나기 전에 애니메이션을 재생할 수 없다는 것이다.
    자세한 내용은 참고 문헌 등을 참조하십시오.
    그림과 같이 다음과 같다.

    본 기사에서 프로그램 동작 검증에 사용되는 애니메이션은 유동식 전송 형식의 하나인 HLS를 이용하여 보내는 애니메이션(Apple이 샘플로 보내는 물건이 됨)을 이용한다.
    https://devstreaming-cdn.apple.com/videos/streaming/examples/bipbop_16x9/bipbop_16x9_variant.m3u8
    

    AVPlayerViewController에서 비디오 재생


    이번에는 앞에서 말한 바와 같이 HLS 애니메이션을 재생하는 샘플을 만들어 보겠습니다.
    참고문헌의 샘플 코드는 이해하기 쉬우니 이것을 참고하세요.
    UIVIew 내에서 Button, TableView 또는 CollectionView의 Cell 등의 동작을 설정하고 다음 소스 코드를 추가하십시오.
            guard let url = URL(string: "http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8") else {
                return
            }
    
            // iOSでAVの情報を管理するためのモデルクラス
            // AVの参照先URL、作成日、尺の長さなどが取得できる
            let asset = AVAsset(url: url)
    
            // 動画の表示状態や状況を管理するためのモデルクラスを生成
            // 再生時間、再生状態(未定義・準備完了・エラー)、バッファリング済みの動画尺などの取得ができる
            let playerItem = AVPlayerItem(asset: asset)
    
            // AVの再生や停止、ミュートやアンミュート、ボリューム変更など各種AV操作を行うプレイヤークラス
            // AVPlayerは再生したいAVPlayerItemをセットして行う
            let player = AVPlayer(playerItem: playerItem)
    
            // AVPlayerViewControllerを生成する
            let controller = AVPlayerViewController()
            // AVPlayerViewControllerに予め生成しておいたAVPlayerをセットする
            controller.player = player
    
            // AVPlayerViewControllerに遷移する
            present(controller, animated: true) {
                // AVの再生を行う
                player.play()
            }
    
    이런 화면이 뜨면 애니메이션을 재생하기 시작하면 성공한다.

    프로그램에 대한 자세한 설명과 다양한 UI에 대한 설명은 다음 이후에 진행됩니다.

    참고 문헌


    유동식 전송  
    인터넷 영상 발표 방식: 무엇이 흐름식과 점진적인 다운로드입니까?  
    홈 페이지에서 사용되는 이미지 정보 (스트리밍 전송)  
    Streaming Examples  
    제가 OS 영상 재생 주변의 기초를 찾아봤어요.  

    좋은 웹페이지 즐겨찾기