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....