ios - 如何将本地视频嵌入到 iOS 12 中的 UIView
问题描述
我用来在 UIView 中嵌入本地视频的代码在 IOS 12 上不起作用。音频正在播放,但出现黑屏。
来自苹果开发者网站:
不要继承 AVPlayerViewController。不支持覆盖此类的方法,并导致未定义的行为。
该代码在 IOS 11 上运行良好,知道我需要在代码中更改什么吗?
谢谢
import UIKit
import AVFoundation
import AVKit
class ViewController: UIViewController {
var avPlayer: AVPlayer!
override func viewDidLoad() {
super.viewDidLoad()
let filepath: String? = Bundle.main.path(forResource: "qidong", ofType: "mp4")
let fileURL = URL.init(fileURLWithPath: filepath!)
avPlayer = AVPlayer(url: fileURL)
let avPlayerController = AVPlayerViewController()
avPlayerController.player = avPlayer
avPlayerController.view.frame = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.size.width, height: UIScreen.main.bounds.size.height)
avPlayerController.showsPlaybackControls = false
avPlayerController.player?.play()
self.view.addSubview(avPlayerController.view)
}
}
解决方案
您需要将其添加AVPlayerViewController
为子视图控制器,如下所示:
import UIKit
import AVFoundation
import AVKit
class ViewController: UIViewController {
var avPlayer: AVPlayer!
override func viewDidLoad() {
super.viewDidLoad()
let filepath: String? = Bundle.main.path(forResource: "qidong", ofType: "mp4")
let fileURL = URL.init(fileURLWithPath: filepath!)
avPlayer = AVPlayer(url: fileURL)
let avPlayerController = AVPlayerViewController()
avPlayerController.player = avPlayer
avPlayerController.view.frame = CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: self.view.frame.size.height)
avPlayerController.showsPlaybackControls = false
avPlayerController.player?.play()
self.addChild(avPlayerController)
self.view.addSubview(avPlayerController.view)
avPlayerController.didMove(toParent: self)
}
如果您不这样做,那么AVPlayerViewController
可能会提前发布。
另一个小问题,但不要使用UIScreen
视图控制器视图的框架的大小(或者甚至更好地执行诸如使用自动布局之类的操作)。
推荐阅读
- ios - Flutter pod安装错误与ios上的firebase消息传递
- python - Is there a thing in discord.py similar to streamTIme in discord.js?
- sql - 使用 where exists 而不是 join 在 DB2 中更新
- python - 如何解决 python pandas 编码问题?
- c# - C# 自定义 ValidationAttribute 使用数据库中的查找表
- php - 添加到购物车 woocommerce 后如何更新/运行自定义功能
- python - 向熊猫数据框添加排名列时发出警告
- c++ - 使用 mingw 和 fltk 库的“未定义引用”
- azure - Terraform 上的 Azure 应用服务自动缩放错误
- sql-server - 如果日在月中,则返回 1