美文网首页Swift学习IOS开发
iOS视频播放器(Swift)

iOS视频播放器(Swift)

作者: 深圳张学友 | 来源:发表于2018-08-06 18:14 被阅读1424次

    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)

        本文链接:https://www.haomeiwen.com/subject/yoigvftx.html