目錄: 1 前言本文說描述的選項, 不是每個版本的ffmpeg都具有. 有些選項在不同的版本中有可能會有不同的名稱或者表述方式. 2 命令選項2.1 通用選項-L license -h 幫助 -formats 顯示可用的文件封裝格式, 編解碼, 協(xié)議等. 其中D為Decode或Demux, E為Encode或者Mux. -codecs 相對于-formats只顯示編解碼格式. -f fmt 強迫采用格式fmt(文件格式, 如wav, avi等). 如果不指定該選項, 則使用文件擴展名來自動探測格式. -i filename 輸入文件 -y 覆蓋輸出文件 -t duration 設置錄制/轉(zhuǎn)碼的時長. hh:mm:ss[.xxx]格式的記錄時間也支持 -ss position 搜索到指定的起始時間 [-]hh:mm:ss[.xxx]的格式也支持 -title string 設置標題(本人編譯的linux版本未帶此選項) -author string 設置本人(本人編譯的linux版本未帶此選項) -copyright string 設置版權(本人編譯的linux版本未帶此選項) -comment string 設置評論(本人編譯的linux版本未帶此選項) -target type 設置目標文件類型(type可以為: vcd, svcd, dvd, 'dv', 'dv50')所有的格式選項(比特率, 編解碼以及緩沖區(qū)大小)自動設置, 只需要輸入如下的就可以了: ffmpeg -i myfile.avi -target vcd /tmp/vcd.mpg. 另外, type也可以加前綴: 'pal-', 'ntsc-' or 'film-'. -hq 激活高質(zhì)量設置(本人編譯的linux版本未帶此選項) -itsoffset offset 設置以秒為基準的時間偏移, 該選項影響所有后面的輸入文件. 該偏移被加到輸入文件的時戳, 定義一個正偏移意味著相應的流被延遲了 offset秒. [-]hh:mm:ss[.xxx]的格式也支持 2.2 視頻選項-b:v bitrate 設置比特率, 缺省200kb/s(該數(shù)值依據(jù)轉(zhuǎn)發(fā)的文章, 本人未驗證). -r fps 設置幀率. 缺省25(該數(shù)值依據(jù)轉(zhuǎn)發(fā)的文章, 本人未驗證) -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進制的數(shù), 紅:綠:蘭排列, 比如 000000代表黑色) -vn 不做視頻記錄 -bt tolerance 設置視頻碼率容忍度kbit/s -maxrate bitrate設置最大視頻碼率容忍度 -minrate bitreate 設置最小視頻碼率容忍度 -bufsize size 設置碼率控制緩沖區(qū)大小 -vcodec codec 強制使用codec編解碼方式. 如果用copy表示原始編解碼數(shù)據(jù)必須被拷貝. -sameq 使用同樣視頻質(zhì)量作為源(VBR). -pass n 選擇處理遍數(shù)(1或者2). 兩遍編碼非常有用. 第一遍生成統(tǒng)計信息, 第二遍生成精確的請求的碼率 -passlogfile file 選擇兩遍的紀錄文件名為file 2.3 高級視頻選項-g gop_size 設置圖像組大小 -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 一遍編碼的初始復雜度 -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 -idct_algo -er n -ec -bf frames 使用frames B 幀, 支持mpeg1,mpeg2,mpeg4 -mbd -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ù), 用空格分開 2.4 音頻選項-ab bitrate 設置音頻碼率. 有些版本是(-b:a bitrate) -ar freq 設置音頻采樣率 -ac channels 設置通道 缺省為與輸入相同. -an 不使能音頻紀錄 -acodec codec 使用codec編解碼 2.5 音頻/視頻捕獲選項-vd device 設置視頻捕獲設備. 比如/dev/video0 -vc channel 設置視頻捕獲通道 DV1394專用 -tvstd standard 設置電視標準 NTSC PAL(SECAM) -dv1394 設置DV1394捕獲 -av device 設置音頻設備 比如/dev/dsp 2.6 高級選項-map file:stream 設置輸入流映射 -debug 打印特定調(diào)試信息 -benchmark 為基準測試加入時間 -hex 傾倒每一個輸入包 -bitexact 僅使用位精確算法 用于編解碼測試 -ps size 設置包大小, 以bits為單位 -re 以本地幀頻讀數(shù)據(jù), 主要用于模擬捕獲設備 -loop 循環(huán)輸入流(只工作于圖像流, 用于ffserver測試) 2.7 常用參數(shù)舉例2.7.1 壓縮分辨率ffmpeg -i 1080.mp4 -s 1280x720 720.mp4 2.7.2 轉(zhuǎn)碼
2.7.3 截圖單張 ffmpeg -ss 00:02:00 -i car_1080.mp4 -vframes 1 -y car_1080.pngffmpeg -ss 00:02:00 -i car_1080.mp4 -vframes 1 -y car_1080.jpg 說明:
連續(xù)多張
說明:
2.7.4 添加水印水印局中: ffmpeg -i input.mp4 -i watermark.png -filter_complex overlay='(main_w/2)-(overlay_w/2):(main_h/2)-(overlay_h)/2' center.mp4ffmpeg -i input.mp4 -i watermark.png -filter_complex overlay='5:5' upper_left.mp4 說明:
2.7.5 設置264 Profile
2.7.6 設置SAR, DAR命令行: ffmpeg -i infile -vcodec copy -acodec copy -vbsf h264_changesps=arg1arg2[/arg3] outfile args can be:
there are two distinct cases: sar/dar is stored in container - AFAIK this should worksar/dar is stored in bistream - reencode is needed - though one could need to just replace few bits... 2.7.7 設置幀率
if you want more presice control, not only control fps. but also tbr, tbn, tbc. assume you understand what mean of it. tbc,tbn,tbr. check ffmpeg -x264opts timebase=??? or
2.7.8 推送rtmp碼流ffmpeg -re -i ./test.flv -acodec copy -vcodec copy -f flv rtmp://localhost/live/test 2.7.9 推送udp碼流
如果需要指定udp包大小: ffmpeg -re -i ./test.ts -c copy -f mpegts -y udp://1.2.3.4:12345?pkt_size=1316 2.7.10 探測視頻是逐行還是隔行
得到如下輸出: [Parsed_idet_0 @ 0x2386bc0] Repeated Fields: Neither: 92 Top: 4 Bottom: 5[Parsed_idet_0 @ 0x2386bc0] Single frame detection: TFF: 101 BFF: 0 Progressive: 0 Undetermined: 0[Parsed_idet_0 @ 0x2386bc0] Multi frame detection: TFF: 101 BFF: 0 Progressive: 0 Undetermined: 0 此例檢測了100幀, 得到TFF: 101, 說明是隔行(TFF表示隔行的頂場, BFF表示底場, Progressive表示逐行的幀). 如果都是Progressive, 則是逐行. 3 參數(shù)詳解3.1 視頻tbn the time base in AVStream that has come from the container. tbn代表文件層(st)的時間精度. tbc the time base in AVCodecContext for the codec used for a particular stream. tbc代表視頻層( tbr tbr is guessed from the video stream and is the value users want to see when they look for the video frame rate. 代表幀率; 4 ffprobe常用參數(shù)
5 參考文獻
Human knowledge belongs to the world |
|