MPMoviePlayerController 已弃用,现在怎么办?
Posted
技术标签:
【中文标题】MPMoviePlayerController 已弃用,现在怎么办?【英文标题】:MPMoviePlayerController deprecated, what now? 【发布时间】:2016-04-26 16:04:25 【问题描述】:所以当 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()
我录制了一个视频,录制完成后,它将在新视图中使用上面的代码播放。但据我了解 MPMoviePlayerController 在 ios9 中已弃用,我找不到任何像上面的代码一样工作的解决方案。我知道我需要用户 AVPlayer 和 AVPlayerViewController。
我已经尝试过this 和许多其他看起来像它们的解决方案。 但它不会像我在上面的代码中想要的那样工作。
我只想录制一段视频,并在新视图中播放,就像 snapchat 一样。
请帮帮我
添加的附加信息:
因此,当我尝试使用this(已接受的答案)或this solution(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()
如果我尝试使用我必须修改的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()
)
发生这种情况,没有显示任何内容。
【问题讨论】:
您的链接答案似乎是解决方案。展开“但它不会像我在上面的代码中想要的那样工作。”究竟是什么问题? 您在尝试使用AVPlayerViewController
时遇到了哪些问题?你的问题没有意义。什么是“不工作?”
好的,我将编辑问题并添加图片:) 但是我链接的答案有两个问题第一个是没有播放任何内容,视图完全空白另一个问题是显示视频播放器,但为灰色。我将打印屏幕并用代码添加它们
【参考方案1】:
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()
在这里,您将播放器添加到 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()
【讨论】:
仍然只是一个空视图:/ 您的视频网址可能有问题。我试过这个 - clips.vorwaerts-gmbh.de/VfE_html5.mp4 - 一切都按预期工作。请记住,如果您的视频 url 不是 https://,则需要配置 App Transport Security Policy。 一个愚蠢的问题,我应该在我的 viewdidload 中这样做吗?比如:覆盖 func viewDidLoad() super.viewDidLoad() 让 urlPath: String = "clips.vorwaerts-gmbh.de/VfE_html5.mp4" 让 url: NSURL = NSURL(string: urlPath)! let player = AVPlayer(URL: url) let avPlayerLayer:AVPlayerLayer = AVPlayerLayer(player: player) avPlayerLayer.frame = CGRectMake(50,50,100,100) self.view.layer.addSublayer(avPlayerLayer) player.play() 是的,在 viewDidLoad 中这样做是可以的。顺便说一句,对不起,我忘记了链接中的 http:// 不在那里,我认为它只是 *** 在粘贴到这里时将其删除。我在我的 viewdidload 中像上面的代码那样做了,但仍然是空白。以上是关于MPMoviePlayerController 已弃用,现在怎么办?的主要内容,如果未能解决你的问题,请参考以下文章
MPMoviePlayerViewController和MPMoviePlayerController的使用
MPMoviePlayerController 不播放 .wmv
如何显示 MPMoviePlayerController 控件?
MPMoviePlayerController 上的专辑封面