使用AVPlayer播放內(nèi)存中的NSData

問題描述:

假設(shè)我們已經(jīng)把上圖的目錄結(jié)構(gòu)緩存到手機(jī)的Document目錄下,每個(gè)ts文件都是加密文件况增,加密算法都不是標(biāo)準(zhǔn)的AES-128-CBC赞庶,這里我們使用AES-128-ECB的加密模式。現(xiàn)在要播放這個(gè)緩存目錄澳骤,并且要求解密的ts文件不可以生成歧强,以防被別人盜用。

首先大家要明確幾點(diǎn):

1.蘋果的AVPlayer是只能基于路徑播放的为肮,不能直接播放NSData摊册。

2.蘋果HLS協(xié)議的加密算法只支持AES-128-CBC,也就是說如果使用了其它的加密算法加密切片文件颊艳,AVPlayer是無法播放視頻的

3.請(qǐng)求鏈接的Scheme為http或https時(shí)茅特,AVAssetResourceLoader的代理不會(huì)響應(yīng)。


我的實(shí)現(xiàn)步驟:

基于上方“蘋果的AVPlayer是只能基于路徑播放的棋枕,不能直接播放NSData”的共識(shí)白修,而且又不能生成解密的文件保存到本地。

那么我唯一能想到的辦法就是將解密的數(shù)據(jù)流偽裝成一個(gè)Http請(qǐng)求路徑戒悠,這就需要在手機(jī)內(nèi)構(gòu)件一個(gè)HttpServer的服務(wù)熬荆,發(fā)起一個(gè)本地的http請(qǐng)求,將解密后的數(shù)據(jù)返回給AVPlayer。

這里用到的CocoaHttpServer卤恳,封裝一個(gè)類似URL的請(qǐng)求傳給AVAsset

cplp://127.0.0.1:12345/outRun.m3u8

注意scheme不能是http或者h(yuǎn)ttps累盗,否則AVAssetResourceLoaderDelegate是不會(huì)觸發(fā)下面的代理

- (BOOL) resourceLoader:(AVAssetResourceLoader *)resourceLoader shouldWaitForLoadingOfRequestedResource:(AVAssetResourceLoadingRequest *)loadingRequest

在代理函數(shù)中對(duì)不同的url scheme進(jìn)行相應(yīng)的處理,將cplp替換成http

其中針對(duì)ts的解密處理在CocoaHttpServer中進(jìn)行:

- (NSObject*)httpResponseForMethod:(NSString *)method URI:(NSString *)path


后續(xù):

后續(xù)會(huì)添加網(wǎng)絡(luò)相關(guān)的處理突琳,如何緩存需求的目錄的若债。


Demo:

我在GitHub上上傳了個(gè)demo:GitDemo

有興趣的同學(xué)可以看下,如果對(duì)你有幫助請(qǐng)star

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末拆融,一起剝皮案震驚了整個(gè)濱河市蠢琳,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌镜豹,老刑警劉巖傲须,帶你破解...
    沈念sama閱讀 216,997評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異趟脂,居然都是意外死亡泰讽,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門昔期,熙熙樓的掌柜王于貴愁眉苦臉地迎上來已卸,“玉大人,你說我怎么就攤上這事硼一±墼瑁” “怎么了?”我有些...
    開封第一講書人閱讀 163,359評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵般贼,是天一觀的道長愧哟。 經(jīng)常有香客問我,道長哼蛆,這世上最難降的妖魔是什么翅雏? 我笑而不...
    開封第一講書人閱讀 58,309評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮人芽,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘绩脆。我一直安慰自己萤厅,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,346評(píng)論 6 390
  • 文/花漫 我一把揭開白布靴迫。 她就那樣靜靜地躺著惕味,像睡著了一般。 火紅的嫁衣襯著肌膚如雪玉锌。 梳的紋絲不亂的頭發(fā)上名挥,一...
    開封第一講書人閱讀 51,258評(píng)論 1 300
  • 那天,我揣著相機(jī)與錄音主守,去河邊找鬼禀倔。 笑死榄融,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的救湖。 我是一名探鬼主播愧杯,決...
    沈念sama閱讀 40,122評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼鞋既!你這毒婦竟也來了力九?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,970評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤邑闺,失蹤者是張志新(化名)和其女友劉穎跌前,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體陡舅,經(jīng)...
    沈念sama閱讀 45,403評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡抵乓,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,596評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蹭沛。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片臂寝。...
    茶點(diǎn)故事閱讀 39,769評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖摊灭,靈堂內(nèi)的尸體忽然破棺而出咆贬,到底是詐尸還是另有隱情,我是刑警寧澤帚呼,帶...
    沈念sama閱讀 35,464評(píng)論 5 344
  • 正文 年R本政府宣布掏缎,位于F島的核電站,受9級(jí)特大地震影響煤杀,放射性物質(zhì)發(fā)生泄漏眷蜈。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,075評(píng)論 3 327
  • 文/蒙蒙 一沈自、第九天 我趴在偏房一處隱蔽的房頂上張望酌儒。 院中可真熱鬧,春花似錦枯途、人聲如沸忌怎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽榴啸。三九已至,卻和暖如春晚岭,著一層夾襖步出監(jiān)牢的瞬間鸥印,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留库说,地道東北人狂鞋。 一個(gè)月前我還...
    沈念sama閱讀 47,831評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像璃弄,于是被迫代替她去往敵國和親要销。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,678評(píng)論 2 354

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