一边翁、搭建ffmpeg環(huán)境
總有很多人想要了解學習音視頻奴艾,卻悻悻不知改從哪里入手亿笤,今天我們就一起來揭開它神秘的面紗??翎迁。
剛一開始我們可以不用急著去編譯源碼、調試源碼净薛,那樣子會遇到困難反而會半途而廢汪榔;這里我們就直接使用命令來搭建ffmpeg環(huán)境,
mac下的命令如下:
brew install ffmpeg --with-fdk-aac --with-ffplay --with-freetype --with-libass? --with-libvorbis --with-libvpx --with-opus --with-x265
ubuntu下命令
sudo apt install ffmpeg
通過下面的命令肃拜,可以測試是否安裝成功
ffplay
-f?用于指定文件格式. 可用”ffmpeg -formats”是看能支持的文件格式
-i?用于指定輸入文件或設備名
-y?用于不用確認直接替換存在的輸出文件
-t?用于指定輸入或輸出文件的持續(xù)時間.
-ss?用于指定視頻文件從什么時間開始
-to?用于指定視頻文件在什么時間結束
-vframes number?用于指定輸出多少幀數據到輸出文件
-framerate number?用于指定輸入文件或設備的幀率
-r?用于指定輸入或輸出文件的幀率,多少幀每秒(fps)
// -re 是指按播放的速度來讀取輸入幀數據并傳輸
-s和-video_size?用于指定圖像的分辨率, 如”-video_size 640x480”
// -video_size 只能用于指定輸入文件或設備的分辨率, -s可用于指定輸入和輸出
-aspect?用于指定圖像比例. “4:3”, “16:9”
-vn?用于指定沒有視頻圖像輸出.
-vcodec codec?用于指定輸出文件使用什么編碼格式. “-vcodec copy”表示使用原文件的編碼格式, “-vcodec h264”表示使用h264編碼
-pix_fmt?用于指定輸入或輸出的圖像像素格式燃领∈看希可用”ffmpeg -pix_fmts”查看支持的像素格式.
-an?用于指定沒有聲音數據輸出
-acodec codec?指定使用的聲音編解碼器
-b?100k 用于指定輸出視頻文件的碼率為100k, 數字越大越清晰.
-b:v可用于指定視頻的碼率
-b:a?可用于指定音頻的碼率
ffmpeg -i source.mp4 -vcodec copy -an videoonly.mp4
ffmpeg -i output20.mp4 -codec copy -bsf: h264_mp4toannexb -f h264 outh264.h264
ffmpeg -i thread12.mp4 -vcodec copy -map 0:0 test.h264
ffmpeg -i in.mp4 -ss 0 -t 10 -vn -acodec pcm_s16le -f s16le -ar 44100
-ac 1 a.pcm? -ss 0 -t 10 -an -vcodec rawvideo -f rawvideo -s 640x480 -pix_fmtnv21 a.yuv
ffmpeg -i test.h264 -vcodec copy -f mp4 test.mp4
ffmpeg -i stereo25fps.mp4 -threads 6 -movflags faststart -vcodec h264 -b:v 500000 -r 25 -s 480x360 -pix_fmt yuv420p? -allow_sw 1 -acodec copy -f mp4 thread_6.mp4
(time ffmpeg -y -threads 2 -i stereo25fps.mp4 -s 320x240 out290.mp4) 2>&1 | tee 1.txt
ffmpeg -i source.mp4 -acodec copy -vn audioonly.mp4
ffmpeg -i output20.mp4 -acodec copy -vn audioonly1.m4a
ffmpeg -i output20.mp4 -acodec copy -vn audioonly2.aac
ffmpeg -i zaoshenenzhi1.ts -vn -acodec copy -absf aac_adtstoasc? zaoshenenzhi1.m4a
ffmpeg -i source1.mp4 -i audioonly.mp4 -f mp4 -map 0:0 -map 0:1 -map 1:0 -acodec aac -strict -2? -vcodec h264? mergeaudiotoanothermp4h264acc2.mp4
ffmpeg -i stereo25fps.mp4 -i h264_ape_25_44100.mp4 -map 0:0 -map 0:1 -map 1:1 stereo25fpss.mp4
注意輸入的兩個流的編碼方式 及 幀率 是否一致猛蔽;
ffmpeg -i face_aac.m4a -ab 64 stereo25fps.mp4? -ab 128 stereo25fps.mp4 -map 0:0 -map 1:0
把img.[001-100].jpg序列幀和001.mp3音頻文件利用mpeg4編碼方式合成視頻文件darkdoor.avi:
$ ffmpeg -i 001.mp3 -i img.%3d.jpg -s 1024x768 -author test -vcodec mpeg4 test.avi
ffmpeg -ss START -t DURATION -i INPUT -vcodec copy -acodec copy OUTPUT
ffmpeg -ss 00:00:00 -t 00:00:30 -i test.mp4 -vcodec copy -acodec copy output.mp4
對上面的命令稍做個解釋剥悟。
-ss?開始時間,如: 00:00:20曼库,表示從20秒開始区岗;
-t?時長,如: 00:00:10毁枯,表示截取10秒長的視頻慈缔;如果不設定,表示裁剪到文件尾
-i?輸入种玛,后面是空格藐鹤,緊跟著就是輸入視頻文件瓤檐;
-vcodec copy?和?-acodec copy表示所要使用的視頻和音頻的編碼格式,這里指定為copy表示原樣拷貝教藻;
INPUT距帅,輸入視頻文件;
OUTPUT括堤,輸出視頻文件碌秸;
每一幀圖片從指定文件中
ffmpeg -i source3.mp4 -vcodec png -pix_fmt rgba foo-%03d.png
截圖
每隔一秒截一張圖
ffmpeg -i input.flv -f image2 -vf fps=1 out%d.png
每隔20秒截一張圖
ffmpeg -i input.flv -f image2 -vf fps=fps=1/20 out%d.png
多張截圖合并到一個文件里(2x3) 每隔一千幀(秒數=1000/fps25)即40s截一張圖
ffmpeg -i jidu.mp4 -frames 3 -vf "select=not(mod(n\,1000)),scale=320:240,tile=2x3" out.png
另外,通過指定-ss悄窃,和-vframes也可以達到同樣的效果讥电。
這時候-ss參數后跟的時間有兩種寫法,hh:mm:ss?或?直接寫秒數?:
ffmpeg -i test.asf -y -f? image2? -ss 00:01:00 -vframes 1? test1.jpg
or
ffmpeg -i test.asf -y -f? image2? -ss 60 -vframes 1? test1.jpg
使用-ss參數,可以從指定的時間開始處理轉換任務.如:
ffmpeg -i test2.asf -y -f image2 -ss 08.010 -t 0.001 -s 352x240 b.jpg
那么從任意一幀截圖的問題也就解決了.只要-ss后的時間參數是隨機產生,并且在視頻的有效時間內,就可以了.
ffmpeg -ss 5 -i input.mp4 -t 10 -c:v copy -c:a copy output.mp4
上面的命令把-ss 5放到-i前面,與原來的區(qū)別是轧抗,這樣會先跳轉到第5秒在開始解碼輸入視頻恩敌,而原來的會從開始解碼,只是丟棄掉前5秒的結果横媚。 而-c:v copy -c:a copy標示視頻與音頻的編碼不發(fā)生改變纠炮,而是直接復制,這樣會大大提升速度灯蝴,因為這樣就不需要完全解碼視頻(視頻剪切也不需要完全解碼)恢口。
不透明:
ffmpeg -ss 20 -t 3 -i stereo25fps.mp4 -vf scale=300:-1 -gifflags -transdiff bbb-notrans.gif
透明:
ffmpeg -ss 20 -t 3 -i stereo25fps.mp4 -vf scale=300:-1 -gifflags +transdiff bbb-trans.gif
上面兩種動態(tài)gif都是只播一次,想讓其無限循環(huán)播穷躁,可再加一個參數:-loop_output 0耕肩。
ffmpeg? -f rawvideo? -video_size 256x256 -pixel_format yuv444p -i allcolor_xu_yv_zy_256x256_yuv444p.yuv? -vf alphaextract -pix_fmt rgba -vcodec png? alphaextract444p.mp4
alphaextract
alphamerge
截取一張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后跟的時間單位為秒
屏幕錄制:
ffmpeg -f avfoundation -framerate 30 -i "1:0" \-f avfoundation -framerate 30 -video_size 640x480 -i "0" \-c:v libx264 -preset ultrafast \-filter_complex 'overlay=main_w-overlay_w-10:main_h-overlay_h-10' -acodec aac? -ar 44100 -ac 1? -f flv flv.flv;ffplay flv.flv
音頻視頻合流
ffmpeg -i stereo25fps.mp4 -i h264_wmav2_200_15s.mp4 -filter_complex overlay=10:10 -filter_complex amix=inputs=2? h264_overlay_10_10_track2_AV_0.mp4
聲音延遲 雙聲道要同時延遲
ffmpeg -i stereo25fps.mp4 -i h264_wmav2_200_15s.mp4 -filter_complex overlay=10:10 -filter_complex "adelay=5000|5000"? h264_overlay_10_10_track2_V0_A5.mp4
amix 和 adelay 同時使用出錯
ffmpeg -i stereo25fps.mp4 -i h264_wmav2_200_15s.mp4 -filter_complex overlay=10:10 -filter_complex "[1:a]adelay=5000|5000" -filter_complex amix=inputs=2? h264_overlay_10_10_track2_V0_A5_1a.mp4
reba 透明度
ffmpeg -i stereo25fps.mp4? -i png_rgba.mp4? -filter_complex "[1]geq=r='r(X,Y)':a='0.5*alpha(X,Y)'[a]"; [0][a] overlay output2.mp4
ffmpeg \
? ? -i in1.mp4 -i in2.mp4 \
? ? -filter_complex " \
? ? ? ? [0:v]setpts=PTS-STARTPTS, scale=480x360[top]; \
? ? ? ? [1:v]setpts=PTS-STARTPTS, scale=480x360, \
? ? ? ? ? ? format=yuva420p,colorchannelmixer=aa=0.5[bottom]; \
? ? ? ? [top][bottom]overlay=shortest=1" \
? ? -acodec libvo_aacenc -vcodec libx264 out.mp4
ffmpeg -i 105moov.mp4 -i 105moov.mp4 -i mm -i 105moov.mp4 -strict -2? -filter_complex "[0:v]pad=iw*2:ih*2[a];[a][1:v]overlay=w[b];[b][2:v]overlay=0:h[c];[c][3:v]overlay=w:h" out.mp4
寬度變?yōu)?倍问潭,右邊黑邊補充 480360變?yōu)?60360 錄制10s
ffmpeg -i output20.mp4 -strict -2? -t 10 -vf pad=2*iw:ih:0:0 outputpadwidth.mp4
pad 第一個參數為 輸出視頻的width猿诸,第二個參數為height,第三四個參數為視頻左上角為原點的坐標狡忙;這里為坐標為(0梳虽,0),寬度為之前的2倍去枷,高度不變;
指定時間點合成某圖片
ffmpeg -i 105moov.mp4 -i mushroom.jpg -filter_complex "overlay=x='if(between(t,1,3),60,-500)':y=50" -f mp4 left1.mp4
源視頻水平翻轉怖辆,hflip為filter名字(vflip)
ffmpeg -i output20.mp4 -strict -2 -t 10 -vf hflip outputhflip.mp4
上下翻轉
ffmpeg -i snapshot_6.png -strict -2 -vf vflip snapshot_6_vflip.png
How to rotate a video 180° with FFmpeg?
用ffplay直接觀看結果:
ffplay -f lavfi -i testsrc -vf split[a][b];[a]pad=2*iw[1];[b]hflip[2];[1][2]overlay=w
F1: split過濾器創(chuàng)建兩個輸入文件的拷貝并標記為[a],[b]
F2: [a]作為pad過濾器的輸入删顶,pad過濾器產生2倍寬度并輸出到[1].
F3: [b]作為hflip過濾器的輸入,vflip過濾器水平翻轉視頻并輸出到[2].
F4: 用overlay過濾器把 [2]覆蓋到[1]的旁邊.
ffmpeg –i input –r fps output
上面的命令逗余,不論原始視頻幀率是多少,輸出視頻都會是30幀每秒季惩。這種情況之下視頻的時間軸不會變化录粱,不會有慢動作或快動作的效果腻格。
ffmpeg -r 30 -i input.mp4 output.mp4
上面這種條換順序之后的寫法比較有意思,-r 30放在輸入文件之前表示影響的是輸入文件啥繁,而非輸出文件菜职。(這樣子,視頻幀會變快旗闽,音頻流播放速度不變酬核,導致音視頻不同步。) 這樣的命令表達的是适室,把輸入文件當做30幀每秒嫡意,而忽略它的原始幀率。這樣如果原來的視頻FPS是25捣辆,被視作30之后蔬螟,輸出的視頻會有快進的效果。 這個命令沒有指定輸出視頻的FPS汽畴,默認會與輸入文件保持一樣旧巾,可以與本節(jié)第一個命令和在一起,寫兩個-r參數忍些,第一個指定輸入FPS鲁猩,第二個指定 輸出FPS即可既控制播放速度,又控制輸出幀率坐昙。
ffmpeg -i clip.mpg -vf fps=fps=25 clip.webm
設置碼率 –b 參數
ffmpeg -i film.avi -b 1.5M film.mp4
設置視頻碼率為1500kbps
ffmpeg -i input.avi -b:v 1500k output.mp4
-fs?(file size首字母縮寫)
ffmpeg -i input.avi -fs 1024K output.mp4
計算輸出文件大小
(視頻碼率+音頻碼率) * 時長 /8 = 文件大小K
1)炸客、用-s參數設置視頻分辨率疾棵,參數值wxh,w寬度單位是像素痹仙,h高度單位是像素
ffmpeg -i input_file -s 320x240 output_file
ffmpeg -i "480360.mp4" -pix_fmt yuv420p -vcodec h264 -vsync 1 -s 960x540 -r 25 -acodec aac -async 1 960540_2.mp4
使用視頻filter時是尔,不可以處理音頻流,故需要將其去掉开仰,提示如下所示:
Filtergraph 'scale=960x540' was defined for audio output stream 0:1 but codec copy was selected.
Filtering and streamcopy cannot be used together.
用例:
ffmpeg -i "480360.mp4" -pix_fmt yuv420p -vcodec h264 -filter scale=960x540 -an? -r 25 960540.mp4
2)拟枚、預定義的視頻尺寸
下面兩條命令有相同效果
ffmpeg -i input.avi -s 640x480 output.avi
ffmpeg -i input.avi -s vga output.avi
3) 在未知視頻的分辨率時,保證調整的分辨率與源視頻有相同的橫縱比众弓。
寬度固定400恩溅,高度成比例:
ffmpeg -i input.avi -vf scale=400:400/a
ffmpeg -i input.avi -vf scale=400:-1
相反地,高度固定300谓娃,寬度成比例:
ffmpeg -i input.avi -vf scale=-1:300
ffmpeg -i input.avi -vf scale=300*a:300
4.創(chuàng)建一個30個像素的粉色寬度來包圍一個200*200尺寸的圖片jpg
ffmpeg -i mushroom.jpg -vf pad=260:260:30:30:pink framedphtot.jpg
ffmpeg -i framedphtotp.png -vf unsharp=13:13:-2 framedphtotpunsharp.png
語法:-vf unsharp=l_msize_x:l_msize_y:l_amount:c_msize_x:c_msize_y:c_amount
所有的參數是可選的脚乡,默認值是5:5:1.0:5:5:0.0
l_msize_x:水平亮度矩陣,取值范圍3-13滨达,默認值為5
l_msize_y:垂直亮度矩陣奶稠,取值范圍3-13俯艰,默認值為5
l_amount:亮度強度,取值范圍-2.0-5.0锌订,負數為模糊效果竹握,默認值1.0
c_msize_x:水平色彩矩陣,取值范圍3-13辆飘,默認值5
c_msize_y:垂直色彩矩陣啦辐,取值范圍3-13,默認值5
c_amount:色彩強度劈猪,取值范圍-2.0-5.0昧甘,負數為模糊效果,默認值0.0
語法:boxblur=luma_r:luma_p[:chroma_r:chram_p[:alpha_r:alpha_p]]
ffplay -f lavfi -i testsrc -vf? boxblur=1:10:4:10
注意:luma_r和alpha_r半徑取值范圍是0~min(w,h)/2, chroma_r半徑的取值范圍是0~min(cw/ch)/2
語法:overlay[=x[:y]
所有的參數都是可選战得,默認值都是0
右上角
ffmpeg -i output20.mp4 -i framedphtotp.png -strict -2? -filter_complex overlay=W-w pair00.mp4
左下角:overlay=0:H-h 右下角:overlay=W-w:H-h 左上角:overlay
顯示多幅圖片(不同位置)
ffmpeg -y -i boss.mp4 -i left.png -i left.png -filter_complex "overlay=5:5,overlay=0:0" -f mp4 output.mp4
-filter_complex:使用復合濾鏡
“overlay=5:5,overlay=0:0”:第一個圖片的x充边、y坐標為(5,5),第二個為(0,0)
ffmpeg -y -i 1.avi -i 1.png -filter_complex "overlay=x='if(between(t,1,3),60,-500)':y=50" -f mp4 left1.mp4
命令行中可以使用表達式常侦,參考:http://ffmpeg.org/ffmpeg-all.html#Expression-Evaluation
具體意思是時間t在1到3秒內浇冰,圖片的x坐標為60,否則為-500(移出屏幕)聋亡,y坐標一直為50不變
ffmpeg -i ogg.ogg -i 1.avi -filter_complex "adelay=3000|3000" output.avi
-filter_complex “adelay=3000|3000”:對前面的ogg音頻的兩個聲道都延遲3000毫秒
http://ffmpeg.org/ffmpeg-all.html#adelay
ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex amix=inputs=3:duration=first:dropout_transition=3 OUTPUT
inputs=3:三個輸入
duration=first:輸出長度為第一個輸入的長度
dropout_transition=3:聲音淡出時間為3秒
語法:-vf delogo=x:y:w:h[:t[:show]]
x:y 離左上角的坐標
w:h logo的寬和高
t: 矩形邊緣的厚度默認值4
show:若設置為1有一個綠色的矩形肘习,默認值0.
ffplay -i jidu.mp4 -vf delogo=50:51:60:60:100:0
如果你想要一個變換的字幕,那么無疑外掛字幕是最合適的坡倔。外掛字幕格式很多種漂佩,純文本的就有srt, ssa, ass,二進制的有sub(DVD的外掛字幕用的是這種)罪塔。最簡單的是srt字幕投蝉,就是電影字幕那種效果。如果你想帶點效果征堪,那么只好用ass了瘩缆,很多動漫OP字幕特效用的就是ass字幕特效。
詳細參考官方文檔:?HowToBurnSubtitlesIntoVideo
ffmpeg -i pair00.mp4 -strict -2 -vf subtitles=rgb.srt outputs.mp4
rgb.srt 文件
1
00:00:00,000 —> 00:00:03,000
大家好佃蚜,我是宅鳥
2
00:00:05,000 —> 00:00:09,000
我們可以使用ffmpeg,在視頻中嵌入字幕
3
00:00:11,000 —> 00:00:15,000
http://www.cnblogs.com/duwei/p/ffmpeg_commands.html
ffmpeg -pix_fmts|grep rgb
ffmpeg -codecs | grep jpeg
ffmpeg -i img.png -pix_fmt rgb8 -vcodec png img_rgb8.png
ffmpeg -i img0.jpg -filter_complex scale=1:1 img1_1.png
http://davidaq.com/tutorial/2014/11/20/ffmpeg-commands.html
http://326301045.iteye.com/blog/2172957
一種方法是連接到一起
ffmpeg64.exe -i "concat:123.mp3|124.mp3" -acodec copy output.mp3
解釋:-i代表輸入參數
? ? ? contact:123.mp3|124.mp3代表著需要連接到一起的音頻文件
? ? ? -acodec copy output.mp3 重新編碼并復制到新文件中
另一種方法是混合到一起
ffmpeg64.exe -i 124.mp3 -i 123.mp3 -filter_complex amix=inputs=2:duration=first:dropout_transition=2 -f mp3 remix.mp3
解釋:-i代表輸入參數
-filter_complex ffmpeg濾鏡功能庸娱,非常強大,詳細請查看文檔
? ? ? amix是混合多個音頻到單個音頻輸出
? ? ? inputs=2代表是2個音頻文件谐算,如果更多則代表對應數字
? ? ? duration 確定最終輸出文件的長度
? ? ? ? ? longest(最長)|shortest(最短)|first(第一個文件)
? ? ? ? dropout_transition
The transition time, in seconds, for volume renormalization when an input stream ends. The default value is 2 seconds.
? ? ? ? -f mp3? 輸出文件格式
音頻文件截取指定時間部分
ffmpeg64.exe -i 124.mp3 -vn -acodec copy -ss 00:00:00 -t 00:01:32 output.mp3
解釋:-i代表輸入參數
? ? ? -acodec copy output.mp3 重新編碼并復制到新文件中
? ? ? -ss 開始截取的時間點
? ? ? -t 截取音頻時間長度
音頻文件格式轉換
ffmpeg64.exe -i null.ape -ar 44100 -ac 2 -ab 16k -vol 50 -f mp3 null.mp3
解釋:-i代表輸入參數
? ? ? -acodec aac(音頻編碼用AAC)
? ? ? -ar 設置音頻采樣頻率
? ? ? -ac? 設置音頻通道數
? ? ? -ab 設定聲音比特率
? ? ? -vol <百分比> 設定音量
ffmpeg -i face_mp3.mp3 -ar 44100 -ac 2 -ab 1413 -acodec pcm_s16be -f caf o.caf
ffmpeg -i in.mov -vf "transpose=1" out.mov
轉置的參數文件熟尉,可以使用:
0 = 90CounterCLockwise and Vertical Flip (default)
1 = 90Clockwise
2 = 90CounterClockwise
3 = 90Clockwise and Vertical Flip
slice 線程個數
ffmpeg -i stereo25fps.mp4 -threads 12 outputT12.mp4
-threads:1 4將會把第二個流的線程數設置為 4.
使用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,將保存到用戶主目錄中
如果你只想錄制一個應用程序窗口或者桌面上的一個固定區(qū)域腮考,那么可以指定偏移位置和區(qū)域大小雇毫。使用xwininfo -frame命令可以完成查找上述參數。
重新調整視頻尺寸大小
ffmpeg -vcodec mpeg4 -b 1000 -r 10 -g 300 -i ~/test.avi -s 800×600 ~/test-800-600.avi
注:ffmpeg的屏幕錄制功能只能在Linux環(huán)境下有效踩蔚。
視頻采集
把攝像頭的實時視頻錄制下來棚放,存儲為文件
ffmpeg? -f video4linux -s 320*240 -r 10 -i /dev/video0? test.asf
ffmpeg -i face_pcm_s16be.caf -i message_pcm_s16be.caf -filter_complex amix=inputs=2:duration=longest:dropout_transition=2? -ab 12.2k -ar 8000 -ac 1 1_2.mp3
ffmpeg -i face_pcm_s16le.wav -i aac_vorbis30.wav -filter_complex "amovie=1.wav [l]; amovie=2.wav [r]; [l] [r] amerge"? 1_2_amerge.mp3
ffmpeg -i message_pcm_s16be.caf -i message_pcm_s16be.caf -filter_complex amix=inputs=2:duration=longest:dropout_transition=2? -ab 14.1k -ar 44100 -ac 2 1_1.mp3
ffmpeg -ss 00:00:18.300 -i music.mp3 -loop 1 -i bg.mp4 -i ac%d.png -i dust.mp4 -filter_complex "[1:0]scale=1600:ih*1200/iw, crop=1600:900[a];[a][2:0] overlay=0:0[b]; [3:0] scale=1600:ih*1600/iw, crop=1600:900,setsar=1[c]; [b][c] blend=all_mode='overlay':all_opacity=0.2" -shortest -y output.mp4
Declaring the inputs:
ffmpeg -ss 00:00:18.300 -i music.mp3 -loop 1 -i bg.mp4 -i ac%d.png -i dust.mp4
Adding the filter complex. First part: [1,0] is the second element of the inputs (bg.mp4) and scaling to get the max values, and then cropping with the size I need, the result of this opperation, is in the [a] element.
[1:0]scale=1600:ih*1600/iw, crop=1600:900, setsar=1[a];
Second Part: Put the PNGs sequence over the resized video (bg.mp4, now [a]) and saving the resunt in the [b] element.
[a][2:0] overlay=0:0[b];
Scaling and cropping the fourth input (overlay.mp4) and saving in the [c] element.
[3:0]scale=1600:ih*1600/iw, crop=1600:900,setsar=1[c];
Mixing the first result with the overlay video with an “overlay” blending mode, and with an opacity of 0.1 because the video has gray tones and makes the result so dark.
[b][c] blend=all_mode=’overlay’:all_opacity=0.1
使用ffmpeg的silenceremove濾鏡移除MP3文件首尾的靜音馅闽,文件開頭的靜音能夠移除飘蚯,但文件末尾的一直沒處理好
ffmpeg -i a.mp3 -af silenceremove=1:0:-50dB:1:0:-50dB out.mp3
采用上面的命令,結果把從中間靜音開始到末尾的音頻都抹掉了福也。
如果是 ffmpeg -i a.mp3 -af silenceremove=1:0:-50dB:-1:0:-50dB out.mp3
則把所有的靜音全抹掉了局骤。
ffmpeg -i input.mp3 -af aecho=0.8:0.9:1000:0.3 output.mp3
ffplay -fflags nobuffer -i input.mp4
generated by?haroopad