Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/113.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios MPMoviePlayerController已弃用,现在怎么办?_Ios_Swift_Mpmovieplayercontroller_Avplayer - Fatal编程技术网

Ios MPMoviePlayerController已弃用,现在怎么办?

Ios MPMoviePlayerController已弃用,现在怎么办?,ios,swift,mpmovieplayercontroller,avplayer,Ios,Swift,Mpmovieplayercontroller,Avplayer,所以我一直在寻找一个解决方案,当MPMoviePlayerController被弃用时。我当前的代码运行良好: moviePlayer = MPMoviePlayerController(contentURL: receivedURL) moviePlayer!.movieSourceType = MPMovieSourceType.Unknown moviePlayer!.view.frame = view.bounds moviePlayer!.scalingMode

所以我一直在寻找一个解决方案,当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()
我录制了一段视频,一旦我完成录制,它将在一个新的视图中用上面的代码播放。但据我所知,iOS9中不推荐使用MPMoviePlayerController,我找不到任何类似上述代码的解决方案。我知道我需要使用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()
若我尝试使用我必须修改的:

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()
        }
    })
这种情况会发生,没有显示任何内容。

在这里,您可以在将播放器添加到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()

您的链接答案似乎是解决方案。展开“但它不能像我希望的那样在上面的代码中工作。”到底是什么问题?当您尝试使用
avplayervewcontroller
时,遇到了什么问题?你的问题没有道理。什么是“不工作?”好的,我将编辑问题并添加一张图片:)但是对于我链接的答案,有两个问题:第一个问题是没有播放任何内容,视图完全空白;另一个问题是显示了视频播放器,但它是灰色的。我将使用打印屏幕并添加它们,代码仍然只是一个空视图:/您的视频url可能有问题。我试过这个--一切都正常。请记住,如果您的视频url不是https://,则需要配置应用程序传输安全策略。这是一个愚蠢的问题,我应该在viewdidload中执行此操作吗?like:override func viewDidLoad(){super.viewDidLoad()let urlPath:String=”“let url:NSURL=NSURL(String:urlPath)!let player=AVPlayer(url:url)let avPlayerLayer:avPlayerLayer=avPlayerLayer(player:player)avPlayerLayer.frame=CGRectMake(50,50100100)self.view.layer.addSublayer(avPlayerLayer)player.play()}是的,可以在viewDidLoad中执行此操作。顺便说一句,很抱歉,我忘记了http://在我的linkno中,我想它只是Stackoverflow在粘贴到这里时删除了它。。我在viewdidload中按照上面的代码进行了操作,但仍然为空。
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()