Swift3 MPMoviePlayerViewController的使用,iOS播放视频

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按钮后发出。

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...