iOS播放视频文件一般使用 MPMoviePlayerViewController 和 MPMoviePlayerController。MPMoviePlayerViewController里面包含了一个MPMoviePlayerController,如果要在页面中内嵌播放器的话,使用MPMoviePlayerController,如果只需要播放一个视频,那么用MPMoviePlayerViewController也是很方便的。
下面是我自己封装的一个调用播放器的方法,用Swift3.0写的
import UIKit import MediaPlayer final class YSDMediaPlayer: NSObject { static let shared = YSDMediaPlayer() private override init() {} func showPlayerWithFile(path: String?,presentedViewController: UIViewController) { guard let pa = path else { return } autoreleasepool { let movieURL = URL(fileURLWithPath: pa) let movieController = MPMoviePlayerViewController(contentURL: movieURL)! movieController.moviePlayer.prepareToPlay() movieController.moviePlayer.controlStyle = .fullscreen movieController.view.backgroundColor = UIColor.black movieController.view.frame = CGRect(x: 0,y: 0,width: UIScreen.main.bounds.width,height: UIScreen.main.bounds.height) presentedViewController.present(movieController,animated: true) { NotificationCenter.default.addObserver(forName: NSNotification.Name.MPMoviePlayerPlaybackDidFinish,object: movieController.moviePlayer,queue: OperationQueue.main,using: { (noti) in let theMovie = noti.object as! MPMoviePlayerController NotificationCenter.default.removeObserver(self,name: NSNotification.Name.MPMoviePlayerPlaybackDidFinish,object: theMovie) movieController.dismiss(animated: true,completion: nil) }) } } } }
moviePlayer.moviewControlMode = MPMovieControlModeDefault
MPMovieControlModeDefault 显示播放/暂停、音量和时间控制
MPMovieControlModeVolumeOnly 只显示音量控制
MPMovieControlModeHidden 没有控制器
moviePlayer.scallingMode = MPMovieScallingModeAspectFit;
你可以使用下列宽高比值:
MPMovieScallingModeNone 不做任何缩放
MPMovieScallingModeAspectFit 适应屏幕大小,保持宽高比
MPMovieScallingModeAspectFill 适应屏幕大小,保持宽高比,可裁剪
MPMovieScallingModeFill 充满屏幕,不保持宽高比
你会观察到以下通知:
MPMoviePlayerContentPreloadDidFinishNotification
当电影播放器结束对内容的预加载后发出。因为内容可以在仅加载了一部分的情况下播放,所以这个通知可能在已经播放后才发出。
MPMoviePlayerScallingModeDidChangedNotification
当用户改变了电影的缩放模式后发出。用户可以点触缩放图标,在全屏播放和窗口播放之间切换。
MPMoviePlayerPlaybackDidFinishNotification
当电影播放完毕或者用户按下了Done按钮后发出。
原文链接:https://www.f2er.com/swift/322315.html