嘗試使用ffmpeg指令,下載m3u8來源的串流影片
Ubuntu 14.04 ffmpeg version git-2017-01-22
ffmpeg 安裝方式
利用ffmpeg下載串流影片的使用方法
1 | ffmpeg -i "m3u8網址" -c copy media.mp4 |
透過-i指令,下載串流影片,網址最好用雙引號標示
-c copy 告知影音編碼用複製就好,不需要再次轉碼
filename.mp4 使用mp4副檔名,直接告知存成mp4格式
沒有ffmpeg的話,還有其他下載方法
透過wget下載cat合併
在開啟影片前,先打開Chrome的 F12,才能觀看網路相關的網址
會發現串流的網路連線狀態,依序下載串流影片
media_00000_0.ts, media_00000_1.ts, media_00000_2.ts…其原理就是透過播放器組起來播放
所以可以試著用wget指令,把每個網址存成檔案,接著在將它們合併起來,果真能播放!
一個一個抓
1 | wget http://.......media_00000_0.ts |
透過bash批次抓
1 | for i in `seq 1 210`; |
接著合併
可以透過cat一個一個合併,但是這樣會打到死1
cat media_00000_0.ts media_00000_1.ts (省略) media_00000_210.ts > media.ts
利用ffmpeg離線合併
可以使用ffmpeg直接合併上述下載的分片檔案
既然是串流播放,那麼就會有m3u8 list提供給播放器,當作串流依據
所以只要找到這個檔案,接著在透過ffmpeg就可以合併了1
2
3
4ffmpeg -i media.m3u8 -c copy media.ts
File Type : M2T
MIME Type : video/mpeg
Audio Stream Type : MPEG-2 AAC Audio
合併完後會是M2T的格式,是可以正常透過一般撥放器播放,也可以轉成mp4格式1
2
3
4ffmpeg -i media.ts -vcodec copy -acodec copy media.mp4
File Type : MP4
MIME Type : video/mp4
Major Brand : MP4 Base Media v1 [IS0 14496-12:2003]
其實也可以直接將m3u8的url直接餵給ffmpeg,就自動下載與合併了1
ffmpeg -i "http://......m3u8" -c copy media.ts
這樣也可以,抓下來後,直接轉為mp41
ffmpeg -i "http://......m3u8" -c copy media.mp4