ffmpeg命令詳解(轉)

FFmpeg是一套能夠用來記錄、轉換數字音頻、視頻,並能將其轉化爲流的開源計算機程序。採用LGPL或GPL許可證。它提供了錄製、轉換以及流化音視頻的完整解決方案。它包含了很是先進的音頻/視頻編解碼庫libavcodec,爲了保證高可移植性和編解碼質量,libavcodec裏不少code都是從頭開發的。[百度百科]php

ffmpeg使用語法

ffmpeg使用語法:html

ffmpeg [[options][`-i' input_file]]... {[options] output_file}...linux

若是沒有輸入文件,那麼視音頻捕捉就會起做用。git

做爲通用的規則,選項通常用於下一個特定的文件。若是你給 –b 64選項,改選會設置下一個視頻速率。對於原始輸入文件,格式選項多是須要的。算法

缺省狀況下,ffmpeg試圖儘量的無損轉換,採用與輸入一樣的音頻視頻參數來輸出。app

3.選項less

a) 通用選項ide

-L licenseoop

-h 幫助測試

-fromats 顯示可用的格式,編解碼的,協議的。。。

-f fmt 強迫採用格式fmt

-I filename 輸入文件

-y 覆蓋輸出文件

-t duration 設置紀錄時間 hh:mm:ss[.xxx]格式的記錄時間也支持

-ss position 搜索到指定的時間 [-]hh:mm:ss[.xxx]的格式也支持

-title string 設置標題

-author string 設置做者

-copyright string 設置版權

-comment string 設置評論

-target type 設置目標文件類型(vcd,svcd,dvd) 全部的格式選項(比特率,編解碼以及緩衝區大小)自動設置,只須要輸入以下的就能夠了:
ffmpeg -i myfile.avi -target vcd /tmp/vcd.mpg

-hq 激活高質量設置

-itsoffset offset 設置以秒爲基準的時間偏移,該選項影響全部後面的輸入文件。該偏移被加到輸入文件的時戳,定義一個正偏移意味着相應的流被延遲了 offset秒。 [-]hh:mm:ss[.xxx]的格式也支持

b) 視頻選項

-b bitrate 設置比特率,缺省200kb/s

-r fps 設置幀頻 缺省25

-s size 設置幀大小 格式爲WXH 缺省160X128.下面的簡寫也能夠直接使用:
Sqcif 128X96 qcif 176X144 cif 252X288 4cif 704X576

-aspect aspect 設置橫縱比 4:3 16:9 或 1.3333 1.7777

-croptop size 設置頂部切除帶大小 像素單位

-cropbottom size –cropleft size –cropright size

-padtop size 設置頂部補齊的大小 像素單位

-padbottom size –padleft size –padright size –padcolor color 設置補齊條顏色(hex,6個16進制的數,紅:綠:蘭排列,好比 000000表明黑色)

-vn 不作視頻記錄

-bt tolerance 設置視頻碼率容忍度kbit/s

-maxrate bitrate設置最大視頻碼率容忍度

-minrate bitreate 設置最小視頻碼率容忍度

-bufsize size 設置碼率控制緩衝區大小

-vcodec codec 強制使用codec編解碼方式。若是用copy表示原始編解碼數據必須被拷貝。

-sameq 使用一樣視頻質量做爲源(VBR)

-pass n 選擇處理遍數(1或者2)。兩遍編碼很是有用。第一遍生成統計信息,第二遍生成精確的請求的碼率

-passlogfile file 選擇兩遍的紀錄文件名爲file


c)高級視頻選項

-g gop_size 設置圖像組大小

-intra 僅適用幀內編碼

-qscale q 使用固定的視頻量化標度(VBR)

-qmin q 最小視頻量化標度(VBR)

-qmax q 最大視頻量化標度(VBR)

-qdiff q 量化標度間最大誤差 (VBR)

-qblur blur 視頻量化標度柔化(VBR)

-qcomp compression 視頻量化標度壓縮(VBR)

-rc_init_cplx complexity 一遍編碼的初始複雜度

-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 設置碼率控制方程 默認tex^qComp

-rc_override override 特定間隔下的速率控制重載

-me method 設置運動估計的方法 可用方法有 zero phods log x1 epzs(缺省) full

-dct_algo algo 設置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 設置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 設置錯誤殘留爲n 1 FF_ER_CAREFULL 缺省 2 FF_ER_COMPLIANT 3 FF_ER_AGGRESSIVE 4 FF_ER_VERY_AGGRESSIVE

-ec bit_mask 設置錯誤掩蔽爲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 使用數據劃分 僅用於mpeg4

-bug param 繞過沒有被自動監測到編碼器的問題

-strict strictness 跟標準的嚴格性

-aic 使能高級幀內編碼 h263+

-umv 使能無限運動矢量 h263+

-deinterlace 不採用交織方法

-interlace 強迫交織法編碼僅對mpeg2和mpeg4有效。當你的輸入是交織的而且你想要保持交織以最小圖像損失的時候採用該選項。可選的方法是不交織,可是損失更大

-psnr 計算壓縮幀的psnr

-vstats 輸出視頻編碼統計到vstats_hhmmss.log

-vhook module 插入視頻處理模塊 module 包括了模塊名和參數,用空格分開

D)音頻選項

-ab bitrate 設置音頻碼率

-ar freq 設置音頻採樣率

-ac channels 設置通道 缺省爲1

-an 不使能音頻紀錄

-acodec codec 使用codec編解碼

E)音頻/視頻捕獲選項

-vd device 設置視頻捕獲設備。好比/dev/video0

-vc channel 設置視頻捕獲通道 DV1394專用

-tvstd standard 設置電視標準 NTSC PAL(SECAM)

-dv1394 設置DV1394捕獲

-av device 設置音頻設備 好比/dev/dsp


F)高級選項

-map file:stream 設置輸入流映射

-debug 打印特定調試信息

-benchmark 爲基準測試加入時間

-hex 傾倒每個輸入包

-bitexact 僅使用位精確算法 用於編解碼測試

-ps size 設置包大小,以bits爲單位

-re 以本地幀頻讀數據,主要用於模擬捕獲設備

-loop 循環輸入流。只工做於圖像流,用於ffserver測試

2、Ffmpeg使用語法

Ffmpeg使用語法

ffmpeg [[options][`-i' input_file]]... {[options] output_file}...

若是沒有輸入文件,那麼視音頻捕捉(只在Linux下有效,由於Linux下把音視頻設備看成文件句柄來處理)就會起做用。做爲通用的規則,選項一 般用於下一個特定的文件。若是你給 –b 64選項,改選會設置下一個視頻速率。對於原始輸入文件,格式選項多是須要的。缺省狀況下,ffmpeg試圖儘量的無損轉換,採用與輸入一樣的音頻視 頻參數來輸出。


ffmpeg轉換所涉及到的選項較多,可參考ffmpeg選項詳解


ffmpeg支持多種文件格式和多種音頻、視頻編碼器,可參考ffmepg格式詳解,(附:常見視頻文件格式詳解

視頻文件截圖

  • 截取一張352x240尺寸大小的,格式爲jpg的圖片
ffmpeg -i test.asf -y -f image2 -t 0.001 -s 352x240 a.jpg
  • 把視頻的前30幀轉換成一個Animated Gif
ffmpeg -i test.asf -vframes 30 -y -f gif a.gif
  • 截取指定時間的縮微圖
ffmpeg -i test.avi -y -f image2 -ss 8 -t 0.001 -s 350x240 test.jpg
-ss後跟的時間單位爲秒
  • 轉換文件爲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.wmv -ac 1 -acodec libamr_nb -ar 8000 -ab 12200 -s 176x144 -b 128 -r 15 test.3gp

視頻格式轉換

  • 如何使用 ffmpeg 編碼獲得高質量的視頻
ffmpeg.exe -i "D:\Video\Fearless\Fearless.avi" -target film-dvd -s 720x352
-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"
  • 轉換指定格式文件到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
  • 轉碼解密的VOB
ffmpeg -i snatch_1.vob -f avi -vcodec mpeg4 -b 800 -g 300 -bf 2 -acodec mp3 -ab 128 snatch.avi
上面的命令行將vob的文件轉化成avi文件,mpeg4的視頻和mp3的音頻。注意命令中使用了B幀,因此mpeg4流是divx5兼容的。GOP大小是300意味着29.97幀頻下每10秒就有INTRA幀。該映射在音頻語言的DVD轉碼時候尤爲有用。
  • 同時編碼到幾種格式而且在輸入流和輸出流之間創建映射
ffmpeg -i /tmp/a.wav -ab 64 /tmp/a.mp2 -ab 128 /tmp/b.mp2 -map 0:0 -map 0:0
上面的命令行轉換一個64Kbits 的a.wav到128kbits的a.mp2 ‘-map file:index’在輸出流的順序上定義了哪一路輸入流是用於每個輸出流的。
  • 轉換文件爲3GP格式
ffmpeg -i test.avi -y -b 20 -s sqcif -r 10 -acodec amr_wb -ab 23.85 -ac 1 -ar 16000 test.3gp
注:若是要轉換爲3GP格式,則ffmpeg在編譯時必須加上–enable-amr_nb –enable-amr_wb,詳細內容可參考:轉換視頻爲3GPP格式

屏幕錄製

  • 使用ffmpeg錄像屏幕
ffmpeg -vcodec mpeg4 -b 1000 -r 10 -g 300 -vd x11:0,0 -s 1024x768 ~/test.avi

:其中,-vd x11:0,0 指錄製所使用的偏移爲 x=0 和 y=0,-s 1024×768 指錄製視頻的大小爲 1024×768。錄製的視頻文件爲 test.avi,將保存到用戶主目錄中

若是你只想錄製一個應用程序窗口或者桌面上的一個固定區域,那麼能夠指定偏移位置和區域大小。使用xwininfo -frame命令能夠完成查找上述參數。
  • 從新調整視頻尺寸大小
ffmpeg -vcodec mpeg4 -b 1000 -r 10 -g 300 -i ~/test.avi -s 800×600 ~/test-800-600.avi
注:ffmpeg的屏幕錄製功能只能在Linux環境下有效。

視頻採集

  • 把攝像頭的實時視頻錄製下來,存儲爲文件
ffmpeg  -f video4linux -s 320*240 -r 10 -i /dev/video0  test.asf
3、ffmepg使用

各類轉換例子見:
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.

轉換文件爲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

轉換指定格式文件到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.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參數 做用(time_off set the start time offset),能夠從指定時間點開始轉換任務。如: 
轉換文件格式的同時抓縮微圖: 
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轉換命令 
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參數設定解說 
-bitexact 使用標準比特率 
-vcodec xvid 使用xvid壓縮 
-s 320x240 指定分辨率 
-r 29.97 楨速率(能夠改,確認非標準楨率會致使音畫不一樣步,因此只能設定爲15或者29.97) 
畫面部分,選其一 
-b <比特率> 指定壓縮比特率,彷佛ffmpeg是自動VBR的,指定了就大概是平均比特率,好比768,1500這樣的 
就是原來默認項目中有的 
-qscale <數值> 以<數值>質量爲基礎的VBR,取值0.01-255,約小質量越好 
-qmin <數值> 設定最小質量,與-qmax(設定最大質量)共用,好比-qmin 10 -qmax 31 
-sameq 使用和源一樣的質量 
聲音部分 
-acodec aac 設定聲音編碼 
-ac <數值> 設定聲道數,1就是單聲道,2就是立體聲,轉換單聲道的TVrip能夠用1(節省一半容量),高品質 
的DVDrip就能夠用2 
-ar <採樣率> 設定聲音採樣率,PSP只認24000 
-ab <比特率> 設定聲音比特率,前面-ac設爲立體聲時要以一半比特率來設置,好比192kbps的就設成96,轉換 
君默認比特率都較小,要聽到較高品質聲音的話建議設到160kbps(80)以上 
-vol <百分比> 設定音量,某些DVDrip的AC3軌音量極小,轉換時能夠用這個提升音量,好比200就是原來的2倍 
這樣,要獲得一個高畫質音質低容量的MP4的話,首先畫面最好不要用固定比特率,而用VBR參數讓程序本身去 
判斷,而音質參數能夠在原來的基礎上提高一點,聽起來要舒服不少,也不會太大(看狀況調整 


例子: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命令行中輸入,也能夠建立到批處理文件中運行。不過,前提是:要在ffmpeg所在的目錄中執行(轉換君所在目錄下面的cores子目錄)。 
參數: 
-y(覆蓋輸出文件,即若是1.***文件已經存在的話,不經提示就覆蓋掉了) 
-i "1.avi"(輸入文件是和ffmpeg在同一目錄下的1.avi文件,能夠本身加路徑,更名字) 
-title "Test"(在PSP中顯示的影片的標題) 
-vcodec xvid(使用XVID編碼壓縮視頻, 不能改的) 
-s 368x208(輸出的分辨率爲368x208,注意片源必定要是16:9的否則會變形) 
-r 29.97(幀數,通常就用這個吧) 
-b 1500(視頻數據流量,用-b xxxx的指令則使用固定碼率,數字隨便改,1500以上沒效果;還能夠用動態碼率如:-qscale 4和-qscale 6,4的質量比6高) 
-acodec aac(音頻編碼用AAC) 
-ac 2(聲道數1或2) 
-ar 24000(聲音的採樣頻率,好像PSP只能支持24000Hz) 
-ab 128(音頻數據流量,通常選擇3二、6四、9六、128) 
-vol 200(200%的音量,本身改) 
-f psp(輸出psp專用格式) 
-muxvb 768(好像是給PSP機器識別的碼率,通常選擇38四、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參數 做用(time_off set the start time offset),能夠從指定時間點開始轉換任務。如:
轉換文件格式的同時抓縮微圖:
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轉換命令
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參數設定解說 
-bitexact 使用標準比特率 
-vcodec xvid 使用xvid壓縮 
-s 320x240 指定分辨率 
-r 29.97 楨速率(能夠改,確認非標準楨率會致使音畫不一樣步,因此只能設定爲15或者29.97) 


畫面部分,選其一 
-b <比特率> 指定壓縮比特率,彷佛ffmpeg是自動VBR的,指定了就大概是平均比特率,好比768,1500這樣的就是原來默認項目中有的 
-qscale <數值> 以<數值>質量爲基礎的VBR,取值0.01-255,約小質量越好 
-qmin <數值> 設定最小質量,與-qmax(設定最大質量)共用,好比-qmin 10 -qmax 31 
-sameq 使用和源一樣的質量 聲音部分 
-acodec aac 設定聲音編碼 
-ac <數值> 設定聲道數,1就是單聲道,2就是立體聲,轉換單聲道的TVrip能夠用1(節省一半容量),高品質的DVDrip就能夠用2 
-ar <採樣率> 設定聲音採樣率,PSP只認24000 
-ab <比特率> 設定聲音比特率,前面-ac設爲立體聲時要以一半比特率來設置,好比192kbps的就設成96,轉換君默認比特率都較小,要聽到較高品質聲音的話建議設到160kbps(80)以上 
-vol <百分比> 設定音量,某些DVDrip的AC3軌音量極小,轉換時能夠用這個提升音量,好比200就是原來的2倍 這樣,要獲得一個高畫質音質低容量的MP4的話,首先畫面最好不要用固定比特率,而用VBR參數讓程序本身去判斷,而音質參數能夠在原來的基礎上提高一點,聽起來要舒服不少,也不會太大(看狀況調整 例子: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命令行中輸入,也能夠建立到批處理文件中運行。不過,前提是:要在ffmpeg所在的目錄中執行(轉換君所在目錄下面的cores子目錄)。
參數:
-y(覆蓋輸出文件,即若是1.***文件已經存在的話,不經提示就覆蓋掉了)
-i "1.avi"(輸入文件是和ffmpeg在同一目錄下的1.avi文件,能夠本身加路徑,更名字)
-title "Test"(在PSP中顯示的影片的標題)
-vcodec xvid(使用XVID編碼壓縮視頻, 不能改的)
-s 368x208(輸出的分辨率爲368x208,注意片源必定要是16:9的否則會變形)
-r 29.97(幀數,通常就用這個吧)
-b 1500(視頻數據流量,用-b xxxx的指令則使用固定碼率,數字隨便改,1500以上沒效果;還能夠用動態碼率如:-qscale 4和-qscale 6,4的質量比6高)
-acodec aac(音頻編碼用AAC)
-ac 2(聲道數1或2)
-ar 24000(聲音的採樣頻率,好像PSP只能支持24000Hz)
-ab 128(音頻數據流量,通常選擇3二、6四、9六、128)
-vol 200(200%的音量,本身改)
-f psp(輸出psp專用格式)
-muxvb 768(好像是給PSP機器識別的碼率,通常選擇38四、512和768,我改爲1500,PSP就說文件損壞了)
"1.***"(輸出文件名,也能夠加路徑改文件名)

P.S. 版主機器強勁的話,能夠多開幾個批處理文件,讓它們並行處理。 E:\ ffmpeg.exe -i I:\1.wmv -b 360 -r 25 -s 320x240 -hq -deinterlace -ab 56 -ar 22050 -ac
 
附 關於FFmpeg 其餘文章
http://www.ssyleo.com/ffmpeg.html
相關文章
相關標籤/搜索