IOS音視頻分片緩存庫(kù)IdiotAVPlayer

boss讓我寫博客诊县,說(shuō)能裝X,我就來(lái)了4胱蟆R廊!??

這篇文章最先發(fā)布在簡(jiǎn)書上媳荒,今天先拿過(guò)來(lái)做開(kāi)山篇抗悍。

額~~文采不好驹饺,不知道怎么寫

來(lái)吧钳枕,直接切入正題,給大家看看效果吧赏壹,免得不是大家想要的東西鱼炒,浪費(fèi)大家的寶貴時(shí)間。


9724987-ce428f8e23f1ec53.gif

本來(lái)想給大家看視頻的蝌借,但是不知道怎么放昔瞧,哈哈哈。

再來(lái)看IdiotAVplayer實(shí)現(xiàn)了什么功能吧菩佑。

相信大家看完上面的圖片自晰,大概就知道IdiotAVplayer實(shí)現(xiàn)了怎樣的功能了,主要就是在選擇時(shí)間后(seek操作)稍坯,之前加載的部分會(huì)被保存酬荞,下次打開(kāi)會(huì)按需加載。本地有數(shù)據(jù)就從本地取瞧哟,沒(méi)有就從網(wǎng)絡(luò)然烨伞(前提是服務(wù)器支持Rang,不然沒(méi)法獲取指定區(qū)間的數(shù)據(jù))勤揩。目前為止咧党,網(wǎng)上最多的關(guān)于緩存的文章就是AVAssetResourceLoader,但是絕大多數(shù)不能再seek動(dòng)作之后繼續(xù)緩存陨亡,每次seek之后整個(gè)音視頻就從seek的時(shí)間開(kāi)始了傍衡,seek之前的都作廢。那么怎么才能實(shí)現(xiàn)一個(gè)分片緩存的播放器呢负蠕?

目前為止聪舒,就我搜索到的開(kāi)源框架有唱吧團(tuán)隊(duì)提供的 KTVHTTPCache(可能還有其他的),是不錯(cuò)虐急。但是它很重箱残,不夠輕量。下面引用下唱吧github文章的一段

方案演進(jìn)

在音視頻緩存上,我們一共采用過(guò)如下 4 個(gè)方案:AVPlayer 純?cè)诰€播放被辑。

AVPlayer + AVAssetResourceLoader + 下載模塊燎悍。

AVPlayer + 一個(gè)開(kāi)源的緩存項(xiàng)目(同樣基于 AVAssetResourceLoader + 下載模塊)。

AVPlayer + KTVHTTPCache盼理。

方案 1 簡(jiǎn)單直接谈山,缺點(diǎn)也不必多說(shuō)。

方案 2 的下載模塊設(shè)計(jì)的比較簡(jiǎn)單宏怔,只能順序下載奏路,不支持分片。導(dǎo)致只能 Seek 到已下載完的地方臊诊,在用戶體驗(yàn)上會(huì)有較大的缺陷鸽粉。

方案 3 在功能上已經(jīng)可以滿足需求,但在使用中問(wèn)題較多抓艳,我們?cè)谠创a基礎(chǔ)上做了很多修改來(lái)填坑触机。但穩(wěn)定性依然不是很理想,上線不長(zhǎng)時(shí)間就將該功能下掉了玷或。

方案 4 是唱吧現(xiàn)在的線上方案儡首,目前在我們的使用場(chǎng)景中還沒(méi)有發(fā)現(xiàn)問(wèn)題。除穩(wěn)定性的提升外偏友,比較大的改進(jìn)是增加了全路徑的 Log 模塊蔬胯。若用戶或測(cè)試同學(xué)遇到問(wèn)題,只需簡(jiǎn)單描述并回傳 Log位他,就可以快速定位到原因氛濒,大大提高了調(diào)試效率。

既然覺(jué)得唱吧框架很重棱诱,那就去尋求比較輕量級(jí)的解決方案泼橘。因?yàn)槲议_(kāi)發(fā)的app也是重音視頻業(yè)務(wù)的。造個(gè)輪子出來(lái)是一勞永逸的事情迈勋。

方案一是純?cè)诰€炬灭,略過(guò)。

方案二就是大家熟知的AVPlayer + AVAssetResourceLoader靡菇。這里我思考了下重归,既然通過(guò)自己的加載方式把數(shù)據(jù)返回給了AVAssetResourceLoader,那么就應(yīng)該有辦法保存那些已經(jīng)下載的數(shù)據(jù)(IdiotAVPlayer就是基于這么個(gè)方案)厦凤。

原理圖(不會(huì)畫鼻吮,將就著看吧)


9724987-5e2ca99d7359df7e.png

(有朋友反映,有些視頻下載不下來(lái)较鼓,不知道是不是網(wǎng)絡(luò)問(wèn)題椎木,還是視頻格式問(wèn)題违柏,我也不懂啊,后面請(qǐng)教我boss 哈哈??)

好了香椎,今天先裝到這里吧

代碼

待續(xù)(其實(shí)我也不知道有沒(méi)有后續(xù))

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末漱竖,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子畜伐,更是在濱河造成了極大的恐慌馍惹,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,820評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件玛界,死亡現(xiàn)場(chǎng)離奇詭異万矾,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)慎框,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門良狈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人鲤脏,你說(shuō)我怎么就攤上這事们颜÷蓝洌” “怎么了猎醇?”我有些...
    開(kāi)封第一講書人閱讀 168,324評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)努溃。 經(jīng)常有香客問(wèn)我硫嘶,道長(zhǎng),這世上最難降的妖魔是什么梧税? 我笑而不...
    開(kāi)封第一講書人閱讀 59,714評(píng)論 1 297
  • 正文 為了忘掉前任沦疾,我火速辦了婚禮,結(jié)果婚禮上第队,老公的妹妹穿的比我還像新娘哮塞。我一直安慰自己,他們只是感情好凳谦,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,724評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布忆畅。 她就那樣靜靜地躺著,像睡著了一般尸执。 火紅的嫁衣襯著肌膚如雪家凯。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 52,328評(píng)論 1 310
  • 那天如失,我揣著相機(jī)與錄音绊诲,去河邊找鬼。 笑死褪贵,一個(gè)胖子當(dāng)著我的面吹牛掂之,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,897評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼世舰,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼橄镜!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起冯乘,我...
    開(kāi)封第一講書人閱讀 39,804評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤洽胶,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后裆馒,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體姊氓,經(jīng)...
    沈念sama閱讀 46,345評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,431評(píng)論 3 340
  • 正文 我和宋清朗相戀三年喷好,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了翔横。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,561評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡梗搅,死狀恐怖禾唁,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情无切,我是刑警寧澤荡短,帶...
    沈念sama閱讀 36,238評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站哆键,受9級(jí)特大地震影響掘托,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜籍嘹,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,928評(píng)論 3 334
  • 文/蒙蒙 一闪盔、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧辱士,春花似錦泪掀、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,417評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至凭涂,卻和暖如春祝辣,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背切油。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,528評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工蝙斜, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人澎胡。 一個(gè)月前我還...
    沈念sama閱讀 48,983評(píng)論 3 376
  • 正文 我出身青樓孕荠,卻偏偏與公主長(zhǎng)得像娩鹉,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子稚伍,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,573評(píng)論 2 359

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

  • 第一篇自己的文章... 有點(diǎn)不知道怎么開(kāi)始弯予。 如果你只是來(lái)拿代碼的,那給你地址IdiotAVPlayer 項(xiàng)目的名...
    起名真的好難閱讀 1,273評(píng)論 3 3
  • 1个曙、通過(guò)CocoaPods安裝項(xiàng)目名稱項(xiàng)目信息 AFNetworking網(wǎng)絡(luò)請(qǐng)求組件 FMDB本地?cái)?shù)據(jù)庫(kù)組件 SD...
    陽(yáng)明先生_X自主閱讀 15,988評(píng)論 3 119
  • 記不得那是什么地方 我只當(dāng)作夢(mèng)里去過(guò) 夢(mèng)里去過(guò)的村莊 見(jiàn)過(guò)的姑娘 以及真實(shí)藏著的童年歡樂(lè) 村莊里的姑娘 記不得她是...
    我是個(gè)詩(shī)人閱讀 77評(píng)論 0 0
  • 林樂(lè)清從睡夢(mèng)中醒來(lái)锈嫩,感覺(jué)到內(nèi)褲一股熟悉的,又黏又濕的觸感垦搬,內(nèi)心崩潰面無(wú)表情呼寸。已經(jīng)是這個(gè)星期的第三回了,就算他年輕力...
    白水繞東城閱讀 640評(píng)論 0 0