ffmpeg命令详解(转)
一、ffmpeg命令詳解
ffmpeg非常強大,輕松幾條命令就可以完成你的工作。
把darkdoor.[001-100].jpg序列幀和001.mp3音頻文件利用mpeg4編碼方式合成視頻文件darkdoor.avi:
$ ffmpeg -i 001.mp3 -i darkdoor.%3d.jpg -s 1024x768 -author skypp -vcodec mpeg4 darkdoor.avi
ffmpeg還支持mov格式:
$ ffmpeg?-i darkdoor.%3d.jpg darkdoor.mov
要查看你的ffmpeg支持哪些格式,可以用如下命令:
$ ffmpeg -formats | less
還可以把視頻文件導(dǎo)出成jpg序列幀:
$ ffmpeg -i bc-cinematic-en.avi example.%d.jpg
debian下安裝ffmpeg很簡單:
#apt-get install ffmpeg
######################################
下面是轉(zhuǎn)來的使用說明,慢慢研究吧,嘿嘿
######################################
ffmpeg使用語法
ffmpeg使用語法:
ffmpeg [[options][`-i' input_file]]... {[options] output_file}...
如果沒有輸入文件,那么視音頻捕捉就會起作用。
作為通用的規(guī)則,選項一般用于下一個特定的文件。如果你給 –b 64選項,改選會設(shè)置下一個視頻速率。對于原始輸入文件,格式選項可能是需要的。
缺省情況下,ffmpeg試圖盡可能的無損轉(zhuǎn)換,采用與輸入同樣的音頻視頻參數(shù)來輸出。
3.選項
a) 通用選項
-L license
-h 幫助
-fromats 顯示可用的格式,編解碼的,協(xié)議的。。。
-f fmt 強迫采用格式fmt
-I filename 輸入文件
-y 覆蓋輸出文件
-t duration 設(shè)置紀錄時間 hh:mm:ss[.xxx]格式的記錄時間也支持
-ss position 搜索到指定的時間 [-]hh:mm:ss[.xxx]的格式也支持
-title string 設(shè)置標題
-author string 設(shè)置作者
-copyright string 設(shè)置版權(quán)
-comment string 設(shè)置評論
-target type 設(shè)置目標文件類型(vcd,svcd,dvd) 所有的格式選項(比特率,編解碼以及緩沖區(qū)大小)自動設(shè)置,只需要輸入如下的就可以了:
ffmpeg -i myfile.avi -target vcd /tmp/vcd.mpg
-hq 激活高質(zhì)量設(shè)置
-itsoffset offset 設(shè)置以秒為基準的時間偏移,該選項影響所有后面的輸入文件。該偏移被加到輸入文件的時戳,定義一個正偏移意味著相應(yīng)的流被延遲了 offset秒。 [-]hh:mm:ss[.xxx]的格式也支持
b) 視頻選項
-b bitrate 設(shè)置比特率,缺省200kb/s
-r fps 設(shè)置幀頻 缺省25
-s size 設(shè)置幀大小 格式為WXH 缺省160X128.下面的簡寫也可以直接使用:
Sqcif 128X96 qcif 176X144 cif 252X288 4cif 704X576
-aspect aspect 設(shè)置橫縱比 4:3 16:9 或 1.3333 1.7777
-croptop size 設(shè)置頂部切除帶大小 像素單位
-cropbottom size –cropleft size –cropright size
-padtop size 設(shè)置頂部補齊的大小 像素單位
-padbottom size –padleft size –padright size –padcolor color 設(shè)置補齊條顏色(hex,6個16進制的數(shù),紅:綠:蘭排列,比如 000000代表黑色)
-vn 不做視頻記錄
-bt tolerance 設(shè)置視頻碼率容忍度kbit/s
-maxrate bitrate設(shè)置最大視頻碼率容忍度
-minrate bitreate 設(shè)置最小視頻碼率容忍度
-bufsize size 設(shè)置碼率控制緩沖區(qū)大小
-vcodec codec 強制使用codec編解碼方式。如果用copy表示原始編解碼數(shù)據(jù)必須被拷貝。
-sameq 使用同樣視頻質(zhì)量作為源(VBR)
-pass n 選擇處理遍數(shù)(1或者2)。兩遍編碼非常有用。第一遍生成統(tǒng)計信息,第二遍生成精確的請求的碼率
-passlogfile file 選擇兩遍的紀錄文件名為file
c)高級視頻選項
-g gop_size 設(shè)置圖像組大小
-intra 僅適用幀內(nèi)編碼
-qscale q 使用固定的視頻量化標度(VBR)
-qmin q 最小視頻量化標度(VBR)
-qmax q 最大視頻量化標度(VBR)
-qdiff q 量化標度間最大偏差 (VBR)
-qblur blur 視頻量化標度柔化(VBR)
-qcomp compression 視頻量化標度壓縮(VBR)
-rc_init_cplx complexity 一遍編碼的初始復(fù)雜度
-b_qfactor factor 在p和b幀間的qp因子
-i_qfactor factor 在p和i幀間的qp因子
-b_qoffset offset 在p和b幀間的qp偏差
-i_qoffset offset 在p和i幀間的qp偏差
-rc_eq equation 設(shè)置碼率控制方程 默認tex^qComp
-rc_override override 特定間隔下的速率控制重載
-me method 設(shè)置運動估計的方法 可用方法有 zero phods log x1 epzs(缺省) full
-dct_algo algo 設(shè)置dct的算法 可用的有 0 FF_DCT_AUTO 缺省的DCT 1 FF_DCT_FASTINT 2 FF_DCT_INT 3 FF_DCT_MMX 4 FF_DCT_MLIB 5 FF_DCT_ALTIVEC
-idct_algo algo 設(shè)置idct算法。可用的有 0 FF_IDCT_AUTO 缺省的IDCT 1 FF_IDCT_INT 2 FF_IDCT_SIMPLE 3 FF_IDCT_SIMPLEMMX 4 FF_IDCT_LIBMPEG2MMX 5 FF_IDCT_PS2 6 FF_IDCT_MLIB 7 FF_IDCT_ARM 8 FF_IDCT_ALTIVEC 9 FF_IDCT_SH4 10 FF_IDCT_SIMPLEARM
-er n 設(shè)置錯誤殘留為n 1 FF_ER_CAREFULL 缺省 2 FF_ER_COMPLIANT 3 FF_ER_AGGRESSIVE 4 FF_ER_VERY_AGGRESSIVE
-ec bit_mask 設(shè)置錯誤掩蔽為bit_mask,該值為如下值的位掩碼 1 FF_EC_GUESS_MVS (default=enabled) 2 FF_EC_DEBLOCK (default=enabled)
-bf frames 使用frames B 幀,支持mpeg1,mpeg2,mpeg4
-mbd mode 宏塊決策 0 FF_MB_DECISION_SIMPLE 使用mb_cmp 1 FF_MB_DECISION_BITS 2 FF_MB_DECISION_RD
-4mv 使用4個運動矢量 僅用于mpeg4
-part 使用數(shù)據(jù)劃分 僅用于mpeg4
-bug param 繞過沒有被自動監(jiān)測到編碼器的問題
-strict strictness 跟標準的嚴格性
-aic 使能高級幀內(nèi)編碼 h263+
-umv 使能無限運動矢量 h263+
-deinterlace 不采用交織方法
-interlace 強迫交織法編碼僅對mpeg2和mpeg4有效。當你的輸入是交織的并且你想要保持交織以最小圖像損失的時候采用該選項。可選的方法是不交織,但是損失更大
-psnr 計算壓縮幀的psnr
-vstats 輸出視頻編碼統(tǒng)計到vstats_hhmmss.log
-vhook module 插入視頻處理模塊 module 包括了模塊名和參數(shù),用空格分開
D)音頻選項
-ab bitrate 設(shè)置音頻碼率
-ar freq 設(shè)置音頻采樣率
-ac channels 設(shè)置通道 缺省為1
-an 不使能音頻紀錄
-acodec codec 使用codec編解碼
E)音頻/視頻捕獲選項
-vd device 設(shè)置視頻捕獲設(shè)備。比如/dev/video0
-vc channel 設(shè)置視頻捕獲通道 DV1394專用
-tvstd standard 設(shè)置電視標準 NTSC PAL(SECAM)
-dv1394 設(shè)置DV1394捕獲
-av device 設(shè)置音頻設(shè)備 比如/dev/dsp
F)高級選項
-map file:stream 設(shè)置輸入流映射
-debug 打印特定調(diào)試信息
-benchmark 為基準測試加入時間
-hex 傾倒每一個輸入包
-bitexact 僅使用位精確算法 用于編解碼測試
-ps size 設(shè)置包大小,以bits為單位
-re 以本地幀頻讀數(shù)據(jù),主要用于模擬捕獲設(shè)備
-loop 循環(huán)輸入流。只工作于圖像流,用于ffserver測試
二、Ffmpeg使用語法
Ffmpeg使用語法
ffmpeg [[options][`-i' input_file]]... {[options] output_file}...如果沒有輸入文件,那么視音頻捕捉(只在Linux下有效,因為Linux下把音視頻設(shè)備當作文件句柄來處理)就會起作用。作為通用的規(guī)則,選項一 般用于下一個特定的文件。如果你給 –b 64選項,改選會設(shè)置下一個視頻速率。對于原始輸入文件,格式選項可能是需要的。缺省情況下,ffmpeg試圖盡可能的無損轉(zhuǎn)換,采用與輸入同樣的音頻視 頻參數(shù)來輸出。
ffmpeg轉(zhuǎn)換所涉及到的選項較多,可參考ffmpeg選項詳解。
ffmpeg支持多種文件格式和多種音頻、視頻編碼器,可參考ffmepg格式詳解,(附:常見視頻文件格式詳解)
視頻文件截圖
- 截取一張352x240尺寸大小的,格式為jpg的圖片
- 把視頻的前30幀轉(zhuǎn)換成一個Animated Gif
- 截取指定時間的縮微圖
- 轉(zhuǎn)換文件為3GP格式
-acodec aac -ac 2 -ar 22500 -ab 24 -f 3gp test.3gp
視頻格式轉(zhuǎn)換
- 如何使用 ffmpeg 編碼得到高質(zhì)量的視頻
-padtop 64 -padbottom 64 -maxrate 7350000 -b 3700000 -sc_threshold 1000000000
-trellis -cgop -g 12 -bf 2 -qblur 0.3 -qcomp 0.7 -me full -dc 10 -mbd 2
-aspect 16:9 -pass 2 -passlogfile "D:\Video\ffmpegencode" -an -f mpeg2video "D:\Fearless.m2v"
- 轉(zhuǎn)換指定格式文件到FLV格式
ffmpeg.exe -i test.wmv -ab 56 -ar 22050 -b 500 -r 15 -s 320x240 f:\test.flv
- 轉(zhuǎn)碼解密的VOB
- 同時編碼到幾種格式并且在輸入流和輸出流之間建立映射
- 轉(zhuǎn)換文件為3GP格式
屏幕錄制
- 使用ffmpeg錄像屏幕
:其中,-vd x11:0,0 指錄制所使用的偏移為 x=0 和 y=0,-s 1024×768 指錄制視頻的大小為 1024×768。錄制的視頻文件為 test.avi,將保存到用戶主目錄中
- 重新調(diào)整視頻尺寸大小
視頻采集
- 把攝像頭的實時視頻錄制下來,存儲為文件
各種轉(zhuǎn)換例子見:
FFmpeg Howto
程序下載:
Unofficial FFmpeg Win32 Builds(需要使用代理訪問)
或:
FFMPEG FULL SDK V3.0
The generic syntax is:
ffmpeg [[infile options][`-i' infile]]… {[outfile options] outfile}…
As a general rule, options are applied to the next specified file. Therefore, order is important, and you can have the same option on the command line multiple times. Each occurrence is then applied to the next input or output file.
* To set the video bitrate of the output file to 64kbit/s:
ffmpeg -i input.avi -b 64k output.avi
* To force the frame rate of the input and output file to 24 fps:
ffmpeg -r 24 -i input.avi output.avi
* To force the frame rate of the output file to 24 fps:
ffmpeg -i input.avi -r 24 output.avi
* To force the frame rate of input file to 1 fps and the output file to 24 fps:
ffmpeg -r 1 -i input.avi -r 24 output.avi
The format option may be needed for raw input files.
By default, FFmpeg tries to convert as losslessly as possible: It uses the same audio and video parameters for the outputs as the one specified for the inputs.
轉(zhuǎn)換文件為3GP格式
ffmpeg -y -i test.mpeg -bitexact -vcodec h263 -b 128 -r 15 -s 176x144 -acodec aac -ac 2 -ar 22500 -ab 24 -f 3gp test.3gp
或
ffmpeg -y -i test.mpeg -ac 1 -acodec amr_nb -ar 8000 -s 176x144 -b 128 -r 15 test.3gp
轉(zhuǎn)換指定格式文件到FLV格式
ffmpeg.exe -i test.mp3 -ab 56 -ar 22050 -b 500 -r 15 -s 320x240 f:\test.flv
ffmpeg.exe -i test.wmv -ab 56 -ar 22050 -b 500 -r 15 -s 320x240 f:\test.flv
***************************************************************************
ffmpeg -i F:\tools\ffmpeg.rev10464\test.avi -ab 56 -ar 22050 -b 500 -r 15 -s 320x240 F:\tools\ffmpeg.rev10464\test.flv
ffmpeg -i "F:\tools\ffmpeg.rev10464\test.flv" -y -f image2 -ss 8 -t 0.001 -s 350x240 "test.jpg"
ffmpeg -i F:\01.wmv -ab 56 -ar 22050 -b 500 -r 15 -s 320x240 f:\test.flv
使用-ss參數(shù) 作用(time_off set the start time offset),可以從指定時間點開始轉(zhuǎn)換任務(wù)。如:
轉(zhuǎn)換文件格式的同時抓縮微圖:
ffmpeg -i "test.avi" -y -f image2 -ss 8 -t 0.001 -s 350x240 'test.jpg'
對已有flv抓圖:
ffmpeg -i "test.flv" -y -f image2 -ss 8 -t 0.001 -s 350x240 'test.jpg'
-ss后跟的時間單位為秒
Ffmpeg轉(zhuǎn)換命令
ffmpeg -y -i test.mpeg -bitexact -vcodec h263 -b 128 -r 15 -s 176x144 -acodec aac -ac 2 -ar 22500
-ab 24 -f 3gp test.3gp
或者
ffmpeg -y -i test.mpeg -ac 1 -acodec amr_nb -ar 8000 -s 176x144 -b 128 -r 15 test.3gp
ffmpeg參數(shù)設(shè)定解說
-bitexact 使用標準比特率
-vcodec xvid 使用xvid壓縮
-s 320x240 指定分辨率
-r 29.97 楨速率(可以改,確認非標準楨率會導(dǎo)致音畫不同步,所以只能設(shè)定為15或者29.97)
畫面部分,選其一
-b <比特率> 指定壓縮比特率,似乎ffmpeg是自動VBR的,指定了就大概是平均比特率,比如768,1500這樣的
就是原來默認項目中有的
-qscale <數(shù)值> 以<數(shù)值>質(zhì)量為基礎(chǔ)的VBR,取值0.01-255,約小質(zhì)量越好
-qmin <數(shù)值> 設(shè)定最小質(zhì)量,與-qmax(設(shè)定最大質(zhì)量)共用,比如-qmin 10 -qmax 31
-sameq 使用和源同樣的質(zhì)量
聲音部分
-acodec aac 設(shè)定聲音編碼
-ac <數(shù)值> 設(shè)定聲道數(shù),1就是單聲道,2就是立體聲,轉(zhuǎn)換單聲道的TVrip可以用1(節(jié)省一半容量),高品質(zhì)
的DVDrip就可以用2
-ar <采樣率> 設(shè)定聲音采樣率,PSP只認24000
-ab <比特率> 設(shè)定聲音比特率,前面-ac設(shè)為立體聲時要以一半比特率來設(shè)置,比如192kbps的就設(shè)成96,轉(zhuǎn)換
君默認比特率都較小,要聽到較高品質(zhì)聲音的話建議設(shè)到160kbps(80)以上
-vol <百分比> 設(shè)定音量,某些DVDrip的AC3軌音量極小,轉(zhuǎn)換時可以用這個提高音量,比如200就是原來的2倍
這樣,要得到一個高畫質(zhì)音質(zhì)低容量的MP4的話,首先畫面最好不要用固定比特率,而用VBR參數(shù)讓程序自己去
判斷,而音質(zhì)參數(shù)可以在原來的基礎(chǔ)上提升一點,聽起來要舒服很多,也不會太大(看情況調(diào)整
例子:ffmpeg -y -i "1.avi" -title "Test" -vcodec xvid -s 368x208 -r 29.97 -b 1500 -acodec aac -ac 2 -ar 24000 -ab 128 -vol 200 -f psp -muxvb 768 "1.***"
解釋:以上命令可以在Dos命令行中輸入,也可以創(chuàng)建到批處理文件中運行。不過,前提是:要在ffmpeg所在的目錄中執(zhí)行(轉(zhuǎn)換君所在目錄下面的cores子目錄)。
參數(shù):
-y(覆蓋輸出文件,即如果1.***文件已經(jīng)存在的話,不經(jīng)提示就覆蓋掉了)
-i "1.avi"(輸入文件是和ffmpeg在同一目錄下的1.avi文件,可以自己加路徑,改名字)
-title "Test"(在PSP中顯示的影片的標題)
-vcodec xvid(使用XVID編碼壓縮視頻,不能改的)
-s 368x208(輸出的分辨率為368x208,注意片源一定要是16:9的不然會變形)
-r 29.97(幀數(shù),一般就用這個吧)
-b 1500(視頻數(shù)據(jù)流量,用-b xxxx的指令則使用固定碼率,數(shù)字隨便改,1500以上沒效果;還可以用動態(tài)碼率如:-qscale 4和-qscale 6,4的質(zhì)量比6高)
-acodec aac(音頻編碼用AAC)
-ac 2(聲道數(shù)1或2)
-ar 24000(聲音的采樣頻率,好像PSP只能支持24000Hz)
-ab 128(音頻數(shù)據(jù)流量,一般選擇32、64、96、128)
-vol 200(200%的音量,自己改)
-f psp(輸出psp專用格式)
-muxvb 768(好像是給PSP機器識別的碼率,一般選擇384、512和768,我改成1500,PSP就說文件損壞了)
"1.***"(輸出文件名,也可以加路徑改文件名)
機器強勁的話,可以多開幾個批處理文件,讓它們并行處理。
E:\ffmpeg.exe -i I:\1.wmv -b 360 -r 25 -s 320x240 -hq -deinterlace -ab 56 -ar 22050 -ac 1 D:\2.flv
===========================================
ffmpeg.exe -i F:\閃客之家\閃客之歌.mp3 -ab 56 -ar 22050 -b 500 -r 15 -s 320x240 f:\11.flv ffmpeg -i F:\01.wmv -ab 56 -ar 22050 -b 500 -r 15 -s 320x240 f:\test.flv 使用-ss參數(shù) 作用(time_off set the start time offset),可以從指定時間點開始轉(zhuǎn)換任務(wù)。如:
轉(zhuǎn)換文件格式的同時抓縮微圖:
ffmpeg -i "test.avi" -y -f image2 -ss 8 -t 0.001 -s 350x240 'test.jpg'
對已有flv抓圖:
ffmpeg -i "test.flv" -y -f image2 -ss 8 -t 0.001 -s 350x240 'test.jpg'
-ss后跟的時間單位為秒 Ffmpeg轉(zhuǎn)換命令
ffmpeg -y -i test.mpeg -bitexact -vcodec h263 -b 128 -r 15 -s 176x144 -acodec aac -ac 2 -ar 22500 -ab 24 -f 3gp test.3gp
或者
ffmpeg -y -i test.mpeg -ac 1 -acodec amr_nb -ar 8000 -s 176x144 -b 128 -r 15 test.3gp ffmpeg參數(shù)設(shè)定解說
-bitexact 使用標準比特率
-vcodec xvid 使用xvid壓縮
-s 320x240 指定分辨率
-r 29.97 楨速率(可以改,確認非標準楨率會導(dǎo)致音畫不同步,所以只能設(shè)定為15或者29.97)
畫面部分,選其一
-b <比特率> 指定壓縮比特率,似乎ffmpeg是自動VBR的,指定了就大概是平均比特率,比如768,1500這樣的就是原來默認項目中有的
-qscale <數(shù)值> 以<數(shù)值>質(zhì)量為基礎(chǔ)的VBR,取值0.01-255,約小質(zhì)量越好
-qmin <數(shù)值> 設(shè)定最小質(zhì)量,與-qmax(設(shè)定最大質(zhì)量)共用,比如-qmin 10 -qmax 31
-sameq 使用和源同樣的質(zhì)量 聲音部分
-acodec aac 設(shè)定聲音編碼
-ac <數(shù)值> 設(shè)定聲道數(shù),1就是單聲道,2就是立體聲,轉(zhuǎn)換單聲道的TVrip可以用1(節(jié)省一半容量),高品質(zhì)的DVDrip就可以用2
-ar <采樣率> 設(shè)定聲音采樣率,PSP只認24000
-ab <比特率> 設(shè)定聲音比特率,前面-ac設(shè)為立體聲時要以一半比特率來設(shè)置,比如192kbps的就設(shè)成96,轉(zhuǎn)換君默認比特率都較小,要聽到較高品質(zhì)聲音的話建議設(shè)到160kbps(80)以上
-vol <百分比> 設(shè)定音量,某些DVDrip的AC3軌音量極小,轉(zhuǎn)換時可以用這個提高音量,比如200就是原來的2倍 這樣,要得到一個高畫質(zhì)音質(zhì)低容量的MP4的話,首先畫面最好不要用固定比特率,而用VBR參數(shù)讓程序自己去判斷,而音質(zhì)參數(shù)可以在原來的基礎(chǔ)上提升一點,聽起來要舒服很多,也不會太大(看情況調(diào)整 例子:ffmpeg -y -i "1.avi" -title "Test" -vcodec xvid -s 368x208 -r 29.97 -b 1500 -acodec aac -ac 2 -ar 24000 -ab 128 -vol 200 -f psp -muxvb 768 "1.***"
解釋:以上命令可以在Dos命令行中輸入,也可以創(chuàng)建到批處理文件中運行。不過,前提是:要在ffmpeg所在的目錄中執(zhí)行(轉(zhuǎn)換君所在目錄下面的cores子目錄)。
參數(shù):
-y(覆蓋輸出文件,即如果1.***文件已經(jīng)存在的話,不經(jīng)提示就覆蓋掉了)
-i "1.avi"(輸入文件是和ffmpeg在同一目錄下的1.avi文件,可以自己加路徑,改名字)
-title "Test"(在PSP中顯示的影片的標題)
-vcodec xvid(使用XVID編碼壓縮視頻,不能改的)
-s 368x208(輸出的分辨率為368x208,注意片源一定要是16:9的不然會變形)
-r 29.97(幀數(shù),一般就用這個吧)
-b 1500(視頻數(shù)據(jù)流量,用-b xxxx的指令則使用固定碼率,數(shù)字隨便改,1500以上沒效果;還可以用動態(tài)碼率如:-qscale 4和-qscale 6,4的質(zhì)量比6高)
-acodec aac(音頻編碼用AAC)
-ac 2(聲道數(shù)1或2)
-ar 24000(聲音的采樣頻率,好像PSP只能支持24000Hz)
-ab 128(音頻數(shù)據(jù)流量,一般選擇32、64、96、128)
-vol 200(200%的音量,自己改)
-f psp(輸出psp專用格式)
-muxvb 768(好像是給PSP機器識別的碼率,一般選擇384、512和768,我改成1500,PSP就說文件損壞了)
"1.***"(輸出文件名,也可以加路徑改文件名)
P.S. 版主機器強勁的話,可以多開幾個批處理文件,讓它們并行處理。 E:\ffmpeg.exe -i I:\1.wmv -b 360 -
總結(jié)
以上是生活随笔為你收集整理的ffmpeg命令详解(转)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux练习(write写入)
- 下一篇: X.509 数字证书结构和实例