如何在UIView swift中播放视频?

Azi*_*chi 7 ios avplayer swift

我有一个要从服务器下载并以固定视图流式播放的视频。我在情节提要中设置了具有固定约束的UIView,这是我在代码中所做的事情:

@IBOutlet weak var videoView: UIView!
var player: AVPlayer!
var avpController = AVPlayerViewController()
Run Code Online (Sandbox Code Playgroud)

在我这里,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
Run Code Online (Sandbox Code Playgroud)

我的问题是我的视频大小不符合我设置的大小,videoView 并且在每个设备中我的视频大小都不一样。在某些设备中,视频高度大于我设置的高度,并且覆盖了我下面的项目videoView。如何以正确的方式在视图中播放视频?

小智 10

如果要使用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()
}
Run Code Online (Sandbox Code Playgroud)

对于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()
Run Code Online (Sandbox Code Playgroud)


小智 8

您可以尝试AVPlayerLayerAVPlayer.

      let player = AVPlayer(url: video) // your video url
      let playerLayer = AVPlayerLayer(player: player)
      playerLayer.frame = videoView.bounds
      videoView.layer.addSublayer(playerLayer)
      player.play()
Run Code Online (Sandbox Code Playgroud)


Azi*_*chi 6

将视频添加到故事板中具有固定约束的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)
Run Code Online (Sandbox Code Playgroud)

希望其他人可以使用!:)