ffmpeg 命令筆記

video

紀錄一下最近在用 ffmpeg 的一些常用指令,和轉檔成 Chromecast 支援的影片格式。

轉檔

sh
ffmpeg -i input.avi output.mp4

更多選項

sh
ffmpeg -i input.avi -c:v libx264 -preset medium -crf 23 -c:a aac -b:a 160k -vf format=yuv420p output.mp4

分割片段

從 00:01:00 剪到 00:02:00:

sh
ffmpeg -i video.mp4 -ss 00:01:00 -to 00:02:00 -c copy cut.mp4

從 00:01:00 剪 2 分鐘:

sh
ffmpeg -i video.mp4 -ss 00:01:00 -t 00:02:00 -c copy cut.mp4

縮放畫面尺寸

sh
ffmpeg -i video.mp4 -vf scale="1280:-1" output.mp4

設幀率 (frame rate)

sh
ffmpeg -i video.mp4 -r 25 output.mp4

mkv 字幕轉 mp4

sh
ffmpeg -i video.mkv -vf "subtitles=video.mkv:si=1" -strict -2 video.mp4

字幕順序從 si=0 開始。

ass 字幕嵌入 mp4

sh
ffmpeg -i video.mp4 -vf "ass=subtitle.ass" output.mp4

轉成 8 位元深度

為了要投放影片到 Chromecast 上面,卻發現影片是 10 位元深度而不能播,轉成 8 位元深度 (yuv420p) 就可以了:

sh
ffmpeg -i "video.mp4" -c:v libx264 -profile:v high -level:v 5.1 -pix_fmt yuv420p -c:a copy "output.mp4"

音訊從 5.1 轉成雙聲道

為了要投放影片到 Chromecast 上面,卻發現不支援 5.1 而不能播,轉成雙聲道就可以了:

sh
ffmpeg -i video.mp4 -c:v copy -c:a aac -ac 2 output.mp4

下載 m3u8

直接丟 m3u8 連結給 ffmpeg,就可以下載影片了:

sh
ffmpeg -i https://example.com/720p.m3u8 -c copy video.mp4

但也有會給 403 的時候,可以試試看加上 Cookie 和一些 headers 來偽裝:

sh
ffmpeg -headers "Cookie: 這裡放Cookie" -headers "Referer: https://example.com/" -user_agent "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36" -i https://example.com/720p.m3u8 -c copy video.mp4

ffmpeg 相關資源