2017-06-30 2 views
0

je veux montrer fichier .mov dans un format personnalisé. J'ai un fichier xib pour mon contrôleur.Créer VideoPlayer Avec Taille personnalisée à Swift 3

enter image description here

des thats vue de dessus est sous-classe de UIView. Je veux montrer la vidéo dans cette vue. il y a mon code pour créer vue vidéo. mais il y a un problème de taille de mon lecteur vidéo. comment peut résoudre ce problème.

il est mon code:

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

Ajoutez votre lecteur 'layer'' frame' dans votre 'UIView' personnalisé. –

+0

@AnuragSharma Comment faire? – ava

Répondre

3

Si vous voulez un joueur natif à ajouter à votre point de vue avec la barre de recherche et de jouer le bouton de pause puis utilisez le code suivant:

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() 
    } 

et si vous voulez juste la vidéo à jouer dans votre vue avec AVPlayerLayer alors vous pouvez faire quelque chose comme ci-dessous:

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() 

    } 

Cela a fonctionné parfaitement pour moi, j'espère que cela fonctionne pour vous :)

+0

merci pour votre réponse, mais ne fonctionne toujours pas pour moi, je suis mise à jour l'image de ma question pour le nouveau résultat – ava

+0

il n'y a rien pour faire une pause ou lire la vidéo: | – ava

+0

Je ne sais pas si cela fonctionnerait, mais essayer avPlayerLayer.frame = videoView.layer.bounds –