サーバーからダウンロードして固定ビューでストリーミングしたいビデオがあります。固定された制約を使用してストーリーボードにUIViewを設定しましたが、コードで行ったことは次のとおりです。
@IBOutlet weak var videoView: UIView!
var player: AVPlayer!
var avpController = AVPlayerViewController()
そして、私のviewDidLoad
でこれをやった:
let url = URL(string:myURL)
player = AVPlayer(url: url!)
avpController.player = player
avpController.videoGravity = AVLayerVideoGravity.resizeAspect.rawValue
self.addChildViewController(avpController)
avpController.view.frame = videoView.frame
self.containerView.addSubview(avpController.view)
videoView.layer.masksToBounds = true
私の問題は、ビデオがvideoView
に設定したサイズではなく、すべてのデバイスでビデオのサイズが異なることです。一部のデバイスでは、ビデオの高さが設定した高さより大きく、videoView
未満のアイテムにオーバーレイします。ビューでビデオを正しい方法で再生するにはどうすればよいですか?
ストーリーボードの固定された制約を使用してビデオをUIViewに追加する唯一の方法は次のとおりです。
let url = URL(string:myURL)
player = AVPlayer(url: url!)
avpController.player = player
avpController.view.frame.size.height = videoView.frame.size.height
avpController.view.frame.size.width = videoView.frame.size.width
self.videoView.addSubview(avpController.view)
他の人がこれを使用できることを願っています! :)
AVPlayerViewControllerを使用する場合:
let videoURL = URL(string: "https://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4")
let player = AVPlayer(url: videoURL!)
let playerViewController = AVPlayerViewController()
playerViewController.player = player
self.present(playerViewController, animated: true) {
playerViewController.player!.play()
}
AVPlayerの場合:
let videoURL = URL(string: "https://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4")
let player = AVPlayer(url: videoURL!)
let playerLayer = AVPlayerLayer(player: player)
playerLayer.frame = self.view.bounds
self.view.layer.addSublayer(playerLayer)
player.play()
AVPlayerLayer
でAVPlayer
を使用してみてください。
let player = AVPlayer(url: video) // your video url
let playerLayer = AVPlayerLayer(player: player)
playerLayer.frame = videoView.bounds
videoView.layer.addSublayer(playerLayer)
player.play()