ffmpeg網頁視頻流m3u8 ts實現視頻下載
引言
現在很多視頻網站播放流視頻,都不是采用mp4/flv文件直接播放,而是采用m3u8/ts
這種方式播放。
簡單說就是,網站後臺把視頻切片成成百上千個xx.ts
文件,一般10秒一個,每個都幾百kb很小。然後通過xx.m3u8
播放列表把這些文件連接起來。
通過Chrome DevTool的Network欄,我們可以清楚的看到加載過程:
我們直接點擊這個playlist.m3u8
播放列表文件,在旁邊的preview
欄中查看內容,可以看到:
#EXTM3U #EXT-X-VERSION:3 #EXT-X-MEDIA-SEQUENCE:0 #EXT-X-ALLOW-CACHE:YES #EXT-X-TARGETDURATION:11 #EXTINF:5.250000, out000.ts #EXTINF:9.500000, out001.ts #EXTINF:8.375000, out002.ts #EXTINF:5.375000, out003.ts #EXTINF:9.000000, out004.ts ...........
那我們怎麼下載呢?
下載視頻所有的ts切片文件
一般的思路是,想辦法把所有的ts切片文件下載下來,然後合成一個完整的視頻。
然而,配合xx.m3u8
播放列表文件,我們可以直接用ffmpeg
在線下載播放列表中所有的視頻,然後直接用ffmpeg合並為一個視頻。
我們就直接執行這一句命令即可:
$ ffmpeg -i <m3u8-path> -c copy OUTPUT.mp4 $ ffmpeg -i <m3u8-path> -vcodec copy -acodec copy OUTPUT.mp4 # 例如: ffmpeg -i https://v6.438vip.com/2018/10/17/3JAHPTdvPhQb9LrE/playlist.m3u8 -c copy OUTPUT.mp4
然後就會看到這樣的下載過程:
為什麼下載播放列表就能下載所有的切片文件?
因為播放列表裡的都是相對路徑,既然我們有瞭播放列表的絕對路徑,那麼其它所有文件的絕對路徑也就不難獲取瞭。
好在ffmpeg直接實現瞭這種播放列表一鍵下載的方式。
以上就是ffmpeg網頁視頻流m3u8 ts實現視頻下載的詳細內容,更多關於ffmpeg網頁視頻流m3u8 ts下載的資料請關註WalkonNet其它相關文章!
推薦閱讀:
- Python合並ts文件至mp4格式及解密教程詳解
- Python爬蟲之m3u8文件裡提取小視頻的正確姿勢
- Android視頻加水印之FFmpeg的簡單應用實例
- php實現ffmpeg處理視頻的實踐
- Python解析m3u8拼接下載mp4視頻文件的示例代碼