iOS视频播放器(Swift)

iOS上除了一些第三方的播放器之外,我们一般常用的播放方式有使用:

  • 网页播放:播放方式简单、固定,不可自定义
  • AVPlayer:自定义UI,目前大多数的第三方播放软件都是基于这个进行封装
  • AVPlayerViewController: 封装好的AVPlayer,可以直接作为视图控制器弹出播放,也可以使用添加view方式使用,不可以自定义UI。
  • MPMoviewViewController:使用添加view方式使用,自带UI,使用较为麻烦,iOS 9.0后被废弃,使用AVPlayerViewController替代
  • MPMoviePlayerViewController:可以直接作为视图控制器弹出播放,自带UI,方便使用,全屏播放,iOS 9.0后被废弃,使用AVPlayerViewController替代

一般简单的播放url可以使用网页播放的模式,有很多主流app的视频打开都是用的这种。不需要UI自定义的时候我们选择AVPlayerViewController,比较方便快捷。自定义需求较多时最好选用AVPlayer。

AVPlayer

功能最全、自定义最高的播放器,也是使用最多得。使用起来较为复杂些。需导入AVKit控件
AVPlayer功能比较多,另外写了一篇文章:
AVPlayer播放器

   //创建媒体资源管理对象
    self.palyerItem = AVPlayerItem(url: NSURL(string: urlString)! as URL)
    //创建ACplayer:负责视频播放
    self.player = AVPlayer.init(playerItem: self.palyerItem)
    self.player.rate = 1.0//播放速度 播放前设置
    //创建显示视频的图层
    let playerLayer = AVPlayerLayer.init(player: self.player)
    playerLayer.videoGravity = .resizeAspect
    playerLayer.frame = self.view.bounds
    self.view.layer .addSublayer(playerLayer)
    //播放
    self.player.play()

只是让视频播放起来,没有暂停、停止、快进等等功能。

AVPlayerViewController

适用于简单的播放,不需要过多自定义的东西,使用比较简单,有两种方式,需要引入AVKit框架
(1)添加view
可以设置播放器的大小

     let player = AVPlayer(url: NSURL(string: urlString)! as URL)
     let playerViewController = AVPlayerViewController()
     playerViewController.player = player
     //添加view播放的模式
     playerViewController.view.frame = CGRect(x: 20, y: 100, width: self.view.bounds.width - 40, height: 200)
     self.addChildViewController(playerViewController)
     self.view.addSubview(playerViewController.vie)

(2)作为视图控制器弹窗

     //控制器推出的模式
     let player = AVPlayer(url: NSURL(string: urlString)! as URL)
     let playerViewController = AVPlayerViewController()
     playerViewController.player = player
     self.present(playerViewController, animated:true, completion: nil)

MPMoviePlayerViewController

使用起来类似AVPlayerViewController的第一种方式。需要引入MediaPlayer框架(iOS9后被抛弃,使用AVPlayerViewController即可)

    var playerController : MPMoviePlayerController?
    playerController = MPMoviePlayerController(contentURL: NSURL(string: urlString) as! URL)
    playerController?.view.frame = CGRect(x: 0, y: 100, width: self.view.frame.width, height: 300)
    self.view.addSubview((playerController?.view)!)
    //设置为默认风格
    self.playerController?.controlStyle = .default
    //重复播放
    self.playerController?.repeatMode = .one
     //播放视频
    self.playerController?.prepareToPlay()
    
     deinit {
     //退出界面关闭播放,移除通知
     self.playerController?.stop()
     self.playerController = nil
     NotificationCenter.default.removeObserver(self)
    }

通知来进行一些操作的监听

    //播放完成监听(还有其他很多监听,如播放暂停、快进等)
    NotificationCenter.default.addObserver(self,selecto r:#selector(playerStateFinished(notification:)),nam  e: NSNotification.Name(rawValue:MPMoviePlayerPlayba  ckDidFinishReasonUserInfoKy), object: nil)
   
    //播放结束监听
    @objc func playerStateFinished(notification:NSNotification){
        print("播放结束")
    }

MPMoviePlayerViewController

使用起来类似AVPlayerViewController的第二种方式。需要引入MediaPlayer框架(iOS9后被抛弃,使用AVPlayerViewController即可)

   let playerViewController = MPMoviePlayerViewController(contentURL: NSURL(string: urlString)! as URL)
   playerViewController?.moviePlayer.scalingMode = .aspectFit
   self.present(playerViewController!,animated:true, completion: nil)

下载demo

swift视频播放器使用

你可能感兴趣的:(iOS视频播放器(Swift))