偶遇FFmpeg(二)——常用命令

下面來熟悉一下常用的對視頻操作的幾個命令。這次需要完成的命令也包括在其中。

視頻的畫面大小的剪切(crop filter)

將輸入的視頻的幀,以左上角為坐標(biāo)的原點,剪切成x,y坐標(biāo)開始的指定大小。
語法:

# []包裹的選項是可選的
crop= ow[:oh[:x[:y[:keep_aspect]]]]
?#example
?ffmpeg -i input -vf crop=iw/3:ih:0:0 output
 ffmpeg -i input -vf crop=iw/3:ih:iw/3:0 output
ffmpeg -i input -vf crop=iw/3:ih:iw/3*2:0 output

簡單的解釋:

  • x,y :是偏移量。
  • ow,oh :是輸出的寬和高。
  • iw ih :還可以使用來表示輸入的寬和高
  • a: 表示比例 ,和 iw/ih 一樣

如果想從中間開始剪切,命令就編程了

ffmpeg -i input_file -vf crop=w:h output_file

視頻的Padding(應(yīng)該是增加內(nèi)邊距)(pad filter)

給視頻添加一個內(nèi)邊距。通常是視頻需要在不同顯示比例的畫面中顯示時,需要的命令。
語法:

#[]中的同樣是可選的#坐標(biāo)系與之前相同pad=width[:height[:x[:y[:color]]]]?
#example
ffmpeg -i photo.jpg -vf pad=860:660:30:30:pink frame_photo.jpg
增加內(nèi)邊距.png

更常用的是將4:3的畫面轉(zhuǎn)換成16:9

# 如果不給color的話。默認(rèn)將會是黑色的背景
# 將畫面從4:3 切換成16:9
ffmpeg -i input -vf pad=ih*16/9:ih:(ow-iw)/2:0:color output
# 16:9 轉(zhuǎn)換成 4:3
ffmpeg -i input -vf pad=iw:iw*3/4:0:(oh-ih)/2:color output

其實標(biāo)準(zhǔn)的公式如下

# ar是畫面的比例。如果是增加畫面的寬度,則是
ffmpeg -i input -vf pad=ih*ar:ih:(ow-iw)/2:0:color output
# 如果是增加畫面的高度,則是
ffmpeg -i input -vf pad=iw:iw*ar:0:(oh-ih)/2:color output

翻轉(zhuǎn)和旋轉(zhuǎn)視頻(flip filter)

對視頻進(jìn)行翻轉(zhuǎn)和旋轉(zhuǎn)
語法:

#水平翻轉(zhuǎn)(Horizontal flip)
-vf hfilp
#豎直翻轉(zhuǎn)(Vertical flip)
-vf vfilp
# 旋轉(zhuǎn) 
#0 - 逆時針旋轉(zhuǎn)+豎直翻轉(zhuǎn)
#1- 順時針旋轉(zhuǎn) 90
#2- 逆時針旋轉(zhuǎn) 90
#3- 順時針旋轉(zhuǎn)90 + 豎直的翻轉(zhuǎn)
transpose={0,1,2,3}

模糊、銳化和其他添加噪點的濾鏡

模糊濾鏡

  • boxblur
語法:
# r=radius p=powerboxblur=luma_r:luma_p[:chroma_r:chroma_p[:alpha_r:alpha_p]]
#example
ffmpeg -i input.mpg -vf boxblur = 1.5:1 output.mp4
  • smartblur
#t = threashold
smartblur = luma_r:luma_s:luma_t[:chroma_r:chroma_s:chroma_t]
#example
ffmpeg -i halftone.jpg -vf smartblur= 5:0.8:0 blurred_halftone.png
模糊.png

銳化

濾鏡的名稱竟然是 unsharp

語法:

l_msize_x:l_msize_y:l_amount:c_msize_x:c_msize_y:c_amount
#all parameters are optional, if not set, the default is 5:5:1.0:5:5:0.0

默認(rèn)的明亮度矩陣是5x5 而明亮度(luma)的效果強(qiáng)度是1.0.如果想創(chuàng)造高斯模糊的效果的話,可以使用一個負(fù)數(shù)的明亮度或者是濃度(chroma)

#高斯模糊的效果
ffmpeg -i input -vf unsharp= 6:6:-2 output.mp4

下面4張圖是NASA的拍攝的圖片。

  1. 是原圖。
  2. -vf unsharp
  3. -vf unsharp=6:6:3
  4. -vf unsharp = 6:6:-2
銳化和高斯模糊對比.png

有部分降噪的fliter暫且略過

覆蓋(Overlay)

可以實現(xiàn)畫中畫的功能。這里只是簡單的覆蓋的實例,更加復(fù)雜的例子需要在后面的進(jìn)階單元里看到。
語法:

overlay[=x:y[[:rgb={0,1}]]
# x,y是可選的。默認(rèn)參數(shù)是0 # rgb 也是可選的。它的值是 0或者1

命令行的構(gòu)成

ffmpeg -i input1 -i input2 -filter_complex overlay=x:y output

這里需要注意是的 filter_complex 來替代-vf,因為有兩個輸入源。但是如果使用flitergraph和 link labels.這樣我們就可以使用 movie 視頻源,囊括第二輸入和使用-vf

# 使用 movie 和 -vf
ffmpeg -i input1 -vf movie=input2[logo];[in][logo] overlay=x:y output?#Logo in top-left corner
ffmpeg -i pair.mp4 -i logo.png -filter_complex overlay pair1.mp4
左上角
# Logo in top-right corner
#W 表示輸入的視頻的width w表示圖片的寬度
ffmpeg -i pair.mp4 -i logo.png -filter_complex overlay=W-w pair2.mp4
右上角
#Logo in bottom-right corner
ffmpeg -i pair.mp4 -i logo.png -filter_complex overlay=W-w:H-h pair3.mp4
右下角

添加文字到視頻上

video filter:drawtext
語法:

drawtext=fontfile = font_f:text=text1[:p3=v3[:p3=v4[...]]]?
#最簡單的example就是。 此時需要注意的是,這個字體文件必須在當(dāng)前目錄下
ffmpeg -i input -vf drawtext=fontfile=arial.ttf:text=Welcome output

混音

amerge

ffmpeg -y -i  video_bgm.mp4 -i  src2.aac -filter_complex [0:a][1:a]amerge=inputs=2[a] -map 0:v -map [a] -c:v copy -c:a aac -ac 2 -shortest after_compose3.mp4

amix

ffmpeg -i test.aac -i test.mp3 -filter_complex amix=inputs=2:duration=first:dropout_transition=2  mix.aac

參數(shù)

-shortest 取最短的時長
-shortest : duration = MIN(inputs)
  • 實例:
ffmpeg -i test.mp4 -i test.mp3 -vcodec copy -acodec aac -map 0:v:0 -map 1:a:0 -shortest mix_test.mp4
調(diào)節(jié)音量(整體調(diào)節(jié))
ffmpeg -i test.mp4 -i test.mp3 -vcodec copy -acodec aac -map 0:v:0 -map 1:a:0 -vol 60 mix_test.mp4
設(shè)置時長(amix )

amix : setup duration

ffmpeg -i test.mp4 -i test.mp3 -filter_complex "[0:a][1:a]amix=inputs=2:duration=first[aout]" -map "[aout]" -c:v copy -map 0:v:0 mix_amerge.mp4
調(diào)節(jié)音量(amix)
ffmpeg -i test.mp4 -i test.mp3 -filter_complex "[0:a]aformat=sample_fmts=fltp:sample_rates=44100:channel_layouts=stereo,volume=0.9[a0]; [1:a]aformat=sample_fmts=fltp:sample_rates=44100:channel_layouts=stereo,volume=0.5[a1]; [a0][a1]amix=inputs=2:duration=first[aout]" -map "[aout]" -ac 2 -c:v copy -map 0:v:0 mix_amerge.mp4

未完待續(xù)....

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 整體的目標(biāo) [ ] 完成將多張圖片轉(zhuǎn)換成視頻。并添加背景音樂的任務(wù)。 [ ] 完成將音頻混音到視頻中的任務(wù)。 [ ...
    deep_sadness閱讀 1,803評論 1 9
  • 躬身捧一掬清泉 映在水里淺笑的模樣 半熟少女 素色的裙擺飄逸 閃亮 中考與高考依舊要開始了 倒計時嗎 為了明天的微...
    夏蟲的晚風(fēng)疏閱讀 279評論 13 19
  • 從去年開始我就注意到紫金港圖書館門前的柚子,大大的,那個時候就好想上去摘一個,不是為了吃而是為了一種樂趣。我斜著眼...
    天驕獨霸閱讀 447評論 12 9
  • 僕がずっと前から思ってる事を話そうか 友達(dá)に戻れたらこれ以上はもう望まないさ 君がそれでいいなら僕だってそれで構(gòu)わ...
    澤木閱讀 286評論 0 0
  • 第一部分—學(xué)習(xí)材料如何做資產(chǎn)配置 【學(xué)習(xí)目標(biāo)】:學(xué)習(xí)材料,掌握資產(chǎn)配置的基礎(chǔ)方法:50-50法,理解動態(tài)再平衡的概...
    朱進(jìn)偉西農(nóng)閱讀 534評論 0 4