2017-06-30 11 views
0

.movファイルをカスタムサイズで表示したい。私は自分のコントローラ用のxibファイルを持っています。上面図厥SwiftでカスタムサイズのVideoPlayerを作成する3

enter image description here

のUIViewのサブクラスです。私はこのビューでビデオを見せたい。 ビデオビューを作成するためのコードがあります。ビデオプレーヤーのサイズに問題があります。どのようにこの問題を解決することができます。

私のコードがある:

private func playVideo() { 
    guard let path = Bundle.main.path(forResource: "video_2017-06-30_15-49-05", ofType:"mov") else { 
     debugPrint("video.m4v not found") 
     return 
    } 
    let player = AVPlayer(url: URL(fileURLWithPath: path)) 
    let playerController = AVPlayerViewController() 
    playerController.player = player 

    let avPlayerLayer = AVPlayerLayer(player: player) 
    avPlayerLayer.frame = videoView.layer.frame 
    videoView.layer.insertSublayer(avPlayerLayer, at: 0) 


    } 
+0

あなたのカスタムUIViewにプレーヤの 'layer'' frame'を追加してください。 –

+0

@AnuragSharmaどうすればいいですか? – ava

答えて

3

あなたはネイティブのプレイヤーがシークバーを使用してビューに追加したいと一時停止ボタンを再生する場合は、次のコードを使用し

private func playVideo() { 
     guard let path = Bundle.main.path(forResource: "SampleVideo", ofType:"mp4") else { 
      debugPrint("video.m4v not found") 
      return 
     } 
     let player = AVPlayer(url: URL(fileURLWithPath: path)) 
     let playerController = AVPlayerViewController() 
     playerController.player = player 
     playerController.view.frame = videoView.bounds 
     videoView.addSubview(playerController.view) 
     player.play() 
    } 

と場合をあなたはAVPlayerLayerであなたのビューでビデオを再生するだけで、次のようなことができます:

var player : AVPlayer! 
    var avPlayerLayer : AVPlayerLayer! 
    @IBOutlet weak var videoView: UIView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 


     guard let path = Bundle.main.path(forResource: "SampleVideo", ofType:"mp4") else { 
      debugPrint("video.m4v not found") 
      return 
     } 
     player = AVPlayer(url: URL(fileURLWithPath: path)) 
     avPlayerLayer = AVPlayerLayer(player: player) 
     avPlayerLayer.videoGravity = AVLayerVideoGravity.resize 

     videoView.layer.addSublayer(avPlayerLayer) 
     playVideo() 


    } 

    override func viewDidLayoutSubviews() { 

     avPlayerLayer.frame = videoView.layer.bounds 
    } 

    private func playVideo() { 
     player.play() 

    } 

これは私にとって完璧に働いてくれました。それはあなたのためにうまくいきたいと思っています:)

+0

あなたの答えに感謝しますが、まだ私のために働いていない、私は新しい結果のために私の質問画像を更新しています – ava

+0

一時停止または再生ビデオのための何もありません: – ava

+0

動作するかどうかわかりませんが、これを試してください avPlayerLayer.frame = videoView.layer.bounds –

関連する問題