欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

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

iOS開發(fā)之在線視頻播放,進(jìn)度精準(zhǔn)拖動(dòng)

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

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

demo 記得點(diǎn)亮 star. 3Q

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

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

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

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

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

獲取視頻的長度 s

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

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

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

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

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

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

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

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

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

更新視頻資源的播放進(jìn)度。

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

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

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

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

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

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

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

以上便是整個(gè)播放器的源碼解析,具體的細(xì)節(jié)請(qǐng)查看源碼。

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

千里之行,始于足下。

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

快進(jìn):AVPlayer .rate 1

慢放: 0 AVPlayer .rate 1

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

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

快退到頭會(huì)走通知AVPlayerItemDidPlayToEndTimeNotification

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

m3u8(動(dòng)態(tài)):快進(jìn)到了緩存不夠的地方,會(huì)走通知AVPlayerItemDidPlayToEndTimeNotification。

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

將AVPlayerItem 向前或向后移動(dòng)指定的步數(shù),正數(shù)前進(jìn),負(fù)數(shù)后退。 每個(gè)步數(shù)的大小取決于AVPlayerItem啟用的AVPlayerItemTracks對(duì)象;

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

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

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

1、解碼視頻

2、獲取視頻幀

3、渲染視頻幀

4、顯示渲染后的視頻幀

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

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

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

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

AVPlayerItemVideoOutput 獲取視頻幀

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

通過獲取到的CVPixelBuffer,進(jìn)行OPenGL自定義渲染顯示。

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

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

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

主要注意的是:

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

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

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

Git Code:AVPlayer-Render

網(wǎng)頁題目:ios開發(fā)視頻播放,iOS 視頻
分享路徑:http://chinadenli.net/article16/dsdsddg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作網(wǎng)站制作品牌網(wǎng)站制作用戶體驗(yàn)做網(wǎng)站小程序開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計(jì)公司