從ffmpeg開始探究音視頻

一边翁、搭建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?可用于指定音頻的碼率

三、常用場景

1.提取視頻流

ffmpeg -i source.mp4 -vcodec copy -an videoonly.mp4

提取視頻流到h264文件

ffmpeg -i output20.mp4 -codec copy -bsf: h264_mp4toannexb -f h264 outh264.h264

ffmpeg -i thread12.mp4 -vcodec copy -map 0:0 test.h264

提取視頻的 yuv 和 pcm 數據

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

H264視頻轉mp4:

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

2. 提取音頻流

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

3. 合并音視頻

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

4. 剪切

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括堤,輸出視頻文件碌秸;

5. 提取圖片

每一幀圖片從指定文件中

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后跟的時間單位為秒

6.拼接多個視頻到一個視頻文件中

屏幕錄制:

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

四 參考

ffmpeg一些filter用法、以及一些功能命令

How to rotate a video 180° with FFmpeg?

五 ffplay使用

用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]的旁邊.

1淑廊、用-r?參數設置幀率

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即可既控制播放速度,又控制輸出幀率坐昙。

2绳匀、用fps filter設置幀率

ffmpeg -i clip.mpg -vf fps=fps=25 clip.webm

3.碼率、文件大小

設置碼率 –b 參數

ffmpeg -i film.avi -b 1.5M film.mp4

4.音頻:-b:a?視頻:?- b:v

設置視頻碼率為1500kbps

ffmpeg -i input.avi -b:v 1500k output.mp4

5.控制輸出文件大小

-fs?(file size首字母縮寫)

ffmpeg -i input.avi -fs 1024K output.mp4

計算輸出文件大小

(視頻碼率+音頻碼率) * 時長 /8 = 文件大小K

6. 調整視頻分辨率

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

7.銳化處理

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

8.模糊

語法: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

9.覆蓋(畫中畫)

語法: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)

10.在特定時間顯示圖片

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不變

11.音頻提前或延遲N秒

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

12.音頻合成

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秒

13. 刪除logo

語法:-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

14.字幕

如果你想要一個變換的字幕,那么無疑外掛字幕是最合適的坡倔。外掛字幕格式很多種漂佩,純文本的就有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

15. 修改圖片存儲格式

ffmpeg -pix_fmts|grep rgb

ffmpeg -codecs | grep jpeg

ffmpeg -i img.png -pix_fmt rgb8 -vcodec png img_rgb8.png

16. 修改圖片分辨率

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

17. 多個mp3文件合并成一個mp3文件

一種方法是連接到一起

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.

17.屏幕錄制

使用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用法整理

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

18.ffmpeg如何移除mp3文件末尾的靜音?

使用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

則把所有的靜音全抹掉了局骤。

19.給音頻加上回音效果

ffmpeg -i input.mp3 -af aecho=0.8:0.9:1000:0.3 output.mp3

20.無緩沖播放:

ffplay -fflags nobuffer -i input.mp4

generated by?haroopad

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市暴凑,隨后出現的幾起案子峦甩,更是在濱河造成了極大的恐慌,老刑警劉巖现喳,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件凯傲,死亡現場離奇詭異,居然都是意外死亡嗦篱,警方通過查閱死者的電腦和手機冰单,發(fā)現死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來灸促,“玉大人诫欠,你說我怎么就攤上這事≡≡裕” “怎么了荒叼?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長吃度。 經常有香客問我甩挫,道長,這世上最難降的妖魔是什么椿每? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任伊者,我火速辦了婚禮,結果婚禮上间护,老公的妹妹穿的比我還像新娘亦渗。我一直安慰自己,他們只是感情好汁尺,可當我...
    茶點故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布法精。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪搂蜓。 梳的紋絲不亂的頭發(fā)上狼荞,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天,我揣著相機與錄音帮碰,去河邊找鬼相味。 笑死,一個胖子當著我的面吹牛殉挽,可吹牛的內容都是我干的丰涉。 我是一名探鬼主播,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼斯碌,長吁一口氣:“原來是場噩夢啊……” “哼一死!你這毒婦竟也來了?” 一聲冷哼從身側響起傻唾,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤投慈,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后策吠,有當地人在樹林里發(fā)現了一具尸體逛裤,經...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年猴抹,在試婚紗的時候發(fā)現自己被綠了带族。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡蟀给,死狀恐怖蝙砌,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情跋理,我是刑警寧澤择克,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站前普,受9級特大地震影響肚邢,放射性物質發(fā)生泄漏。R本人自食惡果不足惜拭卿,卻給世界環(huán)境...
    茶點故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一骡湖、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧峻厚,春花似錦响蕴、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽辖试。三九已至,卻和暖如春劈狐,著一層夾襖步出監(jiān)牢的瞬間罐孝,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工懈息, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留肾档,地道東北人。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓辫继,卻偏偏與公主長得像,于是被迫代替她去往敵國和親俗慈。 傳聞我的和親對象是個殘疾皇子姑宽,可洞房花燭夜當晚...
    茶點故事閱讀 44,976評論 2 355

推薦閱讀更多精彩內容