FFMPEG 常用命令筆記 / 教學

前陣子在弄Google 小姐講故事 – 自動製做三隻小豬故事影片的程式時,用到了一些 ffmpeg 的命令。ffmpeg 是開源影片處理的主流程式,功能強但又不常用,所以很快就會忘記了,就趁著這次機會把命令整理整理。

 

轉換 Video / Audio Codec 與 Bitrate

-i:輸入的影片

-c:v:要輸出的影像 codec,此例是x.264

-c:a:要輸出的聲音 codec,此例是 aac

-b:v:輸出影像的 bitrate,此例是 1MBps

-b:a:輸出聲音的 bitrate,此例是 256kbps

最後面是輸出的檔名,往後的例子都是如此,就不再贅述

設定影片長度

-i:輸入的影片

-t:輸出影片的長度

照片轉換成影片

-loop:不太確定確切目的,類似循環的用途

-i:要使用的照片

-t:輸出的影片長度

此例最終會使用一張照片製做成30秒的影片

照片轉換成影片, 循環播放至指定長度

前一個例子只用到了一張照片,如果要使用多張照片則要對檔名有些改變

-y:覆蓋輸出檔,不詢問

-loop:不太確定確切目的,類似循環的用途

-framerate:就是每秒的幀率(FPS)。以上面的例子是一秒播放2張,若要一張照片播放2秒,則改成1/2。

-i:要使用的檔名。以此例的 img_%05d.jpg 就是要使用 img_00000.jpg, img_00001.jpg, img_00002.jpg…組成影片。其中的 %05d 是C程式語言的表示法,代表5位數,不滿5位前面會補0。這個地方就是 ffmpeg 比較麻煩的地方,照片組成影片前還要另外自行改檔名。這個命名的動作,有另外寫一篇 看例子學 Shell Programming (6) – 將照片依日期重新照序號命名,讀者可以參考看看如何用 shell script 快速完成這個動作。

-vcodec:與之前說過的 -c:v 同樣功能,指定輸出的影像格式

-t:要輸出的影片長度。因為前面還有指定 FPS,若照片檔案不夠,則會重複播放。

-s:指定輸出的畫面大小。因為在照片轉成影片時,照片有時大小、格式不一樣,會照成處理錯誤,建議先轉換成一樣的大小。

指定輸出的畫面大小

-i:要轉換的影片

-s:將輸出影片轉換成指定大小

查詢支援的格式

裁切影片

裁切影片的某一部份,指定期長寬與位置

-i:原始檔案

-vf:使用後面的 “video filter”。裁切filter的語法是 “crop=w:h:x:y”, w=寬度, h=長度, x=起始x座標, y=起始y座標

影片取出 JPG

-i:要處理的影片

-r:轉換的速率,可以想像成 FPS。在每一秒的影片中,取出一張畫面。

-t:取出的時間。以此例而言,每秒取出一張,做40秒,就會取出40張。

輸出檔名也是前面講過的C語言格式,此例會輸出 output-00000.jpg, output-000001.jpg…的檔案

去除聲音

產生只有影像沒聲音的影片

-i:要處理的檔案

-an:指定不需要聲音

截取聲音

如果只要取得影片中的聲音,可以下列命令

-i:要處理的檔案

-vn:指定不需要影像

 

Leave a Reply