我有一个自定义相机,可以录制视频和拍照。问题是在录制并通过录制的视频预览推送viewController后,视频在几秒钟后停止播放。因此流程为:
- 打开自定义相机;
- 我已经录制了视频;
- 显示带有录制的视频预览的控制器。 (通过pushViewController(controller,animation:true));
- 视频开始播放;
- 由于某种原因,N秒(1-2秒)后视频停止。
代码:
if let error = error {
// handle error
return
}
if let currentBackgroundRecordingID = backgroundRecordingID {
backgroundRecordingID = UIBackgroundTaskIdentifier.invalid
if currentBackgroundRecordingID != UIBackgroundTaskIdentifier.invalid {
UIApplication.shared.endBackgroundTask(currentBackgroundRecordingID)
}
}
// open viewController and play recently recorded video from temporary files.
let player = AVPlayer(url: url)
player.actionAtItemEnd = .none
let playerLayer = AVPlayerLayer(player: player)
playerLayer.frame = self.view.frame
playerLayer.videoGravity = .resizeAspectFill
self.view.layer.insertSublayer(playerLayer, at: 0)
player.seek(to: .zero)
player.play()
let vc = TestController()
vc.url = url!
self.navigationController?.pushViewController(vc, animated: true)
注:一件奇怪的事情,如果我将pushViewController与animation:一起使用,则播放器将播放完整的视频,而如果对animation:true进行播放,则视频将在几秒钟后停止播放。另外,当前的视图控制器也可以正常工作。
注2:如果我使用DispatchQueue延迟了0.5秒调用setupVideoBackground(),视频将不会停止。
我不明白,为什么视频在pushViewController(vc, animated: false)
之后正确播放而在pushViewController(vc, animated: true)
之后停止播放?>
我有一个自定义相机,可以录制视频和拍照。问题是在录制并通过录制的视频预览推送viewController后,视频在几秒钟后停止播放。因此...
解决方案1: