iOS視頻播放器(Swift)

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

  • 網(wǎng)頁播放:播放方式簡單铆遭、固定,不可自定義
  • AVPlayer:自定義UI膘螟,目前大多數(shù)的第三方播放軟件都是基于這個(gè)進(jìn)行封裝
  • AVPlayerViewController: 封裝好的AVPlayer,可以直接作為視圖控制器彈出播放碾局,也可以使用添加view方式使用荆残,不可以自定義UI。
  • MPMoviewViewController:使用添加view方式使用,自帶UI净当,使用較為麻煩,iOS 9.0后被廢棄内斯,使用AVPlayerViewController替代
  • MPMoviePlayerViewController:可以直接作為視圖控制器彈出播放,自帶UI像啼,方便使用俘闯,全屏播放,iOS 9.0后被廢棄忽冻,使用AVPlayerViewController替代

一般簡單的播放url可以使用網(wǎng)頁播放的模式真朗,有很多主流app的視頻打開都是用的這種。不需要UI自定義的時(shí)候我們選擇AVPlayerViewController僧诚,比較方便快捷遮婶。自定義需求較多時(shí)最好選用AVPlayer。

AVPlayer

功能最全湖笨、自定義最高的播放器旗扑,也是使用最多得。使用起來較為復(fù)雜些慈省。需導(dǎo)入AVKit控件
AVPlayer功能比較多臀防,另外寫了一篇文章:
AVPlayer播放器

   //創(chuàng)建媒體資源管理對象
    self.palyerItem = AVPlayerItem(url: NSURL(string: urlString)! as URL)
    //創(chuàng)建ACplayer:負(fù)責(zé)視頻播放
    self.player = AVPlayer.init(playerItem: self.palyerItem)
    self.player.rate = 1.0//播放速度 播放前設(shè)置
    //創(chuàng)建顯示視頻的圖層
    let playerLayer = AVPlayerLayer.init(player: self.player)
    playerLayer.videoGravity = .resizeAspect
    playerLayer.frame = self.view.bounds
    self.view.layer .addSublayer(playerLayer)
    //播放
    self.player.play()

只是讓視頻播放起來,沒有暫停、停止袱衷、快進(jìn)等等功能琼锋。

AVPlayerViewController

適用于簡單的播放,不需要過多自定義的東西祟昭,使用比較簡單缕坎,有兩種方式,需要引入AVKit框架
(1)添加view
可以設(shè)置播放器的大小

     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)!)
    //設(shè)置為默認(rèn)風(fēng)格
    self.playerController?.controlStyle = .default
    //重復(fù)播放
    self.playerController?.repeatMode = .one
     //播放視頻
    self.playerController?.prepareToPlay()
    
     deinit {
     //退出界面關(guān)閉播放,移除通知
     self.playerController?.stop()
     self.playerController = nil
     NotificationCenter.default.removeObserver(self)
    }

通知來進(jìn)行一些操作的監(jiān)聽

    //播放完成監(jiān)聽(還有其他很多監(jiān)聽,如播放暫停搬葬、快進(jìn)等)
    NotificationCenter.default.addObserver(self,selecto r:#selector(playerStateFinished(notification:)),nam  e: NSNotification.Name(rawValue:MPMoviePlayerPlayba  ckDidFinishReasonUserInfoKy), object: nil)
   
    //播放結(jié)束監(jiān)聽
    @objc func playerStateFinished(notification:NSNotification){
        print("播放結(jié)束")
    }

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視頻播放器使用

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末急凰,一起剝皮案震驚了整個(gè)濱河市女仰,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌抡锈,老刑警劉巖疾忍,帶你破解...
    沈念sama閱讀 221,695評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異床三,居然都是意外死亡一罩,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評論 3 399
  • 文/潘曉璐 我一進(jìn)店門撇簿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來聂渊,“玉大人,你說我怎么就攤上這事四瘫『核裕” “怎么了?”我有些...
    開封第一講書人閱讀 168,130評論 0 360
  • 文/不壞的土叔 我叫張陵找蜜,是天一觀的道長饼暑。 經(jīng)常有香客問我,道長锹杈,這世上最難降的妖魔是什么撵孤? 我笑而不...
    開封第一講書人閱讀 59,648評論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮竭望,結(jié)果婚禮上邪码,老公的妹妹穿的比我還像新娘。我一直安慰自己咬清,他們只是感情好闭专,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,655評論 6 397
  • 文/花漫 我一把揭開白布奴潘。 她就那樣靜靜地躺著,像睡著了一般影钉。 火紅的嫁衣襯著肌膚如雪画髓。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,268評論 1 309
  • 那天平委,我揣著相機(jī)與錄音奈虾,去河邊找鬼。 笑死廉赔,一個(gè)胖子當(dāng)著我的面吹牛肉微,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蜡塌,決...
    沈念sama閱讀 40,835評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼碉纳,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了馏艾?” 一聲冷哼從身側(cè)響起劳曹,我...
    開封第一講書人閱讀 39,740評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎琅摩,沒想到半個(gè)月后铁孵,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,286評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡迫吐,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,375評論 3 340
  • 正文 我和宋清朗相戀三年库菲,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片志膀。...
    茶點(diǎn)故事閱讀 40,505評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖鳖擒,靈堂內(nèi)的尸體忽然破棺而出溉浙,到底是詐尸還是另有隱情,我是刑警寧澤蒋荚,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布戳稽,位于F島的核電站,受9級特大地震影響期升,放射性物質(zhì)發(fā)生泄漏惊奇。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,873評論 3 333
  • 文/蒙蒙 一播赁、第九天 我趴在偏房一處隱蔽的房頂上張望颂郎。 院中可真熱鬧,春花似錦容为、人聲如沸乓序。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽替劈。三九已至寄雀,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間陨献,已是汗流浹背盒犹。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留眨业,地道東北人急膀。 一個(gè)月前我還...
    沈念sama閱讀 48,921評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像坛猪,于是被迫代替她去往敵國和親脖阵。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,515評論 2 359

推薦閱讀更多精彩內(nèi)容