在 Swift 3 中创建具有自定义大小的 VideoPlayer
Posted
技术标签:
【中文标题】在 Swift 3 中创建具有自定义大小的 VideoPlayer【英文标题】:Create VideoPlayer With Custom Size in Swift 3 【发布时间】:2017-06-30 12:05:08 【问题描述】:我想以自定义大小显示 .mov 文件。我的控制器有一个 xib 文件。
顶视图是 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)
【问题讨论】:
在您的自定义UIView
中添加您的播放器layer
frame
。
@AnuragSharma 怎么办?
【参考方案1】:
如果您希望使用搜索栏和播放暂停按钮将本机播放器添加到您的视图中,请使用以下代码:
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()
这对我来说很完美,希望对你有用:)
【讨论】:
感谢您的回答,但仍然不适用于我,我正在更新我的问题图片以获得新结果 没有什么可以暂停或播放视频:| 我不知道它是否可行,但试试这个 avPlayerLayer.frame = videoView.layer.bounds 我在写视频播放器时仍有空白。开始视频没有任何内容以上是关于在 Swift 3 中创建具有自定义大小的 VideoPlayer的主要内容,如果未能解决你的问题,请参考以下文章
如何在 swift 3 中将具有自定义类的数组转换为 JSON