總結(jié)
知乎的視頻播放基于M3U8文件,找一種支持通過該類文件下載目標(biāo)文件的工具即可,例如FFmpeg
正文
某個慵懶的周末上午刷著知乎,一位知友po了自己用鼓(還是啥?)敲擊的旅行青蛙音樂的視頻,評論區(qū)有小伙伴想要該視頻的音頻文件下載,想著舉手之勞,順便看看知乎的視頻播放用的啥技術(shù)。
打開開發(fā)者工具,刷新網(wǎng)頁并播放,觀察網(wǎng)絡(luò)請求并沒有media文件的下載,倒是看到很多.ts文件不斷下載中。看來是將視頻切割為多個片段了,Google后了解到知乎使用的是M3U8文件,再從該文件下載片段。
什么是M3U8?這是一種utf8格式的M3U(MP3 URL的縮寫)文件,最先由Fraunhofer協(xié)會(研究出MP3算法的那個)設(shè)計并用于Winplay3軟件。最初只是應(yīng)用于MP3等音頻文件,現(xiàn)在廣泛應(yīng)用于在線流媒體和視頻播放。說白了,它就是一個資源文件的播放列表索引文件,該文件記錄了目標(biāo)資源片段的url鏈接。具體請看維基百科
打開知乎視頻,觀察網(wǎng)絡(luò)請求,你會發(fā)現(xiàn)請求了一個m3u8的資源??纯此祷氐氖鞘裁矗?/p>
foam@foamdeMacBook-Pro: ~ ? curl "https://vdn.vzuu.com/Act-ss-m3u8-hd/c338e5b09ab2431080a58ed4d1bb6e17/5a996be2-17da-11e8-b60a-0242ac112a05None.m3u8?auth_key=1521964082-0-0-4d282a5ef6e479a492e6182f044384f5&expiration=1521964082&disable_local_cache=0"
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:2
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:2.000000,
5a996be2-17da-11e8-b60a-0242ac112a05None-00001.ts?auth_key=1521964082-0-0-c0110f185ac09713b4d717e1f2ec30ca
#EXTINF:2.000000,
5a996be2-17da-11e8-b60a-0242ac112a05None-00002.ts?auth_key=1521964082-0-0-26ad0014261d1e1f94b1273d91e9a1ec
#EXTINF:2.000000,
5a996be2-17da-11e8-b60a-0242ac112a05None-00003.ts?auth_key=1521964082-0-0-ed71bc54e68662748af8eb5228525b84
#EXTINF:2.000000,
5a996be2-17da-11e8-b60a-0242ac112a05None-00004.ts?auth_key=1521964082-0-0-7ef99c02438c16e8d0eabc4955cf3f84
# 有點長,省略若干行...
...
#EXT-X-ENDLIST
可以看到返回了一個列表,每個片段2秒鐘,包含了鏈接。
這里使用FFmpeg下載M3U8的資源。FFmpeg是一種處理音視頻的強大的開源工具(向開源大佬們致敬),強大到令我淚流滿面。該工具有win/linux/mac版本,請自行到官網(wǎng)或包管理器下載。
貼出命令:
根據(jù)M3U8下載資源文件:
ffmpeg -i "https://vdn.vzuu.com/Act-ss-m3u8-hd/c338e5b09ab2431080a58ed4d1bb6e17/5a996be2-17da-11e8-b60a-0242ac112a05None.m3u8?auth_key=1521964082-0-0-4d282a5ef6e479a492e6182f044384f5&expiration=1521964082&disable_local_cache=0" -c copy 1.mp4
將MP4轉(zhuǎn)換為MP3
ffmpeg -i 1.mp4 -f mp3 -vn 1.mp3
感謝科技的美好~
- 本文固定鏈接: http://zoufeng.net/2018/03/25/download-zhihu-vedio/
- 轉(zhuǎn)載請注明: foam 2018年03月25日 于 foam 發(fā)表