不推荐使用MPMoviePlayerController,现在怎么办? [英] MPMoviePlayerController deprecated, what now?

查看:456
本文介绍了不推荐使用MPMoviePlayerController,现在怎么办?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

  moviePlayer = MPMoviePlayerController(contentURL:receivedURL)
moviePlayer!.movi​​eSourceType = 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()

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



我试过

解决方案

  var玩家:AVPlayer! 
让avPlayerLayer:AVPlayerLayer = AVPlayerLayer(玩家:玩家)
avPlayerLayer.frame = CGRect(x:50,y:50,宽度:100,身高:100)
self.view.layer .addSublayer(avPlayerLayer)
player = AVPlayer(url:receivedURL)
player.play()

在这里你将播放器添加到AVPlayerLayer后初始化。试试这样:

 让玩家= AVPlayer(网址:receivedURL)
让avPlayerLayer:AVPlayerLayer = AVPlayerLayer(玩家:玩家)
avPlayerLayer.frame = CGRect(x:50,y:50,宽度:100,身高:100)
self.view.layer.addSublayer(avPlayerLayer)
player.play( )


So I have been searching for a solution now when MPMoviePlayerController is getting deprecated. my current code works fine:

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()

I record a video, and once I'm done recording, it will be played back with the code above in a new view. But as I understand MPMoviePlayerController is deprecated in iOS9 and I can't find any solution working like the code above. I understand I need to user AVPlayer and AVPlayerViewController.

I have tried this and many other solutions that looks like them. But it just won't work like I want it in the code above.

I just want to record a video, and have it played back in a new view, exactly like snapchat.

Please help me

ADDED ADDITIONAL INFO:

So when I try to fix it with this (the accepted answer) or this solution (AVPlayer), the view is blank. nothing is shown.

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()

And If i try with the AVPlayerViewController which I had to modify:

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()
        }
    })

this happens, where nothing is shown.

解决方案

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()

here you initialize your player AFTER adding it to AVPlayerLayer. try like this:

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()

这篇关于不推荐使用MPMoviePlayerController,现在怎么办?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆