问题描述
我已经在iOS 8中创建了一个在后台播放电影的功能,现在当我想在iOS 9中使用它时,它会给我一个警告,并说最好不要使用MPMoviePlayer而是使用AVPlayer。但我对AVPlayer一无所知。如何在没有使用AVPlayer而不是MPMoviePlayer的警告的情况下将其转换为正确的功能?
继承人func:
i have made a function in iOS 8 to play a movie in the background and now when i want to use it in iOS 9 it gives me a warning and says that it best not to use MPMoviePlayer and instead use AVPlayer. but i don't know anything about AVPlayer. how can i convert this to a proper function without warning that uses AVPlayer instead of MPMoviePlayer? heres the func :
func playVideo() ->Bool {
let path = NSBundle.mainBundle().pathForResource("video", ofType:"mov")
//take path of video
let url = NSURL.fileURLWithPath(path!)
moviePlayer = MPMoviePlayerController(contentURL: url)
//asigning video to moviePlayer
if let player = moviePlayer {
player.view.frame = self.view.bounds
//setting the video size to the view size
player.controlStyle = MPMovieControlStyle.None
//Hiding the Player controls
player.prepareToPlay()
//Playing the video
player.repeatMode = .One
//Repeating the video
player.scalingMode = .AspectFill
//setting the aspect ratio of the player
self.view.addSubview(player.view)
self.view.addSubview(blurView)
self.view.sendSubviewToBack(blurView)
self.view.sendSubviewToBack(player.view)
//adding the player view to viewcontroller
return true
}
return false
}
推荐答案
是一个UIViewController的子类。因此,不要使用常规视图控制器创建自定义电影播放器控制器,如下所示:
AVPlayerViewController is a subclass of UIViewController. So instead of using a regular view controller create your custom movie player controller as follow:
尝试这样:
import UIKit
import AVKit
import AVFoundation
class MoviePlayerViewController: AVPlayerViewController {
override func viewDidLoad() {
super.viewDidLoad()
player = AVPlayer(URL: url)
videoGravity = AVLayerVideoGravityResizeAspect
showsPlaybackControls = true
// player?.play() // uncomment this line to autoplay
NSNotificationCenter.defaultCenter().addObserver(self, selector: "didPlayToEndTime", name: AVPlayerItemDidPlayToEndTimeNotification, object: nil)
}
func didPlayToEndTime(){
print("didPlayToEndTime")
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
要将其用作背景,您可以按照以下步骤操作:
To use it as a background you can do as follow:
import UIKit
import AVKit
import AVFoundation
class ViewController: UIViewController {
let moviePlayerController = AVPlayerViewController()
var aPlayer = AVPlayer()
func playBackgroundMovie(){
if let url = NSBundle.mainBundle().URLForResource("video", withExtension: "mov") {
aPlayer = AVPlayer(URL: url)
}
moviePlayerController.player = aPlayer
moviePlayerController.view.frame = view.frame
moviePlayerController.view.sizeToFit()
moviePlayerController.videoGravity = AVLayerVideoGravityResizeAspect
moviePlayerController.showsPlaybackControls = false
aPlayer.play()
view.insertSubview(moviePlayerController.view, atIndex: 0)
}
func didPlayToEndTime(){
aPlayer.seekToTime(CMTimeMakeWithSeconds(0, 1))
aPlayer.play()
}
override func viewDidLoad() {
super.viewDidLoad()
playBackgroundMovie()
NSNotificationCenter.defaultCenter().addObserver(self, selector: "didPlayToEndTime", name: AVPlayerItemDidPlayToEndTimeNotification, object: nil)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
这篇关于iOS 9中的MPMoviePlayer的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!