真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

ios開發(fā)視頻播放,iOS 視頻

iOS開發(fā)之在線視頻播放,進度精準拖動

本文講解的是 iOS 視頻播放, 支持本地,在線播放. 進度拖動,精準跳轉(zhuǎn),獲取視頻的長度等問題

讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:主機域名、網(wǎng)站空間、營銷軟件、網(wǎng)站建設(shè)、通許網(wǎng)站維護、網(wǎng)站推廣。

demo 記得點亮 star. 3Q

iOS 視頻播放主要使用的類 AVPlayerItem,AVPlayerLayer,AVPlayer

AVPlayerItem: 提供視頻信息, 利用視頻的 url 創(chuàng)建一個對象.利用 kvo 監(jiān)聽 status,可以獲取當前視頻的狀態(tài).

AVPlayer: 就類似視頻的控制者. 可以用來控制視頻的播放,暫停,跳轉(zhuǎn)等. 它的創(chuàng)建依賴于AVPlayerItem

AVPlayerLayer: 用于視頻的顯示. 可以理解成一個 view. 它的創(chuàng)建依賴于AVPlayer

簡單總結(jié): AVPlayer控制視頻狀態(tài), AVPlayerLayer用于顯示,AVPlayerItem提供視頻信息

獲取視頻的長度 s

視頻精準跳轉(zhuǎn).拖動 UISlider,監(jiān)聽 value 改變方法如下:

//為什么timescale要設(shè)置成 600 CMTime教程

iOS 視頻播放器的實現(xiàn)

最近工作之余, 寫了一個視頻播放器,輸入要播放的視頻資源地址,即可實現(xiàn)播放功能。

目前功能比較簡單,支持鎖屏、屏幕旋轉(zhuǎn)等基礎(chǔ)功能,后續(xù)會繼續(xù)完善。。。

下面講解下實現(xiàn)思路:

因 MediaPlayer/MediaPlayer.h 中 MPMoviePlayerController MP_DEPRECATED("Use AVPlayerViewController in AVKit.", ios(2.0, 9.0)) 在iOS9以后已經(jīng)廢棄,為了更好的兼容性,采用了 AVFoundation/AVFoundation.h 為技術(shù)實現(xiàn)方案。

框架在此就不講解了,官網(wǎng)講的比較清楚,不懂的可以查看官檔。 - 戳這里

監(jiān)聽視頻資源的加載狀態(tài), 根據(jù)不同的狀態(tài)進行相應(yīng)的操作。

更新視頻資源的播放進度。

實現(xiàn)控制視圖 QYPlayerControlView 的Delegate。 當控制視圖進行了相應(yīng)操作,事件被傳遞到該類中進行統(tǒng)一處理。

該類中還有對操作視圖 顯示/隱藏 的方法。

后續(xù)調(diào)整視頻亮度、音量、進度等手勢都需添加在該分類中,便于統(tǒng)一管理。

主要存放時間轉(zhuǎn)換的分類 NSString+Custom 、常用宏 QYPlayerDefine 等工具類。

1). BaseViewController 中實現(xiàn)了控制屏幕旋轉(zhuǎn)的系統(tǒng)方法,實現(xiàn)的控制器要繼承自 BaseViewController 。

2). 在子控制器中實現(xiàn)如下方法。

此時屏幕旋轉(zhuǎn)功能已經(jīng)添加成功!

以上便是整個播放器的源碼解析,具體的細節(jié)請查看源碼。

源碼放在GitHub上了,想查看的小伙伴可以 -戳這里。

千里之行,始于足下。

iOS開發(fā):視頻快進、慢進、快退(倍速播放)

快進:AVPlayer .rate 1

慢放: 0 AVPlayer .rate 1

快退: AVPlayer .rate 0 (m3u8 不能快退)

MP4:如果快進到了緩存不夠的地方:KVC監(jiān)聽 AVPlayerItem .isPlaybackBufferEmpty = yes

快退到頭會走通知AVPlayerItemDidPlayToEndTimeNotification

m3u8(靜態(tài)):快進與MP4格式視頻一致,可以10倍 20倍播放。

m3u8(動態(tài)):快進到了緩存不夠的地方,會走通知AVPlayerItemDidPlayToEndTimeNotification。

備注:使用[AVPlayerItem stepByCount:-24];

將AVPlayerItem 向前或向后移動指定的步數(shù),正數(shù)前進,負數(shù)后退。 每個步數(shù)的大小取決于AVPlayerItem啟用的AVPlayerItemTracks對象;

注冊監(jiān)聽和通知

iOS - 自定義視頻播放器 -- (1)

如何將視頻添加上自定義的渲染效果,并顯示?

1、解碼視頻

2、獲取視頻幀

3、渲染視頻幀

4、顯示渲染后的視頻幀

5、編碼視頻幀,生成新的視頻

AVPlayer:驅(qū)動播放用例的中心階層,是用于管理媒體資產(chǎn)的回放和定時的控制器對象

這里AVPlayer,我制作簡單的播放,暫停,seek。并且添加上AVPlayerItemVideoOutput做一個視頻幀輸出的工作。

創(chuàng)建一個播放器

AVPlayerItemVideoOutput 獲取視頻幀

主要的核心工具是 AVPlayerItemVideoOutput ,這對象相當于一個視頻解碼工具,對它進行屬性設(shè)置,可以獲取視頻中某一時刻的想要數(shù)據(jù)的 CVPixelBuffer 視頻幀。

通過獲取到的CVPixelBuffer,進行OPenGL自定義渲染顯示。

外部需要開啟一個定時器,來實時的進行畫面的刷新。定時器時間可以根據(jù)視頻的FPS來控制。

至此如何獲取視頻幀就可以了。

如何獲取視頻幀,這里都比較簡單,都是通過系統(tǒng)層去實現(xiàn)功能。

主要注意的是:

1、AVPlayerItemVideoOutput的獲取的數(shù)據(jù)格式定義,根據(jù) 需求設(shè)置RGBA還是YUV420的數(shù)據(jù) 。

2、AVPlayer使用seek時候,使用 精度比較高的方法 ,提高在seek時候的畫面流暢度

3、獲取的CVPixelBuffer 在Swift語言,不需要手動釋放 。在OC上需要調(diào)用 CVPixelBufferRelease() 手動釋放

Git Code:AVPlayer-Render


網(wǎng)頁題目:ios開發(fā)視頻播放,iOS 視頻
鏈接分享:http://weahome.cn/article/dsdsddg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部