这是我的代码设置一个简单的相机应用程序
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
let deviceSession = AVCaptureDeviceDiscoverySession(deviceTypes: [.builtInDualCamera, .builtInTelephotoCamera, .builtInWideAngleCamera], mediaType: AVMediaTypeVideo, position: .unspecified)
for device in (deviceSession?.devices)!{
if device.position == AVCaptureDevicePosition.front {
do {
currentDevice = device
let input = try AVCaptureDeviceInput(device: device)
if captureSession.canAddInput(input){
captureSession.addInput(input)
if captureSession.canAddOutput(photoOutput){
captureSession.addOutput(photoOutput)
}
if captureSession.canAddOutput(videoOutput){
captureSession.addOutput(videoOutput)
videoOutput.connection(withMediaType: AVMediaTypeVideo).isVideoMirrored = true
}
previewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
previewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill
previewLayer.connection.videoOrientation = .portrait //Change orientation
cameraView.layer.addSublayer(previewLayer)
cameraView.addSubview(takePictureButton)
cameraView.addSubview(takeVideoButton)
cameraView.addSubview(saveVideoButton)
previewLayer.position = CGPoint(x: self.view.center.x, y: self.view.center.y)
previewLayer.bounds = CGRect(x: 100, …Run Code Online (Sandbox Code Playgroud) 我正在AVPlayerViewControlleriPad-App上播放视频文件(H.264,AAC,MP4-Container).一切都在iOS 10中运行.而且在iOS 11中它正确播放视频.
但是在iOS 11中,当我开始向任何方向滑动时,它会立即使视频变黑并使音频静音.它还显示底部时间轴旁边的加载指示器.
它也忽略了allowsPictureInPicturePlayback属性,因此它不会在iOS 11上显示PIP-Button.
这是我使用的代码:
avPlayerController = AVPlayerViewController()
avPlayerController?.showsPlaybackControls = true
avPlayerController?.allowsPictureInPicturePlayback = true
avPlayerController?.player = AVPlayer(url: videoUrl as URL)
avPlayerController?.player?.play()
self.present(self.avPlayerController!, animated: true, completion: nil)
avPlayerController?.player?.actionAtItemEnd = AVPlayerActionAtItemEnd.none
NotificationCenter.default.addObserver(self, selector: #selector(onVideoCompleted), name: NSNotification.Name.AVPlayerItemDidPlayToEndTime, object: self.avPlayerController!.player?.currentItem)
Run Code Online (Sandbox Code Playgroud)
此功能可在视频结束时关闭视频播放器:
func onVideoCompleted(notification:Notification) {
self.avPlayerController?.player = nil
self.avPlayerController?.dismiss(animated: true, completion: nil)
}
Run Code Online (Sandbox Code Playgroud)
当屏幕黑屏时,我在控制台中看到了这个:
AVOutputDeviceDiscoverySession (FigRouteDiscoverer)
>>>> -[AVFigRouteDiscovererOutputDeviceDiscoverySessionImpl
outputDeviceDiscoverySessionDidChangeDiscoveryMode:]: Setting device discovery
mode to DiscoveryMode_Presence (client: MyAppName)
Run Code Online (Sandbox Code Playgroud)