介紹如何在 Linux 中使用 ffmpeg 指令下載 m3u 或 m3u8 串流影片清單,儲存為 mp4 檔案。
m3u 是一種用來儲存多媒體播放清單的檔案格式,而 m3u8 就是 UTF-8 編碼版本的 m3u,許多網路上的線上影片都會以 m3u 的格式來播放。
使用 ffmpeg 下載 m3u8 串流影片
取得 m3u8 播放清單的 URL 網址之後,即可使用以下的 ffmpeg 指令將串流影片下載為 mp4 影片檔案:
# m3u8 視訊串流檔列表網址
M3U8_URL="https://video.dious.cc/20200725/w0YyXoEY/index.m3u8"
# 輸出 MP4 檔案
MP4_OUTPUT="video.mp4"
# 下載 m3u8 視訊串流至 MP4 影片檔
ffmpeg -i "${M3U8_URL}" -bsf:a aac_adtstoasc -vcodec copy -c copy "${MP4_OUTPUT}"
使用 m3u8-download 下載 m3u8 串流影片
除了自己執行 ffmpeg 指令之外,也可以利用 m3u8-download 這個指令稿來下載 m3u8 串流影片。
首先從 GitHub 下載 m3u8-download 指令稿,並測試一下:
# 下載 m3u8-download
git clone https://github.com/williamchanrico/m3u8-download.git
# 測試 m3u8-download
cd m3u8-download/
./m3u8-download
_____________________
/ hello, who's there? \
\ william said hi... /
---------------------
\ ,__,
\ (..)____
(__) )\
||--|| *
Download video from m3u8 address using ffmpeg
usage: m3u8-download M3U8_ADDRESS {OUTPUT_FILENAME}執行 m3u8-download 指令並指定 m3u8 視訊串流檔列表網址以及輸出的 mp4 影片檔案,即可以下載串流影片:
# m3u8 視訊串流檔列表網址
M3U8_URL="https://video.dious.cc/20200725/w0YyXoEY/index.m3u8"
# 輸出 MP4 檔案
MP4_OUTPUT="video.mp4"
# 使用 m3u8-download 下載 m3u8 視訊串流至 MP4 影片檔
./m3u8-download "${M3U8_URL}" "${MP4_OUTPUT}"
