ios - 想要从 avplayer 获取视频当前播放时间和视频总时间
问题描述
我正在实现AVPlayer
在我的应用程序中播放视频并且我完全播放视频现在我想要视频总时间和当前播放时间连续所以我尝试了一些方法让我告诉你
我尝试过使用NotificationCenter
,但为此我每次都得到 0.0,过了一段时间我崩溃了,让我给你看我的代码
这是我的视频播放代码
func videoPlay(){
player = AVPlayer(url: videoURL!)
let playerController = AVPlayerViewController()
playerController.player = player
self.addChild(playerController)
self.view.addSubview(playerController.view)
playerController.view.frame = CGRect(x: 0, y: 20, width: 375, height: 207)
player.play()
if player.rate != 0 && player.error == nil {
print("video player is playing.................")
NotificationCenter.default.addObserver(self,selector: #selector(gettime(_:)),name: nil,object: nil)
} else {
print("video player is NOT playing.")
}
}
在这里我试图从下面的视频中获取时间
@objc func gettime(_ notification: Notification){
let currentTime = Float(player.currentTime().value)
print(currentTime)
}
但我仍然没有得到当前的播放时间我正在崩溃并给出以下错误
错误
Thread 8: EXC_BAD_ACCESS (code=1, address=0xfffffffff7ac4eef)
解决方案
在您的视图中定义标签currentTimeLable
并使用此代码
let interval = CMTime(value: 1, timescale: 2)
player?.addPeriodicTimeObserver(forInterval: interval, queue: DispatchQueue.main, using: { (progressTime) in
let seconds = CMTimeGetSeconds(progressTime)
let secondString = String(format: "%02d", Int(seconds) % 60)
let minutString = String(format: "%02d", Int(seconds) / 60)
self.currentTimeLabel.text = "\(minutString):\(secondString)"
推荐阅读
- regex - 用python打开json文件时换行符
- android - 有没有办法在 Android 中使用 Proguard 来掩盖活动?
- java - 可以使用 X509EncodedKeySpec 在 java 中加载公钥,但无法使用 openssl 解析它
- visual-studio - 在团队服务的冲刺期间获得工作时间
- vb.net - IDbDataParameter - 定义 Oracle Clob
- angular - Angular 4为同一组件创建不同的语言路径路径
- javascript - 转换的钩子一旦被销毁并回调就会产生问题
- java - 迭代时抛出 IOException
- ios - 使用 fastlane,我如何将一组本地化屏幕截图路由到两个不同的应用商店
- python - 如何解析在python中实时编写的JSON文件?