본문 바로가기
ios 뽀개기/ios앱

17 ios 스위프트 동영상 재생 구현

by 인생여희 2017. 11. 28.
반응형



확실한건 비디오 키트를 이용해서 내부 영상 파일과 외부영상 파일을 재생할 수 있지만

유투브 영상의 url을 가져와서 재생을 할 수 없다. 

다른 api를 찾아봐야 한다.



//

//  ViewController.swift

//  MoviePlayer

//

//  Created by MacBookPro on 2017. 11. 28..

//  Copyright © 2017년 MacBookPro. All rights reserved.

//


import UIKit

import AVKit

import AVFoundation




class ViewController: UIViewController {


    override func viewDidLoad() {

        super.viewDidLoad()

        // Do any additional setup after loading the view, typically from a nib.

    }


    override func didReceiveMemoryWarning() {

        super.didReceiveMemoryWarning()

        // Dispose of any resources that can be recreated.

    }



    @IBAction func btnInternalMovie(_ sender: UIButton) {

        

        // 비디오 파일명을 사용하여 비디오가 저장된 앱 내부의 파일 경로를 받아온다.

        let filePath:String? = Bundle.main.path(forResource: "aaa", ofType: "mp4")

        

        //앱내부의 파일명을 nsurl형식으로 변경한다.

        let url = NSURL(fileURLWithPath: filePath!)

        

        playVideo(url: url)

        

    }

    

    //외부비디오재생버튼

    @IBAction func btnExternalMovie(_ sender: UIButton) {

        

        let url = NSURL(string: "https://youtu.be/HMQpNuO1SpM")!

        playVideo(url: url)

        

    }

    

    

    private func playVideo(url: NSURL){

        

        //avplayerViewController의 인스턴스를 생성한다.

        let playerController = AVPlayerViewController()

        

        //앞에서 얻은 비디오 url로 초기화된 avplayer의 인스턴스를 생성한다.

        let player = AVPlayer(url: url as URL)

        

        //AVPlayViewController의 player 속성에 위에서 생성한 avplayer인스턴스를 할당한다.

        playerController.player = player

        

        //비디오를 재생한다.

        self.present(playerController, animated:true){

            

            player.play()

        }

 

        



    }

}




















//위에 소스가 안될때는 아래걸로



import UIKit

import AVKit

import AVFoundation




class ViewController: UIViewController {


    override func viewDidLoad() {

        super.viewDidLoad()

        // Do any additional setup after loading the view, typically from a nib.

    }


    override func didReceiveMemoryWarning() {

        super.didReceiveMemoryWarning()

        // Dispose of any resources that can be recreated.

    }


    //내부영상 재생

    @IBAction func btnInternalMovie(_ sender: UIButton) {

        

        playLocalVideo()

        

    }

    

    //내부 비디오 재생 함수

    func playLocalVideo(){

        

        let filePath:String? = Bundle.main.path(forResource: "start", ofType: "mov")

        

        let url = NSURL(fileURLWithPath: filePath!)

        

        let player = AVPlayer(url: url as URL)

        

        let playerViewController = AVPlayerViewController()

       

        playerViewController.player = player

        

        //비디오를 재생한다.

        self.present(playerViewController, animated:true){

            

            player.play()

        }

    }

    



    

    let videoURL = "https://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4"

    

    //유튜브 주소는 안되네...

    //let videoURL = "https://youtu.be/Ra7Ein0YjDU"

    //외부 비디오 재생 함수

    func playExtravideo(){

        

        let url = NSURL(string: videoURL)!

        let player = AVPlayer(url: url as URL)

        

        let playerViewController = AVPlayerViewController()

        

        playerViewController.player = player

        

        //비디오를 재생한다.

        self.present(playerViewController, animated:true){

            

            player.play()

        }

        

    }

    

    //외부비디오재생버튼

    @IBAction func btnExternalMovie(_ sender: UIButton) {

        

        playExtravideo()

        

    }


}


















반응형

댓글