介紹如何在 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}"

