命令格式
常用參數(shù)
ffmpeg [global_options] {[input_file_options] -i input_url} ... {[output_file_options] output_url} ... ffmpeg -i [輸入文件名] [參數(shù)選項(xiàng)] -f [格式] [輸出文件] 參數(shù)選項(xiàng): (1) -an: 去掉音頻 (2) -vn: 去掉視頻 (3) -acodec: 設(shè)定音頻的編碼器,未設(shè)定時(shí)則使用與輸入流相同的編解碼器。音頻解復(fù)用在一般后面加copy表示拷貝 (4) -vcodec: 設(shè)定視頻的編碼器,未設(shè)定時(shí)則使用與輸入流相同的編解碼器,視頻解復(fù)用一般后面加copy表示拷貝 (5) –f: 輸出格式(視頻轉(zhuǎn)碼)(6) -bf: B幀數(shù)目控制 (7) -g: 關(guān)鍵幀間隔控制(視頻跳轉(zhuǎn)需要關(guān)鍵幀)(8) -s: 設(shè)定畫面的寬和高,分辨率控制(352*278)(9) -i: 設(shè)定輸入流(10) -ss: 指定開(kāi)始時(shí)間(0:0:05)(11) -t: 指定持續(xù)時(shí)間(0:05)(12) -b: 設(shè)定視頻流量,默認(rèn)是200Kbit/s(13) -aspect: 設(shè)定畫面的比例(14) -ar: 設(shè)定音頻采樣率(15) -ac: 設(shè)定聲音的Channel數(shù)(16) -r: 提取圖像頻率(用于視頻截圖)(17) -c:v: 輸出視頻格式(18) -c:a: 輸出音頻格式(18) -y: 輸出時(shí)覆蓋輸出目錄已存在的同名文件 -vcoder 設(shè)定視頻的編碼器,未設(shè)定時(shí)則使用與輸入流相同的編解碼器
詳細(xì)參數(shù)
ffmpeg一些命令參數(shù):
a) 通用選項(xiàng)
-L license
-h 幫助
-fromats 顯示可用的格式,編解碼的,協(xié)議的。。。
-f fmt 強(qiáng)迫采用格式fmt
-I filename 輸入文件
-y 覆蓋輸出文件
-t duration 設(shè)置紀(jì)錄時(shí)間 hh:mm:ss[.xxx]格式的記錄時(shí)間也支持
-ss position 搜索到指定的時(shí)間 [-]hh:mm:ss[.xxx]的格式也支持
-title string 設(shè)置標(biāo)題
-author string 設(shè)置作者
-copyright string 設(shè)置版權(quán)
-comment string 設(shè)置評(píng)論
-target type 設(shè)置目標(biāo)文件類型(vcd,svcd,dvd) 所有的格式選項(xiàng)(比特率,編解碼以及緩沖區(qū)大?。┳詣?dòng)設(shè)置 ,只需要輸入如下的就可以了:
ffmpeg -i myfile.avi -target vcd /tmp/vcd.mpg
-hq 激活高質(zhì)量設(shè)置
-itsoffset offset 設(shè)置以秒為基準(zhǔn)的時(shí)間偏移,該選項(xiàng)影響所有后面的輸入文件。該偏移被加到輸入文件的時(shí)戳,定義一個(gè)正偏移意味著相應(yīng)的流被延遲了 offset秒。 [-]hh:mm:ss[.xxx]的格式也支持
b) 視頻選項(xiàng)
-b bitrate 設(shè)置比特率,缺省200kb/s
-r fps 設(shè)置幀頻 缺省25
-s size 設(shè)置幀大小 格式為WXH 缺省160X128.下面的簡(jiǎn)寫也可以直接使用:
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è)置頂部補(bǔ)齊的大小 像素單位
-padbottom size –padleft size –padright size –padcolor color 設(shè)置補(bǔ)齊條顏色(hex,6個(gè)16進(jìn)制的數(shù),紅:綠:蘭排列,比如 000000代表黑色)
-vn 不做視頻記錄
-bt tolerance 設(shè)置視頻碼率容忍度kbit/s
-maxrate bitrate設(shè)置最大視頻碼率容忍度
-minrate bitreate 設(shè)置最小視頻碼率容忍度
-bufsize size 設(shè)置碼率控制緩沖區(qū)大小
-vcodec codec 強(qiáng)制使用codec編解碼方式。 如果用copy表示原始編解碼數(shù)據(jù)必須被拷貝。
-sameq 使用同樣視頻質(zhì)量作為源(VBR)
-pass n 選擇處理遍數(shù)(1或者2)。兩遍編碼非常有用。第一遍生成統(tǒng)計(jì)信息,第二遍生成精確的請(qǐng)求的碼率
-passlogfile file 選擇兩遍的紀(jì)錄文件名為file
領(lǐng)取音視頻開(kāi)發(fā)資料包:音視頻流媒體高級(jí)開(kāi)發(fā)FFmpegWebRTCRTMPRTSPHLSRTP播放器
企鵝君羊994289133領(lǐng)取資料
c)高級(jí)視頻選項(xiàng)
-g gop_size 設(shè)置圖像組大小
-intra 僅適用幀內(nèi)編碼
-qscale q 使用固定的視頻量化標(biāo)度(VBR)
-qmin q 最小視頻量化標(biāo)度(VBR)
-qmax q 最大視頻量化標(biāo)度(VBR)
-qdiff q 量化標(biāo)度間最大偏差 (VBR)
-qblur blur 視頻量化標(biāo)度柔化(VBR)
-qcomp compression 視頻量化標(biāo)度壓縮(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è)置碼率控制方程 默認(rèn)tex^qComp
-rc_override override 特定間隔下的速率控制重載
-me method 設(shè)置運(yùn)動(dòng)估計(jì)的方法 可用方法有 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è)置錯(cuò)誤殘留為n 1 FF_ER_CAREFULL 缺省 2 FF_ER_COMPLIANT 3 FF_ER_AGGRESSIVE 4 FF_ER_VERY_AGGRESSIVE
-ec bit_mask 設(shè)置錯(cuò)誤掩蔽為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個(gè)運(yùn)動(dòng)矢量 僅用于mpeg4
-part 使用數(shù)據(jù)劃分 僅用于mpeg4
-bug param 繞過(guò)沒(méi)有被自動(dòng)監(jiān)測(cè)到編碼器的問(wèn)題
-strict strictness 跟標(biāo)準(zhǔn)的嚴(yán)格性
-aic 使能高級(jí)幀內(nèi)編碼 h263+
-umv 使能無(wú)限運(yùn)動(dòng)矢量 h263+
-deinterlace 不采用交織方法
-interlace 強(qiáng)迫交織法編碼 僅對(duì)mpeg2和mpeg4有效。當(dāng)你的輸入是交織的并且你想要保持交織以最小圖像損失的時(shí)候采用該選項(xiàng)??蛇x的方法是不交織,但是損失更大
-psnr 計(jì)算壓縮幀的psnr
-vstats 輸出視頻編碼統(tǒng)計(jì)到vstats_hhmmss.log
-vhook module 插入視頻處理模塊 module 包括了模塊名和參數(shù),用空格分開(kāi)
d)音頻選項(xiàng)
-ab bitrate 設(shè)置音頻碼率
-ar freq 設(shè)置音頻采樣率
-ac channels 設(shè)置通道 缺省為1
-an 不使能音頻紀(jì)錄
-acodec codec 使用codec編解碼
e)音頻/視頻捕獲選項(xiàng)
-vd device 設(shè)置視頻捕獲設(shè)備。比如/dev/video0
-vc channel 設(shè)置視頻捕獲通道 DV1394專用
-tvstd standard 設(shè)置電視標(biāo)準(zhǔn) NTSC PAL(SECAM)
-dv1394 設(shè)置DV1394捕獲
-av device 設(shè)置音頻設(shè)備 比如/dev/dsp
f)高級(jí)選項(xiàng)
-map file:stream 設(shè)置輸入流映射
-debug 打印特定調(diào)試信息
-benchmark 為基準(zhǔn)測(cè)試加入時(shí)間
-hex 傾倒每一個(gè)輸入包
-bitexact 僅使用位精確算法 用于編解碼測(cè)試
-ps size 設(shè)置包大小,以bits為單位
-re 以本地幀頻讀數(shù)據(jù),主要用于模擬捕獲設(shè)備
-loop 循環(huán)輸入流。只工作于圖像流,用于ffserver測(cè)試
最簡(jiǎn)單例子:
$ ffmpeg -i input.mp4 output.avi1. -i 輸入文件路徑2. 命令行最后是輸出文件路徑
修改視頻幀率:
$ ffmpeg -i input.avi -r 24 output.avi // 強(qiáng)制把輸出視頻文件幀率改為 24 fps:-r 幀率
截圖命令:截取一張352×240尺寸大小,格式為jpg的圖片
$ ffmpeg -i input_file -y -f image2 -t 0.001 -s 352x240 output.jpg
把視頻的前30幀轉(zhuǎn)換成一個(gè)Animated Gif
ffmpeg -i input_file -vframes 30 -y -f gif output.gif
在視頻的第8.01秒出截取230×240的縮略圖
ffmpeg -i input_file -y -f mjpeg -ss 8 -t 0.001 -s 320x240 output.jpg
每隔一秒截一張圖
ffmpeg -i out.mp4 -f image2 -vf fps=fps=1 out%d.png
每隔20秒截一張圖
ffmpeg -i out.mp4 -f image2 -vf fps=fps=1/20 out%d.png
多張截圖合并到一個(gè)文件里(2×3)每隔一千幀(秒數(shù)=1000/fps25)即40s截一張圖
ffmpeg -i out.mp4 -frames 3 -vf "select=not(mod(n,1000)),scale=320:240,tile=2x3" out.png
從視頻中生成GIF圖片
ffmpeg -i out.mp4 -t 10 -pix_fmt rgb24 out.gif
從視頻截選指定長(zhǎng)度的內(nèi)容生成GIF圖片
ffmpeg -ss 3 -t 5 -i input.mp4 -s 480*270 -f gif out.gif
轉(zhuǎn)換視頻為圖片(每幀一張圖)
ffmpeg -i out.mp4 out%4d.png
圖片轉(zhuǎn)換為視頻
ffmpeg -f image2 -i out%4d.png -r 25 video.mp4
切分視頻并生成M3U8文件
ffmpeg -i input.mp4 -c:v libx264 -c:a aac -strict -2 -f hls -hls_time 20 -hls_list_size 0 -hls_wrap 0 output.m3u8
分離視頻音頻流
ffmpeg -i input_file -vcodec copy -an output_file_video //分離視頻流ffmpeg -i input_file -acodec copy -vn output_file_audio //分離音頻流
視頻解復(fù)用
ffmpeg -i test.mp4 -vcoder copy -an -f m4v test.264ffmpeg -i test.avi -vcoder copy -an -f m4v test.264
視頻轉(zhuǎn)碼
ffmpeg -i test.mp4 -vcoder h264 -s 352*278 -an -f m4v test.264 //轉(zhuǎn)碼為碼流原始文件ffmpeg -i test.mp4 -vcoder h264 -bf 0 -g 25 -s 352-278 -an -f m4v test.264 //轉(zhuǎn)碼為碼流原始文件ffmpeg -i test.avi -vcoder mpeg4 -vtag xvid -qsame test_xvid.avi //轉(zhuǎn)碼為封裝文件 -bf B幀數(shù)目控制, -g 關(guān)鍵幀間隔控制, -s 分辨率控制
視頻封裝
ffmpeg -i video_file -i audio_file -vcoder copy -acodec copy output_file
視頻剪切
ffmpeg -i test.avi -r 1 -f image2 image.jpeg //視頻截圖ffmpeg -i input.avi -ss 0:1:30 -t 0:0:20 -vcoder copy -acoder copy output.avi //剪切視頻 -r 提取圖像頻率, -ss 開(kāi)始時(shí)間, -t 持續(xù)時(shí)間
視頻錄制
ffmpeg -i rtsp://hostname/test -vcoder copy out.avi
內(nèi)容反轉(zhuǎn)(reverse)
// For video onlyffmpeg -i input-file.mp4 -vf reverse output.mp4 // For audio and video:ffmpeg -i input-file.mp4 -vf reverse -af areverse output.mp4
為視頻添加logo
下載一個(gè)logo.jpg圖片
ffmpeg -i input2.mp4 -i logo.jpg -filter_complex overlay output_logo.mp4
右上角:
ffmpeg -i input2.mp4 -i logo.jpg -filter_complex overlay=W-w output.mp4
左下角:
./ffmpeg -i input2.mp4 -i logo.jpg -filter_complex overlay=0:H-h output.mp4
右下角:
打開(kāi)視頻,你有可能發(fā)現(xiàn)播放的圖片都是你的logo畫畫,這是因?yàn)槟阆螺d了一個(gè)過(guò)大的圖片。因?yàn)?,我們需要限制logo圖片的大小,這樣才不至于讓logo圖片占據(jù)過(guò)大。
ffmpeg -i input2.mp4 -vf "movie=logo.jpg,scale= 60: 30[watermask]; [in] [watermask] overlay=30:10 [out]" output_logo.mp4
其中,scale是用來(lái)設(shè)置寬高的。
去掉視頻的logo
語(yǔ)法:-vf delogo=x:y:w:h[:t[:show]]
x:y 離左上角的坐標(biāo)
w:h logo的寬和高
t: 矩形邊緣的厚度默認(rèn)值4
show:若設(shè)置為1有一個(gè)綠色的矩形,默認(rèn)值0。
ffmpeg -i output_logo.mp4 -vf delogo=30:10:60:30:1 output_no_logo.mp4
錄制屏幕音視頻
查看可用的音視頻設(shè)備
Linux版本
ffmpeg -devices
Windows版本
ffmpeg -list_devices true -f dshow -i dummy
只錄制音頻(Windows版本)
ffmpeg -f dshow -i audio="內(nèi)裝麥克風(fēng) (Conexant ISST Audio)" window.mp3
ffmpeg -f dshow -i audio="內(nèi)裝麥克風(fēng) (Conexant ISST Audio)" -acodec libmp3lame window.mp3
一個(gè)指定音頻格式,一個(gè)不指定
只錄制視頻(Windows版本)
ffmpeg -f dshow -i video="HP HD Camera" window.mp4
錄制音視頻(Windows版本)
ffmpeg -f dshow -i audio="內(nèi)裝麥克風(fēng) (Conexant ISST Audio)" -f dshow -i video="HP HD Camera" destop.mp4