ffmpeg常用命令介紹

2021-09-27 04:09:54 字數 3516 閱讀 6440

git clone  ffmpeg
解壓即用,建議將ffmpeg和ffprobe加入bin目錄全域性使用。

基本語法格式:

ffmpeg [global_options]  ...  ...
-h,-?,-help,–help[arg]:顯示幫助

-version:顯示版本資訊

-formats:顯示所有有效的格式(包括裝置)

-decoders:顯示所有有效解碼器

-encoders:顯示所有有效的編碼器

-bsfs:顯示有效的資料流(bitstream)濾鏡

-pix_fmts:顯示有效的畫素(pixel)格式

-f fmt (input/output) :指定輸入或者輸出檔案格式。常規可省略而使用依據副檔名的自動指定,但一些選項需要強制明確設定。

-i filename (input):指定輸入檔案

-y (global):預設自動覆蓋輸出檔案,而不再詢問確認。

-n (global):不覆蓋輸出檔案,如果輸出檔案已經存在則立即退出

-t duration (input/output):限制輸入/輸出的時間。如果是在-i前面,就是限定從輸入中讀取多少時間的資料;如果是用於限定輸出檔案,則表示寫入多少時間資料後就停止。duration可以是以秒為單位的數值或者 hh:mm:ss[.***]格式的時間值。 注意-to和-t是互斥的,-t有更高優先順序。

-to position (output):只寫入position時間後就停止,position可以是以秒為單位的數值或者 hh:mm:ss[.***]格式的時間值。 注意-to和-t是互斥的,-t有更高優先順序。

-fs limit_size (output):設定輸出檔案大小限制,單位是位元組(bytes)。

-ss position (input/output):

當在-i前,表示定位輸入檔案到position指定的位置。注意可能一些格式是不支援精確定位的,所以ffmpeg可能是定位到最接近position(在之前)的可定位點。當有轉碼發生且-accurate_seek被設定為啟用(預設),則實際定位點到position間的資料被解碼出來但丟棄掉。如果是複製模式或者-noaccurate_seek被使用,則這之間的資料會被保留。

當用於輸出檔案時,會解碼丟棄position對應時間碼前的輸入檔案資料。

position可以是以秒為單位的數值或者 hh:mm:ss[.***]格式的時間值

-itsoffset offset (input):設定輸入檔案的時間偏移。offset必須採用時間持續的方式指定,即可以有-號的時間值(以秒為單位的數值或者 hh:mm:ss[.***]格式的時間值)。偏移會附加到輸入檔案的時間碼上,意味著所指定的流會以時間碼+偏移量作為最終輸出時間碼。

-timestamp date (output):設定在容器中記錄時間戳。date必須是乙個時間持續描述格式,即

(yyyy-mm-dd|yyyymmdd)[t|t| ]|(hhmmss[.m…]]]))[z] 格式。

-filter[:stream_specifier] filtergraph (output,per-stream):建立乙個由filtergraph指定的濾鏡,並應用於指定流。

-aframes number (output):設定number音訊幀輸出,是-frames:a的別名

-ar[:stream_specifier] freq (input/output,per-stream):設定音訊取樣率。預設是輸出同於輸入。對於輸入進行設定,僅僅通道是真實的裝置或者raw資料分離出並對映的通道才有效。對於輸出則可以強制設定音訊量化的採用率。

-aq q (output):設定音訊品質(編碼指定為vbr),它是-q:a的別名。

-ac[:stream_specifier] channels (input/output,per-stream):設定音訊通道數。預設輸出會有輸入相同的音訊通道。對於輸入進行設定,僅僅通道是真實的裝置或者raw資料分離出並對映的通道才有效。

-af filtergraph (output):對音訊使用filtergraph濾鏡效果,其是-filter:a的別名,參考-filter選項。

php用exec命令直接輸出乙個陣列。網上流傳的用正則提取ffmpeg -i inputfile資訊的方式有點過時,資訊也不全,正確的開啟方式應該是使用ffprobe探針:

ffprobe -v quiet -print_format json -show_format -show_streams inputfile
輸出格式如:

},}

],"format":

}

注意:如果是mp4檔案,在stream中有duration時長字段,但flv中duration只出現在format欄位中,所以取時長一般在format中取比較保險

ffmpeg -i inputfile -y -f mjpeg -ss 1 -t 0.001 -s widthxheight outputfile
ffmpeg -y -i inputfile outputfile.mp4
注意這個.mp4的字尾,ffmpeg是根據輸出檔案的字尾名來確定採用哪種編碼格式進行處理,所以一定要帶上檔案字尾。

ffmpeg -i inputfile -r 1 -s wxh -f image2 %03d.jpeg
r:幀率,數值越大,截**率越大,截的圖越多

s:預設預設同源尺寸

outputfile可使用格式化數字命名

ffmpeg -f image2 -framerate 12 -i %03d.jpeg -s wxh foo.mp4
ffmpeg -f image2 -pattern_type glob -framerate 12 -i '*.jpeg' -s wxh foo.mp4
ffmpeg -i inputfile -ss 5 -t 10 -s 200x100 -f gif -r 10 1.gif
ss:指定開始位置

t:指定擷取時長

s:指定縮放尺寸

f:指定輸出gif格式

r:指定幀率,數值越大gif越流暢,但尺寸也更大

ffmpeg -i inputfile -ss 4 -t 16 output.mp4
意思是從第4秒開始擷取16秒。

合併建議使用concat分離器方式:

先建立乙個文字filelist.txt:

file '1.mp4'

file '2.mp4'

file '3.mp4'

然後執行ffmpeg命令合併:

ffmpeg -f concat -i filelist.txt -c copy outputfile

ffmpeg常用命令

root localhost video 1 ffprobe show streams sh mp4 輸出太多,我這裡就不貼出來了 ffprobe version the ffmpeg developers 2.轉碼mp4轉ts root localhost ffmpeg i video 1 sh....

ffmpeg常用命令

ffmpeg 常用命令記錄 ffmpeg官網 錄屏ffmpeg f i r out.yuv e.g.ffmpeg f gdigrab i desktop out.yuv ffmpeg i test.mp4 vcodec copy acodec copy out.flv 只是換了乙個封裝格式 ffmp...

ffmpeg命令 抓屏 FFmpeg 常用命令

轉換格式 轉換為 mp4 格式 ffmpeg i input.mov output.mp4 i 輸入檔案 指定規格引數 ffmpeg i input.mp4 c v libx264 preset slow crf 18 c a aac b a 128k pix fmt yuv420p output....