不推荐使用MPMoviePlayerController,现在怎么办?

11 mpmovieplayercontroller ios avplayer swift

所以当MPMoviePlayerController被弃用时,我一直在寻找解决方案.我当前的代码工作正常:

moviePlayer = MPMoviePlayerController(contentURL: receivedURL)
    moviePlayer!.movieSourceType = MPMovieSourceType.Unknown
    moviePlayer!.view.frame = view.bounds
    moviePlayer!.scalingMode = MPMovieScalingMode.AspectFill
    moviePlayer!.controlStyle = MPMovieControlStyle.None
    moviePlayer!.shouldAutoplay = true

    view.addSubview((moviePlayer?.view)!)
    moviePlayer?.setFullscreen(true, animated: true)
    moviePlayer!.play()
Run Code Online (Sandbox Code Playgroud)

我录制了一个视频,一旦我完成录制,它将在新视图中使用上面的代码播放.但据我所知,MPMoviePlayerController在iOS9中已弃用,我找不到任何像上面代码一样的解决方案.我明白我需要用户AVPlayer和AVPlayerViewController.

我尝试了这个和许多其他类似的解决方案.但它不会像我在上面的代码中那样工作.

我只是想录制一个视频,并以新视图播放,就像Snapchat一样.

请帮我

添加附加信息:

因此,当我尝试使用(已接受的答案)或此解决方案(AVPlayer)进行修复时,视图为空白.没有任何显示.

var player:AVPlayer!
    let avPlayerLayer:AVPlayerLayer = AVPlayerLayer(player: player)
    avPlayerLayer.frame = CGRectMake(50,50,100,100)
    self.view.layer.addSublayer(avPlayerLayer)
    player = AVPlayer(URL: receivedURL)
    player.play()
Run Code Online (Sandbox Code Playgroud)

如果我尝试使用我必须修改的AVPlayerViewController:

let player = AVPlayer(URL: receivedURL)
    let playerViewController = AVPlayerViewController()
    playerViewController.player = player
    dispatch_async(dispatch_get_main_queue(), {
        self.presentViewController(playerViewController, animated: true) {
            playerViewController.player?.play()
        }
    })
Run Code Online (Sandbox Code Playgroud)

发生这种情况,没有显示任何内容. 在此输入图像描述

Olg*_*nko 7

var player:AVPlayer!
let avPlayerLayer:AVPlayerLayer = AVPlayerLayer(player: player)
avPlayerLayer.frame = CGRect(x:50,y:50,width:100,height:100)
self.view.layer.addSublayer(avPlayerLayer)
player = AVPlayer(url: receivedURL)
player.play()
Run Code Online (Sandbox Code Playgroud)

在这里,您将播放器添加到AVPlayerLayer后初始化.试试这样:

let player = AVPlayer(url: receivedURL)
let avPlayerLayer:AVPlayerLayer = AVPlayerLayer(player: player)
avPlayerLayer.frame = CGRect(x:50,y:50,width:100,height:100)
self.view.layer.addSublayer(avPlayerLayer)
player.play()
Run Code Online (Sandbox Code Playgroud)