国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

FFmpeg常見命令行(五):FFmpeg濾鏡使用

這篇具有很好參考價值的文章主要介紹了FFmpeg常見命令行(五):FFmpeg濾鏡使用。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

前言

在Android音視頻開發(fā)中,網(wǎng)上知識點過于零碎,自學(xué)起來難度非常大,不過音視頻大牛Jhuster提出了《Android 音視頻從入門到提高 - 任務(wù)列表》,結(jié)合我自己的工作學(xué)習(xí)經(jīng)歷,我準(zhǔn)備寫一個音視頻系列blog。本文是音視頻系列blog的其中一個, 對應(yīng)的要學(xué)習(xí)的內(nèi)容是:如何使用FFmpeg命令行進行濾鏡的處理。


音視頻系列blog

音視頻系列blog: 點擊此處跳轉(zhuǎn)查看.


目錄

FFmpeg常見命令行(五):FFmpeg濾鏡使用,Android音視頻,ffmpeg,音視頻,濾鏡,ffmpeg命令行


1 FFmpeg濾鏡Filter描述格式

1.1 FFmpeg濾鏡Filter的參數(shù)排列方式

在FFmpeg中,濾鏡(Filters)是用于處理音頻和視頻流的效果和轉(zhuǎn)換的工具。濾鏡可以通過一系列的參數(shù)來配置其行為。參數(shù)排列方式在不同版本的FFmpeg中可能有所不同,但一般情況下,濾鏡的參數(shù)可以按照以下方式排列:

ffmpeg -i input.mp4 -vf filter1=value1:param1=value2,filter2=value3:param2=value4 output.mp4

在這里,-vf 是用于指定視頻濾鏡的選項,后面緊跟著一系列的濾鏡和參數(shù)。每個濾鏡及其參數(shù)都以逗號分隔。例如,假設(shè)你想要應(yīng)用一個調(diào)整亮度和對比度的濾鏡,你可以這樣寫:

ffmpeg -i input.mp4 -vf brightness=0.5:contrast=1.2 output.mp4

這里的 brightnesscontrast 是濾鏡名稱,后面的數(shù)字是對應(yīng)的參數(shù)值。參數(shù)之間使用冒號分隔。

如果一個濾鏡有多個參數(shù),你可以按照如下方式傳遞它們:

ffmpeg -i input.mp4 -vf filter_name=param1=value1:param2=value2:param3=value3 output.mp4

請注意,濾鏡的參數(shù)名和取值根據(jù)具體的濾鏡而定,不同的濾鏡可能有不同的參數(shù)要求和命名。

對于音頻濾鏡,也可以使用 -af 選項來指定,參數(shù)排列方式與視頻濾鏡類似:

ffmpeg -i input.mp3 -af filter1=value1:param1=value2,filter2=value3:param2=value4 output.mp3

需要根據(jù)你所使用的具體濾鏡的文檔來了解其參數(shù)的正確排列方式。你可以通過在命令行中運行 ffmpeg -filters 來查看所有可用的濾鏡及其參數(shù)。

總之,F(xiàn)Fmpeg的濾鏡參數(shù)排列方式是通過在 -vf(視頻濾鏡)和 -af(音頻濾鏡)選項后使用逗號分隔的鍵值對來實現(xiàn)的。


1.2 FFmpeg濾鏡Filter時間內(nèi)置變量

在FFmpeg中,濾鏡(Filters)可以使用內(nèi)置的時間相關(guān)變量來進行時間相關(guān)的操作。這些變量允許你在濾鏡處理過程中訪問和操作輸入流的時間信息。以下是一些常用的時間內(nèi)置變量:

  1. t:當(dāng)前幀的時間戳,以秒為單位。
  2. n:當(dāng)前幀的索引。
  3. pts:當(dāng)前幀的顯示時間戳(Presentation Timestamp)。
  4. prev_pts:前一幀的顯示時間戳。
  5. start_pts:輸入流的開始時間戳。
  6. prev_selected_pts:前一幀的顯示時間戳,已通過濾鏡選擇(通常與prev_pts不同,因為可能會有幀被濾鏡丟棄)。
  7. tb:時間基準(zhǔn)(timebase),用于計算時間戳。例如,如果時間基準(zhǔn)是1/90000,那么1個時間單位表示1/90000秒。

這些時間內(nèi)置變量可以在濾鏡鏈中使用,用于創(chuàng)建基于時間的效果、調(diào)整播放速度、裁剪、剪輯等操作。以下是一個簡單的示例,演示如何使用時間內(nèi)置變量來創(chuàng)建一個變速效果:

ffmpeg -i input.mp4 -vf "setpts=0.5*PTS" output.mp4

在這個示例中,setpts 濾鏡用于調(diào)整每一幀的顯示時間戳,使其變?yōu)樵瓉淼囊话?,從而實現(xiàn)視頻的兩倍速播放。


2 FFmpeg為視頻加水印

2.1 文字水印

在FFmpeg中為視頻添加文字水印,可以使用 drawtext 濾鏡。該濾鏡允許你在視頻中指定位置添加自定義文本,并且可以設(shè)置字體、顏色、大小等屬性。以下是一個基本示例:

ffmpeg -i input.mp4 -vf "drawtext=text='Your Watermark Text':x=10:y=10:fontsize=24:fontcolor=white" output.mp4

在這個示例中,drawtext 濾鏡被應(yīng)用于輸入視頻。參數(shù)解釋如下:

  • text:設(shè)置水印文本內(nèi)容。
  • xy:指定水印的位置,以像素為單位,從左上角計算。
  • fontsize:設(shè)置字體大小。
  • fontcolor:設(shè)置字體顏色。

你可以根據(jù)需要進行調(diào)整以滿足你的要求。請注意,字體和顏色的名稱、路徑等取決于你系統(tǒng)中的可用字體和顏色設(shè)置。

如果你希望水印在視頻的不同時間段內(nèi)逐漸出現(xiàn)或消失,你可以結(jié)合使用時間內(nèi)置變量來實現(xiàn)。例如,以下示例會在視頻的前5秒內(nèi)淡入水印:

ffmpeg -i input.mp4 -vf "drawtext=text='Your Watermark Text':x=10:y=10:fontsize=24:fontcolor=white:enable='between(t,0,5)'" output.mp4

在這個示例中,enable 參數(shù)用于設(shè)置水印的顯示時間范圍。在上述示例中,水印會在時間范圍為0到5秒內(nèi)逐漸淡入。


2.2 圖片水印

在FFmpeg中為視頻添加圖片水印,可以使用 overlay 濾鏡。這個濾鏡允許你將一個視頻或圖片疊加到另一個視頻上,從而實現(xiàn)水印效果。以下是一個基本的示例:

ffmpeg -i input.mp4 -i watermark.png -filter_complex "overlay=10:10" output.mp4

在這個示例中,overlay 濾鏡被用于將 watermark.png 圖片疊加到 input.mp4 視頻上。參數(shù)解釋如下:

  • overlay:指定水印的位置,以像素為單位。這里的 10:10 表示在視頻的左上角添加水印。

你可以根據(jù)需要進行調(diào)整以滿足你的要求。如果你想要水印在視頻的不同時間段內(nèi)逐漸出現(xiàn)或消失,你可以結(jié)合使用時間內(nèi)置變量來實現(xiàn),類似于之前提到的 drawtext 濾鏡的方法。

另外,你可以使用 xy 參數(shù)來進一步調(diào)整水印的位置,以及使用 alpha 參數(shù)來設(shè)置水印的透明度。以下是一個更復(fù)雜的示例:

ffmpeg -i input.mp4 -i watermark.png -filter_complex "overlay=x=main_w-overlay_w-10:y=10:alpha=0.5" output.mp4

在這個示例中,水印被放置在視頻的右上角,同時設(shè)置了透明度為0.5。


3 FFmpeg生成畫中畫

在FFmpeg中生成畫中畫效果,可以使用 overlay 濾鏡。這個濾鏡可以將一個視頻或圖片疊加到另一個視頻上,從而實現(xiàn)畫中畫效果。以下是一個生成畫中畫效果的基本示例:

ffmpeg -i background.mp4 -i overlay.mp4 -filter_complex "[0:v][1:v]overlay=10:10[out]" -map "[out]" output.mp4

在這個示例中,background.mp4 是背景視頻,overlay.mp4 是要疊加的畫中畫視頻。overlay 濾鏡將畫中畫視頻疊加到背景視頻上,并指定了疊加的位置為 (10, 10) 像素。

你可以根據(jù)需要對疊加的位置、大小、透明度等進行調(diào)整。如果你想要畫中畫在視頻的不同時間段內(nèi)逐漸出現(xiàn)或消失,你可以結(jié)合使用時間內(nèi)置變量來實現(xiàn)。

另外,你還可以通過設(shè)置 xy 參數(shù),以及使用 alpha 參數(shù)來調(diào)整疊加的位置和透明度。以下是一個更復(fù)雜的示例,生成一個放大的畫中畫效果:

ffmpeg -i background.mp4 -i overlay.mp4 -filter_complex "[0:v][1:v]overlay=x=(main_w-overlay_w)/2:y=(main_h-overlay_h)/2:zoom=2:alpha=0.5[out]" -map "[out]" output.mp4

在這個示例中,zoom 參數(shù)設(shè)置為2,使得畫中畫視頻放大兩倍,同時 alpha 參數(shù)設(shè)置為0.5,使得畫中畫具有一定的透明度。


4 FFmpeg視頻多宮格處理

要在FFmpeg中進行視頻多宮格處理,也就是將多個視頻并排或縱向排列在一個畫面中,你可以使用 tile 濾鏡。這個濾鏡可以將多個輸入視頻分割并排列在一個畫面中。以下是一個基本的示例:

ffmpeg -i input1.mp4 -i input2.mp4 -i input3.mp4 -filter_complex "[0:v][1:v][2:v]tile=3x1" output.mp4

在這個示例中,input1.mp4input2.mp4input3.mp4 是要合并的多個輸入視頻。tile 濾鏡將這三個視頻按照3列1行的形式排列在一起。

你可以根據(jù)需要進行調(diào)整,比如改變排列的行數(shù)和列數(shù),以及調(diào)整間隔等。如果輸入視頻的大小不同,你可能還需要進行尺寸調(diào)整以確保宮格處理后的輸出視頻大小是一致的。

以下是一個更復(fù)雜的示例,將四個輸入視頻按照2行2列的形式排列,并在每個視頻之間添加一些間隔:

ffmpeg -i input1.mp4 -i input2.mp4 -i input3.mp4 -i input4.mp4 -filter_complex "[0:v][1:v][2:v][3:v]tile=2x2:margin=10" output.mp4

在這個示例中,margin 參數(shù)用于設(shè)置視頻之間的間隔。


5 FFmpeg音頻流濾鏡操作

5.1 雙聲道、單聲道,雙音頻流概念

當(dāng)涉及音頻處理時,雙聲道、單聲道和雙音頻流是一些基本的概念。先簡單的介紹一下它們:

  1. 雙聲道(Stereo)
    雙聲道是一種音頻格式,它模擬了我們兩只耳朵的聽覺感受。你可以將其想象為音樂或聲音從不同的方向傳入,就像你左耳聽到的聲音可能略有不同于右耳聽到的聲音。這種分離讓你能夠更好地感知聲音的位置和空間。在雙聲道音頻中,通常會有兩個聲道,一個代表左聲道,另一個代表右聲道。這使得音頻更具層次感和立體感。
  2. 單聲道(Mono)
    單聲道是一種音頻格式,其中所有聲音都混合在一個聲道中。這意味著不會有左右聲道的分離,所有聲音都在一個平面上。你可以將其想象為聲音似乎來自于一個唯一的方向。單聲道通常用于廣播、電話等場景,因為它更簡單且易于處理。
  3. 雙音頻流
    雙音頻流是指一個視頻文件中包含兩個獨立的音頻流。這兩個音頻流可以分別是不同的聲道,例如一個用于音樂,另一個用于配音。當(dāng)你播放這樣的視頻時,你通常可以在設(shè)置中選擇要聽的音頻流,或者在播放時切換音頻流。這在多語言環(huán)境或者需要混合不同聲音的情況下非常有用。

總之,雙聲道提供了立體聲音的感覺,單聲道將所有聲音混合在一起,而雙音頻流則允許在一個視頻中包含多個獨立的音頻流。這些概念有助于我們更好地理解和處理不同類型的音頻。


5.2 雙聲道合并單聲道

在FFmpeg中,可以使用 amix 音頻濾鏡來將兩個單聲道音頻流合并成一個雙聲道音頻流。這個濾鏡允許你在時間上混合多個音頻流。以下是一個將兩個單聲道音頻合并成雙聲道音頻的示例:

ffmpeg -i input_mono1.wav -i input_mono2.wav -filter_complex "[0:a][1:a]amix=inputs=2:duration=first:dropout_transition=2" output_stereo.wav

在這個示例中,input_mono1.wavinput_mono2.wav 是兩個單聲道音頻文件。amix 濾鏡將這兩個音頻流合并成一個雙聲道音頻文件。

參數(shù)解釋如下:

  • inputs:設(shè)置輸入的音頻流數(shù)量,這里是2。
  • duration:指定合并后音頻流的持續(xù)時間,這里選擇第一個輸入流的持續(xù)時間。
  • dropout_transition:設(shè)置混合過渡的時間,這里是2秒。這個參數(shù)可以調(diào)整,以平滑地過渡從一個聲道到另一個聲道。

你可以根據(jù)需要進行調(diào)整,以適應(yīng)不同的音頻文件和要求。請注意,amix 濾鏡適用于將單聲道音頻合并成雙聲道音頻。


5.3 雙聲道提取

在FFmpeg中,可以使用 pan 音頻濾鏡來從雙聲道音頻流中提取單聲道音頻。這個濾鏡允許你調(diào)整聲道的分布,從而提取所需的聲道。以下是一個將雙聲道音頻中的左聲道提取為單聲道音頻的示例:

ffmpeg -i input_stereo.wav -filter_complex "[0:a]pan=1c|c0=c0[a]" -map "[a]" output_mono_left.wav

在這個示例中,input_stereo.wav 是一個雙聲道音頻文件。pan 濾鏡將左聲道提取為一個單聲道音頻文件。

參數(shù)解釋如下:

  • pan:指定聲道的調(diào)整。這里使用 1c|c0=c0 來提取左聲道的內(nèi)容。
  • -map:用于選擇濾鏡處理后的音頻流。

可以根據(jù)需要進行調(diào)整,以提取右聲道或者其他聲道的內(nèi)容。


5.4 雙聲道轉(zhuǎn)雙音頻流

在FFmpeg中,可以使用 channelsplit 音頻濾鏡來將雙聲道音頻流拆分為兩個獨立的音頻流,從而生成雙音頻流。以下是一個將雙聲道音頻流轉(zhuǎn)換為雙音頻流的示例:

ffmpeg -i input_stereo.wav -filter_complex "[0:a]channelsplit=channel_layout=stereo[a1][a2]" -map "[a1]" output_left.wav -map "[a2]" output_right.wav

在這個示例中,input_stereo.wav 是一個雙聲道音頻文件。channelsplit 濾鏡將左聲道和右聲道拆分為兩個獨立的音頻流。

參數(shù)解釋如下:

  • channelsplit:用于拆分聲道。
  • channel_layout:指定拆分的聲道布局。這里使用 stereo 表示雙聲道。

通過 -map 參數(shù),可以將拆分后的左聲道音頻流和右聲道音頻流分別保存到不同的輸出文件中。


5.5 單聲道轉(zhuǎn)雙聲道

在FFmpeg中,可以使用 pan 音頻濾鏡來將單聲道音頻流轉(zhuǎn)換為雙聲道音頻流。這個濾鏡可以讓你在不同的聲道中復(fù)制或調(diào)整聲音。以下是一個將單聲道音頻轉(zhuǎn)換為雙聲道音頻的示例:

ffmpeg -i input_mono.wav -filter_complex "[0:a]pan=stereo|c0=c0|c1=c0[a]" -map "[a]" output_stereo.wav

在這個示例中,input_mono.wav 是一個單聲道音頻文件。pan 濾鏡將單聲道音頻轉(zhuǎn)換為雙聲道音頻,其中左聲道和右聲道都使用單聲道音頻的內(nèi)容。

參數(shù)解釋如下:

  • pan:用于調(diào)整聲道分布。這里使用 stereo|c0=c0|c1=c0 來復(fù)制單聲道的內(nèi)容到左右聲道。

通過 -map 參數(shù),可以將處理后的雙聲道音頻流保存到輸出文件中。


5.6 兩個音頻源合并雙聲道

在FFmpeg中,可以使用 amerge 音頻濾鏡來將兩個音頻源合并成一個雙聲道音頻流。這個濾鏡用于將多個音頻流混合在一起。以下是一個將兩個音頻源合并為雙聲道音頻的示例:

ffmpeg -i input_audio1.wav -i input_audio2.wav -filter_complex "[0:a][1:a]amerge=inputs=2[a]" -map "[a]" output_stereo.wav

在這個示例中,input_audio1.wavinput_audio2.wav 是兩個音頻文件。amerge 濾鏡將這兩個音頻流混合成一個雙聲道音頻文件。

參數(shù)解釋如下:

  • amerge:用于混合音頻流。
  • inputs:指定輸入的音頻流數(shù)量,這里是2。

通過 -map 參數(shù),可以將混合后的雙聲道音頻流保存到輸出文件中。


5.7 多個音頻合并為多聲道

在FFmpeg中,可以使用 amerge 音頻濾鏡來將多個音頻合并成一個多聲道音頻流。這個濾鏡允許你將多個音頻流混合在一起,生成具有多個聲道的音頻。以下是一個將三個音頻源合并為一個三聲道音頻的示例:

ffmpeg -i input_audio1.wav -i input_audio2.wav -i input_audio3.wav -filter_complex "[0:a][1:a][2:a]amerge=inputs=3[a]" -map "[a]" output_3channel.wav

在這個示例中,input_audio1.wav、input_audio2.wavinput_audio3.wav 是三個音頻文件。amerge 濾鏡將這三個音頻流混合成一個三聲道音頻文件。

參數(shù)解釋如下:

  • amerge:用于混合音頻流。
  • inputs:指定輸入的音頻流數(shù)量,這里是3。

通過 -map 參數(shù),你可以將混合后的多聲道音頻流保存到輸出文件中。請注意,混合多個音頻為多聲道時,確保輸入的音頻文件的聲道數(shù)和聲道布局是一致的,這樣才能得到正確的多聲道音頻。


6 FFmpeg音頻音量探測

6.1 音頻音量獲得

在FFmpeg中,可以使用 volumedetect 音頻濾鏡來探測音頻的音量級別。這個濾鏡允許你獲取音頻流的音量信息,以便進一步分析或處理。以下是一個獲取音頻音量的示例:

ffmpeg -i input_audio.wav -af "volumedetect" -vn -f null /dev/null

在這個示例中,input_audio.wav 是音頻文件。volumedetect 濾鏡會分析音頻流的音量信息。

參數(shù)解釋如下:

  • -af "volumedetect":將 volumedetect 濾鏡應(yīng)用于音頻流。
  • -vn:禁用視頻流。
  • -f null /dev/null:將輸出重定向到空設(shè)備,因為我們只關(guān)心音量信息而不需要實際輸出文件。

運行命令后,你會在輸出中看到類似以下的信息:

[Parsed_volumedetect_0 @ 0x7fcb44a03dc0] mean_volume: -24.0 dB
[Parsed_volumedetect_0 @ 0x7fcb44a03dc0] max_volume: -15.0 dB
[Parsed_volumedetect_0 @ 0x7fcb44a03dc0] histogram_15db: 5
[Parsed_volumedetect_0 @ 0x7fcb44a03dc0] histogram_14db: 11

這些行中的 mean_volume 是平均音量的值,max_volume 是最大音量的值。值越小,音量越低。你可以根據(jù)需要將這些值用于進一步的音量分析或處理。

請注意,音量值是以負分貝(dB)為單位表示的。如果需要將這些值轉(zhuǎn)換為正分貝或其他音量單位,可以使用相應(yīng)的數(shù)學(xué)轉(zhuǎn)換公式。


6.2 繪制音頻波形

要在FFmpeg中繪制音頻波形,可以使用 showwaves 音頻濾鏡。這個濾鏡允許你在視頻中繪制音頻波形圖,以可視化音頻的振幅變化。以下是一個繪制音頻波形的示例:

ffmpeg -i input_audio.wav -filter_complex "[0:a]showwaves=s=1280x720:colors=red:mode=line" -frames:v 1 output_waveform.png

在這個示例中,input_audio.wav 是音頻文件。showwaves 濾鏡將在一個幀中繪制音頻波形。

參數(shù)解釋如下:

  • s=1280x720:設(shè)置波形圖的分辨率為1280x720像素。
  • colors=red:設(shè)置波形圖的顏色為紅色。
  • mode=line:設(shè)置波形圖的顯示模式為線性波形。

通過 -frames:v 1 參數(shù),你可以生成一個幀,然后將波形圖保存為輸出圖片文件 output_waveform.png。

運行命令后,你會得到一個繪制了音頻波形的圖片文件。請注意,showwaves 濾鏡提供了許多其他的參數(shù)和選項,你可以根據(jù)需要進行調(diào)整以獲得不同的波形效果。如果想要在視頻中繪制音頻波形,可以使用類似的方法,只需將濾鏡應(yīng)用到視頻流而不是圖像幀上。


7 FFmpeg為視頻加字幕

7.1 什么是ASS字幕流

ASS字幕流是一種高級的字幕格式,全名是"Advanced SubStation Alpha"。它與普通的字幕文件(如SRT格式)相比,提供了更多的樣式和特效選項,使字幕看起來更加漂亮和富有創(chuàng)意。

想象一下,你在看電影或視頻時,會出現(xiàn)在屏幕上方或下方的文字,這些文字是為了幫助你理解說話內(nèi)容或提供其他信息的。ASS字幕就是一種能夠讓這些文字變得更豐富多彩的方式。

ASS字幕流不僅可以顯示文字,還可以調(diào)整字幕的字體、顏色、大小、位置等。甚至可以為字幕添加動畫、漸變效果、陰影和描邊,讓字幕看起來更生動。這就像是在電影中添加了一層視覺效果,讓字幕更好看、更有趣。

因此,ASS字幕流是一種讓電影和視頻中的字幕更有個性、更具吸引力的方式,通過使用它,字幕可以成為視頻內(nèi)容的一部分,增加了觀眾的體驗。


7.2 ASS字幕流寫入視頻流

在FFmpeg中,要將ASS字幕流寫入視頻流,可以使用 ass 濾鏡。這個濾鏡可以將ASS字幕疊加到視頻上,使得字幕成為視頻的一部分。以下是一個將ASS字幕流寫入視頻流的示例:

ffmpeg -i input.mp4 -vf "ass=subtitle.ass" output_with_subtitles.mp4

在這個示例中,input.mp4 是視頻文件,subtitle.ass 是ASS字幕文件。ass 濾鏡將ASS字幕疊加到視頻上。

參數(shù)解釋如下:

  • subtitle.ass:指定ASS字幕文件的路徑和名稱。

你可以根據(jù)需要調(diào)整字幕的樣式、位置、字體、大小等,這些都可以在ASS字幕文件中設(shè)置。要了解更多關(guān)于ASS字幕文件的設(shè)置和樣式,你可以查閱相關(guān)的ASS字幕格式文檔。

請注意,ASS字幕文件需要符合ASS字幕格式,這種格式允許你在字幕文件中指定字幕的樣式、特效和動畫。


7.3 ASS字幕流寫入封裝容器

將ASS字幕流寫入封裝容器(例如MKV、MP4)需要使用一些特殊的選項。在FFmpeg中,可以使用 -c:s 參數(shù)來指定字幕流的編碼器,并使用 -scodec 參數(shù)來指定字幕流的編碼器類型。以下是一個將ASS字幕流寫入MKV封裝容器的示例:

ffmpeg -i input.mp4 -i subtitle.ass -c:s mov_text output_with_subtitles.mkv

在這個示例中,input.mp4 是視頻文件,subtitle.ass 是ASS字幕文件。-c:s mov_text 參數(shù)指定使用 mov_text 編碼器來寫入字幕流。

要將字幕寫入其他封裝容器,你可以更換 -c:s 參數(shù)中的編碼器類型。例如,對于MP4封裝容器,你可以使用 srt 編碼器:

ffmpeg -i input.mp4 -i subtitle.ass -c:s srt output_with_subtitles.mp4

參數(shù)解釋如下:

  • -c:s:用于指定字幕流的編碼器。
  • mov_textsrt:分別是MKV和MP4封裝容器所使用的字幕編碼器。

通過這樣的方式,可以將ASS字幕流寫入封裝容器中。?


8 FFmpeg視頻摳圖合并

摳圖合并是指將一個視頻中的某個部分(如人物、物體等)摳出,然后將其合并到另一個視頻或背景中。這通常用于實現(xiàn)特殊效果,比如把一個人物放到不同的背景中,創(chuàng)造出虛擬場景。

要在FFmpeg中實現(xiàn)視頻摳圖合并,通常需要以下步驟:

  1. 視頻摳圖:首先,你需要通過使用類似于 chromakeycolorkey 濾鏡來摳出視頻中的部分。這些濾鏡可以根據(jù)顏色信息將特定顏色范圍的區(qū)域摳出。例如,如果你要摳出一個綠色背景的人物,你可以使用 chromakey 濾鏡。
  2. 背景視頻:你需要準(zhǔn)備一個背景視頻,這是摳出的部分將要合并的地方。
  3. 合并:使用 overlay 濾鏡將摳出的部分疊加到背景視頻上。這個濾鏡可以控制疊加的位置、大小等。

以下是一個基本的示例,展示了如何將摳圖后的人物疊加到背景視頻中:

ffmpeg -i person.mp4 -i background.mp4 -filter_complex "[0:v]chromakey=green:0.1:0.2 [chroma]; [1:v][chroma]overlay[out]" -map "[out]" output_merged.mp4

在這個示例中,person.mp4 是包含綠色背景的人物視頻,background.mp4 是背景視頻。chromakey 濾鏡用于摳圖,然后使用 overlay 濾鏡將摳圖后的人物疊加到背景上。


9 FFmpeg 3D視頻處理

9.1 stereo3d處理3D視頻

在FFmpeg中,可以使用 stereo3d 濾鏡來處理3D視頻,包括將單個視頻轉(zhuǎn)換為3D格式、調(diào)整3D效果以及將3D視頻轉(zhuǎn)換回2D。以下是一些 stereo3d 濾鏡的用法示例:

  1. 將單個視頻轉(zhuǎn)換為3D格式
ffmpeg -i input.mp4 -vf "stereo3d=al:sbsl" output_3d.mp4

在這個示例中,input.mp4 是輸入視頻文件。stereo3d 濾鏡將視頻轉(zhuǎn)換為3D格式。參數(shù) al:sbsl 表示將左眼圖像放在左邊,右眼圖像放在右邊。

  1. 調(diào)整3D效果

你可以使用不同的參數(shù)來調(diào)整3D效果,例如調(diào)整眼距和視差。下面是一個示例:

ffmpeg -i input_3d.mp4 -vf "stereo3d=sbsr:eyepar=4:width=1920" output_adjusted_3d.mp4

在這個示例中,input_3d.mp4 是一個3D視頻文件。stereo3d 濾鏡使用參數(shù) sbsr 表示將右眼圖像放在左邊,eyepar 參數(shù)用于調(diào)整眼距,width 參數(shù)指定輸出視頻的寬度。

  1. 將3D視頻轉(zhuǎn)換回2D

如果你想將3D視頻轉(zhuǎn)換回2D,你可以使用以下示例:

ffmpeg -i input_3d.mp4 -vf "stereo3d=abl" output_2d.mp4

在這個示例中,input_3d.mp4 是一個3D視頻文件。stereo3d 濾鏡使用參數(shù) abl 表示只保留左眼圖像,從而將3D視頻轉(zhuǎn)換為2D。

請注意,stereo3d 濾鏡有許多不同的參數(shù),可以用于不同的3D效果和轉(zhuǎn)換。


9.2 3D圖像轉(zhuǎn)換舉例

在FFmpeg中,可以使用 stereo3d 濾鏡來處理3D圖像,包括將單個圖像轉(zhuǎn)換為3D格式、調(diào)整3D效果以及將3D圖像轉(zhuǎn)換回2D。以下是一些 stereo3d 濾鏡的用法示例:

  1. 將單個圖像轉(zhuǎn)換為3D格式
ffmpeg -i input.jpg -vf "stereo3d=al:sbsl" output_3d.jpg

在這個示例中,input.jpg 是輸入圖像文件。stereo3d 濾鏡將圖像轉(zhuǎn)換為3D格式。參數(shù) al:sbsl 表示將左眼圖像放在左邊,右眼圖像放在右邊。

  1. 調(diào)整3D效果

你可以使用不同的參數(shù)來調(diào)整3D效果,例如調(diào)整眼距和視差。下面是一個示例:

ffmpeg -i input_3d.jpg -vf "stereo3d=sbsr:eyepar=4:width=1920" output_adjusted_3d.jpg

在這個示例中,input_3d.jpg 是一個3D圖像文件。stereo3d 濾鏡使用參數(shù) sbsr 表示將右眼圖像放在左邊,eyepar 參數(shù)用于調(diào)整眼距,width 參數(shù)指定輸出圖像的寬度。

  1. 將3D圖像轉(zhuǎn)換回2D

如果你想將3D圖像轉(zhuǎn)換回2D,你可以使用以下示例:

ffmpeg -i input_3d.jpg -vf "stereo3d=abl" output_2d.jpg

在這個示例中,input_3d.jpg 是一個3D圖像文件。stereo3d 濾鏡使用參數(shù) abl 表示只保留左眼圖像,從而將3D圖像轉(zhuǎn)換為2D。

這些示例演示了如何在FFmpeg中使用 stereo3d 濾鏡來處理3D圖像,可以根據(jù)需要進行調(diào)整。


10 FFmpeg定時視頻截圖

10.1 vframe參數(shù)截取一張圖片

在FFmpeg中,可以使用 -vframes 參數(shù)來指定要截取的幀數(shù),從而截取視頻中的一張或多張圖片。以下是一個截取一張圖片的示例:

ffmpeg -i input.mp4 -vframes 1 output.jpg

在這個示例中,input.mp4 是輸入視頻文件,output.jpg 是輸出圖片文件。-vframes 1 參數(shù)表示只截取一幀,即一張圖片。

如果你想要在特定的時間點截取一張圖片,你可以使用 -ss 參數(shù)來指定時間點。例如,要在視頻的第10秒處截取一張圖片,可以這樣做:

ffmpeg -i input.mp4 -ss 00:00:10 -vframes 1 output.jpg

在這個示例中,-ss 00:00:10 參數(shù)表示從視頻的第10秒開始截取。

請注意,使用 -vframes 參數(shù)來截取圖片會非??焖?,因為它只截取指定數(shù)量的幀而不需要完整地解碼整個視頻。這使得截取圖片變得非常高效。

如果你想要截取多張圖片,只需將 -vframes 參數(shù)的值設(shè)置為所需的幀數(shù)即可。


10.2 fps濾鏡定時獲得圖片

要在特定的時間間隔內(nèi)從視頻中定時獲取圖片,可以使用 fps 濾鏡。這個濾鏡允許你以指定的幀率從視頻流中獲取幀,然后保存為圖片。以下是一個根據(jù)指定的幀率定時獲取圖片的示例:

ffmpeg -i input.mp4 -vf "fps=1/5" -vsync 0 output_%03d.jpg

在這個示例中,input.mp4 是輸入視頻文件。fps=1/5 濾鏡指定了幀率為每秒5幀,這樣就會定時每隔0.2秒從視頻中獲取一幀。-vsync 0 參數(shù)禁用了同步幀處理,以確保準(zhǔn)確的幀率。

output_%03d.jpg 表示輸出圖片的文件名,%03d 表示用三位數(shù)字來編號輸出圖片文件。這會生成類似 output_001.jpg、output_002.jpg 等的文件名。

通過這個命令,你將會定時每隔0.2秒從視頻中獲取一幀,并將其保存為圖片。你可以根據(jù)需要調(diào)整幀率、文件名模式和輸出圖片格式。

如果你需要更多的定時控制,你也可以結(jié)合使用 -ss 參數(shù)來指定起始時間點。例如,要從視頻的第10秒開始,每隔1秒獲取一幀,你可以這樣做:

ffmpeg -i input.mp4 -vf "fps=1" -ss 10 -vsync 0 output_%03d.jpg

通過調(diào)整參數(shù),你可以實現(xiàn)不同時間間隔的定時截圖操作。


11 FFmpeg生成測試元數(shù)據(jù)

11.1 FFmpeg生成音頻測試流

要在FFmpeg中生成音頻測試流,可以使用 aevalsrc 音頻濾鏡。這個濾鏡允許你生成包含特定音頻模式和聲音的音頻流。以下是一個生成音頻測試流的示例:

ffmpeg -f lavfi -i "aevalsrc=sin(400*2*PI*t):d=5" -c:a pcm_s16le output.wav

在這個示例中,aevalsrc 濾鏡用于生成一個包含正弦波的音頻流。參數(shù)解釋如下:

  • sin(400*2*PI*t):這是正弦波的表達式,其中 400 是頻率(赫茲),2*PI 是周期,t 是時間。
  • d=5:表示音頻持續(xù)時間為5秒。

通過 -c:a pcm_s16le 參數(shù),你可以指定音頻流的編碼格式為16位線性PCM。最后,將生成的音頻流保存為輸出文件 output.wav。

這個示例生成了一個包含特定頻率和持續(xù)時間的音頻測試流。


11.2 FFmpeg生成視頻測試流

要在FFmpeg中生成視頻測試流,可以使用 testsrc 視頻源濾鏡。這個濾鏡允許你生成不同類型的測試圖像和圖案,用于視頻流的測試和調(diào)試。以下是一個生成視頻測試流的示例:

ffmpeg -f lavfi -i testsrc=duration=5:size=1280x720:rate=30 output.mp4

在這個示例中,testsrc 濾鏡用于生成一個測試視頻流。參數(shù)解釋如下:

  • duration=5:表示視頻的持續(xù)時間為5秒。
  • size=1280x720:設(shè)置視頻分辨率為1280x720像素。
  • rate=30:設(shè)置視頻幀率為30幀/秒。

通過 -f lavfi 參數(shù),你可以指定輸入為lavfi(libavfilter)源。最后,將生成的視頻流保存為輸出文件 output.mp4。

這個示例生成了一個包含測試圖像的視頻測試流。你可以根據(jù)需要調(diào)整分辨率、幀率和其他參數(shù)來生成不同類型的測試圖像。 ?


12 FFmpeg對音視頻倍速處理

12.1 atempo音頻倍速處理

在FFmpeg中,你可以使用 atempo 音頻濾鏡來進行音頻的倍速處理,即加快或減慢音頻的播放速度。這個濾鏡可以用于在不改變音調(diào)的情況下調(diào)整音頻的播放速度。以下是一個使用 atempo 濾鏡的示例:

ffmpeg -i input.mp3 -filter:a "atempo=1.5" output_fast.mp3

在這個示例中,input.mp3 是輸入音頻文件。atempo=1.5 濾鏡參數(shù)表示將音頻的播放速度加快到原速度的1.5倍。

如果你想要將音頻的播放速度減慢,可以使用小于1的值,例如 atempo=0.8 表示將音頻的播放速度減慢到原速度的0.8倍。

請注意,使用 atempo 濾鏡可以改變音頻的播放速度,但不會改變音頻的音調(diào)。但是,過于快速或減慢音頻可能會導(dǎo)致音頻失真或質(zhì)量下降,所以在調(diào)整倍速時需要注意音質(zhì)。 ?


12.2 setpts視頻倍速處理

在FFmpeg中,可以使用 setpts 視頻濾鏡來進行視頻的倍速處理,即加快或減慢視頻的播放速度。這個濾鏡可以用于在不改變音頻的情況下調(diào)整視頻的播放速度。以下是一個使用 setpts 濾鏡的示例:

ffmpeg -i input.mp4 -vf "setpts=0.5*PTS" output_fast.mp4

在這個示例中,input.mp4 是輸入視頻文件。setpts=0.5*PTS 濾鏡參數(shù)表示將視頻的播放速度加快到原速度的2倍(0.5倍的PTS意味著播放速度加快為2倍)。

如果你想要將視頻的播放速度減慢,可以使用大于1的值,例如 setpts=2*PTS 表示將視頻的播放速度減慢為原速度的一半。

需要注意的是,使用 setpts 濾鏡可以改變視頻的播放速度,但不會改變音頻的播放速度。

?文章來源地址http://www.zghlxwxcb.cn/news/detail-642569.html

到了這里,關(guān)于FFmpeg常見命令行(五):FFmpeg濾鏡使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【FFmpeg】ffmpeg 命令行參數(shù) ⑤ ( 使用 ffmpeg 命令提取 音視頻 數(shù)據(jù) | 保留封裝格式 | 保留編碼格式 | 重新編碼 )

    【FFmpeg】ffmpeg 命令行參數(shù) ⑤ ( 使用 ffmpeg 命令提取 音視頻 數(shù)據(jù) | 保留封裝格式 | 保留編碼格式 | 重新編碼 )

    使用 ffmpeg 命令 從 視頻數(shù)據(jù) 中 提取 音頻數(shù)據(jù) / 視頻數(shù)據(jù) 保留封裝格式 , 封裝格式 指的就是 封裝 視頻數(shù)據(jù) 的 容器 ; 一個 mp4 格式的視頻 , 其 封裝容器 就是 mp4 容器 , 其中 封裝了 h.264 格式的視頻數(shù)據(jù) 和 aac 格式的 音頻數(shù)據(jù) ; 執(zhí)行 命令 , 從 input.mp4 輸入文件中 , 提取 音頻

    2024年03月23日
    瀏覽(65)
  • 音視頻 ffmpeg命令提取音視頻數(shù)據(jù)

    保留封裝格式 提取視頻 提取音頻 推薦一個零聲學(xué)院項目課,個人覺得老師講得不錯,分享給大家: 零聲白金學(xué)習(xí)卡(含基礎(chǔ)架構(gòu)/高性能存儲/golang云原生/音視頻/Linux內(nèi)核) https://xxetb.xet.tech/s/VsFMs

    2024年02月10日
    瀏覽(26)
  • 【FFmpeg】ffmpeg 命令行參數(shù) ⑧ ( 使用 ffmpeg 轉(zhuǎn)換封裝格式 | 音視頻編解碼器參數(shù)設(shè)置 | 視頻 幀率 / 碼率 / 分辨率 設(shè)置 | 音頻 碼率 / 采樣率 設(shè)置 )

    【FFmpeg】ffmpeg 命令行參數(shù) ⑧ ( 使用 ffmpeg 轉(zhuǎn)換封裝格式 | 音視頻編解碼器參數(shù)設(shè)置 | 視頻 幀率 / 碼率 / 分辨率 設(shè)置 | 音頻 碼率 / 采樣率 設(shè)置 )

    音視頻 文件 從 采樣 - 處理 - 得到原始數(shù)據(jù)幀隊列 - 音視頻編碼 - 音視頻包隊列 - 格式封裝 的過程如下 : 封裝格式 參考 【音視頻原理】音視頻 “ 采樣 - 編碼 - 封裝 過程 “ 和 “ 解封裝 - 解碼 - 播放 過程 “ 分析 ( 視頻采集處理流程 | 音頻采集處理流程 | 音視頻文件解封裝

    2024年04月17日
    瀏覽(101)
  • 音視頻 FFmpeg命令行搭建

    音視頻 FFmpeg命令行搭建

    以FFmpeg4.2.1 win32為例 解壓ffmpeg-4.2.1-win32-shared.zip 拷?可執(zhí)??件到C:Windows 拷?動態(tài)鏈接庫到C:WindowsSysWOW64 注:WoW64 (Windows On Windows64)是?個Windows操作系統(tǒng)的?系統(tǒng),被設(shè)計?來處理許多在32-bit Windows和64-bit Windows之間的不同的問題,使得可以在64-bit Windows中運?32-bit程序 推薦

    2024年02月13日
    瀏覽(23)
  • FFMPEG常用命令 音視頻合并

    FFMPEG常用命令 音視頻合并

    ? ? ? ? 目錄 一、音頻合并 1.獲取音頻時長 2.合并兩段音頻 3.合并音頻插入空白 二、視頻加背景圖 三、音視頻合成 1.保留視頻聲音 2.不保留視頻聲音 四、合并視頻 ????????本文將用幾個實例,介紹ffmpeg命令的綜合使用,主要涉及音頻處理、視頻處理和音視頻合成。 參數(shù)

    2024年02月10日
    瀏覽(22)
  • 音視頻 ffmpeg命令參數(shù)說明

    主要參數(shù): -i 設(shè)定輸入流 -f 設(shè)定輸出格式(format) -ss 開始時間 -t 時間長度 音頻參數(shù): -aframes 設(shè)置要輸出的音頻幀數(shù) -b:a 音頻碼率 -ar 設(shè)定采樣率 -ac 設(shè)定聲音的Channel數(shù) -acodec 設(shè)定聲音編解碼器,如果用copy表示原始編解碼數(shù)據(jù)必須被拷貝。 -an 不處理音頻 -af 音頻過濾器 視頻

    2024年02月10日
    瀏覽(24)
  • 音視頻 ffmpeg命令轉(zhuǎn)封裝

    保持編碼格式: 改變編碼格式: 修改幀率: 修改視頻碼率: 修改視頻碼率: 修改音頻碼率: 修改音視頻碼率: 修改視頻分辨率: 修改音頻采樣率: 推薦一個零聲學(xué)院項目課,個人覺得老師講得不錯,分享給大家: 零聲白金學(xué)習(xí)卡(含基礎(chǔ)架構(gòu)/高性能存儲/golang云原生/音

    2024年02月10日
    瀏覽(32)
  • Android音視頻: 引入FFmpeg

    Android音視頻: 引入FFmpeg

    本文你可以了解到 本文將介紹如何將上一篇文章編譯出來的? FFmpeg so ?庫,引入到? Android ?工程中,并驗證? so ?是否可以正常使用。 一、開啟 Android 原生 C/C++ 支持 在過去,通常使用? makefile ?的方式在項目中引入? C/C++ ?代碼支持,隨著? Android Studio ?的普及, makefile ?的

    2024年02月02日
    瀏覽(27)
  • 音視頻 ffmpeg命令分類查詢

    命令參數(shù) 內(nèi)容 -version 顯示版本 -bsfs 顯示可用比特流filter -buildconf 顯示編譯配置 -formats 顯示可用格式(muxers+demuxers) -muxers 顯示可用復(fù)用器 -demuxers 顯示可用解復(fù)用器 -codecs 顯示可用編解碼器(decoders+encoders) -decoders 顯示可用解碼器 -encoders 顯示可用編碼器 -bsfs 顯示可用比特流f

    2024年02月12日
    瀏覽(24)
  • 音視頻 ffmpeg命令視頻錄制(Windows)

    先安裝dshow軟件 Screen Capturer Recorder, 項目地址:https://sourceforge.net/projects/screencapturer/files/ 然后查看可用設(shè)備名字:ffmpeg -list_devices true -f dshow -i dummy 錄制視頻(默認(rèn)參數(shù)) 錄制聲音(默認(rèn)參數(shù)) 同時錄制聲音和視頻(默認(rèn)參數(shù)) 查看視頻錄制的可選參數(shù) 查看視頻錄制的可

    2024年02月10日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包