目錄
一、視頻網(wǎng)站的工作原理
二、抓取視頻步驟
2.1、找到m3u8文件
2.2、把m3u8下載到ts文件
2.3、ts文件合并為mp4文件
一、視頻網(wǎng)站的工作原理
??????? 古老的視頻網(wǎng)站的視頻一般是在源碼放一個(gè)<video src="xxx.mp4"></video>,用戶點(diǎn)擊播放視頻,會(huì)跳轉(zhuǎn)到src的連接進(jìn)行視頻資源的獲取進(jìn)行播放。
缺點(diǎn):視頻加載速度慢
??????? 正常的視頻網(wǎng)站,用戶上傳視頻或者獲取到的視頻資源-->轉(zhuǎn)碼(把視頻進(jìn)行處理,分成2K,1080,標(biāo)清等畫質(zhì))-->切片處理(把一個(gè)完整的視頻進(jìn)行切片,例如一個(gè)60分鐘的視頻,分割成很多個(gè)幾十秒的視頻),用戶在移動(dòng)進(jìn)度條時(shí),會(huì)加載這一部分的切片視頻內(nèi)容(這時(shí)不必加載整個(gè)視頻)。
??????? 但需要一個(gè)文件進(jìn)行記錄:1、視頻播放順序? 2、視頻存放的路徑-->保存這些東西的文件-->統(tǒng)一規(guī)定為M3U8文件-->但本質(zhì)上是文本
優(yōu)點(diǎn):視頻加載速度快
關(guān)鍵詞:轉(zhuǎn)碼、切片、
二、抓取視頻步驟
2.1、找到m3u8文件
1)向頁(yè)面發(fā)起請(qǐng)求,看頁(yè)面源代碼是否在video標(biāo)簽(有時(shí)不是video標(biāo)簽,是video被其它標(biāo)簽包含)包含了m3u8鏈接,包含則直接請(qǐng)求到該鏈接即可;
2)頁(yè)面源代碼不包含m3u8鏈接(找video),則使用抓包工具,抓取XHR類型的包(js處理的數(shù)據(jù)包),查看哪一個(gè)鏈接存在m3u8的具體鏈接,請(qǐng)求到該鏈接即可獲取m3u8文件;
3)下面是一種m3u8的反爬過(guò)程
??????? 假設(shè)我們?cè)L問(wèn)了目標(biāo)網(wǎng)站的54812-1-1.html文件,客戶端發(fā)起一個(gè)請(qǐng)求,服務(wù)器響應(yīng)請(qǐng)求返回?cái)?shù)據(jù)包(這時(shí)的數(shù)據(jù)包包含了動(dòng)態(tài)生成的一個(gè)note=xxxxx),我們?cè)邳c(diǎn)擊播放視頻時(shí),會(huì)向服務(wù)器在次發(fā)送一個(gè)請(qǐng)求(這時(shí)的請(qǐng)求包含了服務(wù)器第一次返回給我們的note=xxxxx),服務(wù)器響應(yīng)(這時(shí)服務(wù)器會(huì)對(duì)比我們帶過(guò)去的noet=xxxx是不是和第一次的相同,相同則返回內(nèi)容,不同則重復(fù)第一次請(qǐng)求的過(guò)程,或者不返回視頻)并把視頻文件返回,視頻開(kāi)始播放。
問(wèn)題:
??????? 第一次直接請(qǐng)求到m3u8文件可能會(huì)被反爬,拿不到文件
解決辦法:
??????? 在請(qǐng)求時(shí),應(yīng)該先向服務(wù)器發(fā)起一次請(qǐng)求拿到服務(wù)器給我們的note=xxxx,然后在第二次發(fā)送請(qǐng)求拿到m3u8文件;
2.2、把m3u8下載到ts文件
1)獲取到了m3u8文件鏈接,直接發(fā)送請(qǐng)求即可獲取到m3u8文件;
2)使用文件的I/O操作即可(注意要分好每一部分視頻的順序,最好有規(guī)律命名);
3)在進(jìn)行文件的I/O操作時(shí),數(shù)量很多,需要提速,使用多線程、攜程、多進(jìn)程等方法提速;
4)保存的文件后綴應(yīng)該是.ts。
2.3、ts文件合并為mp4文件
1)存在很多個(gè)小的ts文件,需要合成一個(gè)大的mp4文件-->剪輯工具合成(quicktime);文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-643150.html
2)代碼合成(這個(gè)不知道咋弄);文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-643150.html
到了這里,關(guān)于視頻網(wǎng)站的工作原理-->m3u8視頻文件的提取與解析(理論)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!