3、FFmpeg 过滤器
FFmpeg 過濾器
在編碼之前,FFmpeg 可以使用 libavfilter 庫中的過濾器處理原始音頻和視頻幀。幾個鏈式過濾器行程一個過濾圖像。
FFmpeg中的filter包含三個層次,filter -> filterchain -> filtergraph。
在多媒體處理中,filter的意思是被編碼到輸出文件之前用來修改輸入文件的內容到一個軟件工具。如:視頻翻轉、旋轉、縮放等。
1、filter
在簡單過濾器中,只包含一個輸入和一個輸出,并且輸入輸出是同一類型。在下面的處理過程中,僅僅是在解碼和編碼之前加上了一個額外的過濾步驟。簡單過濾器有 per-stream-filter 參數(視頻為-vf, 音頻為-af)配置。
(1)視頻過濾器 -vf
# 如testsrc視頻按順時針方向旋轉90度 ffplay -f lavfi -i testsrc -vf transpose=1# 如testsrc視頻水平翻轉(左右翻轉) ffplay -f lavfi -i testsrc -vf hflip(2)音頻過濾器 -af
# 實現慢速播放,聲音速度是原始速度的50% ffplay p629100.mp3 -af atempo=0.52、filterchain
filterchain 不是簡單的將線性操作鏈應用于一個流(上面的簡單過濾器便是如此)。例如,當圖形有多個輸入和/或輸出,或者當輸出流類型與輸入不同時,就是這種情況。
基本用法:
Filterchain = 逗號分隔的一組filter“filter1,filter2,filter3,…filterN-2,filterN-1,filterN”順時針旋轉90度并水平翻轉:
ffplay -f lavfi -i testsrc -vf transpose=1,hflip復雜的過濾器圖使用-filter_complex選項進行配置。 請注意,此選項是全局性的,因為復雜的過濾器圖形本質上不能與單個流或文件明確關聯。-lavfi選項等同于-filter_complex。
3、filtergraph
基本語法:
Filtergraph = 分號分隔的一組filterchain 語法: “filterchain1;filterchain2;…filterchainN-1;filterchainN”Filtergraph的分類:
- 1、簡單(simple)一對一
- 2、負責(complex)多對一,多對多
一個復雜的過濾器圖的一個簡單的例子是覆蓋過濾器,它有兩個視頻輸入和一個視頻輸出,包含一個視頻疊加在另一個上面。 它的音頻對應是amix濾波器。
4、經典的 filter
(1)音頻 filter
| adelay | 實現不同聲道的延時處理。使用參數如adelay=1500|0|500,這個例子中實現了第一個聲道的延遲 1.5 |
| aecho | 實現回聲效果 |
| amerge | 將多個音頻流合并成一個多聲道音頻流 |
| ashowinfo | 顯示每一個 audio frame 信息 |
| pan | 特定聲道處理,比如立體聲變為單聲道,或者通過特定參數修改聲道或交換聲道。主要有兩大類: 混音處理,比如下面的例子pan=1c|c0=0.9*c0+0.1*c1,實現立體聲到單聲道的變換; 聲道變換,比如5.1聲道順序調整,pan=“5.1 | c0=c1 | c1=c0 | c2=c2 | c3=c3 | c4=c4 | c5=c5” |
| silencedetech 和 silenceremove | 根據特定參數檢測靜音和移除靜音 |
| volume 和 volumedetect | 這兩個filter分別實現音量調整和音量檢測 |
(2)視頻 filter
| blend tblend | 將兩幀視頻合并為一幀 |
| crop | 按照特定分辨率裁剪輸入視頻 |
| drawbox drawgrid drawtext | 繪制 box(對話框) grid(表格) text(文本) |
| fps | 按照指定幀率輸出視頻幀(丟幀或復制) |
| hflip vflip | 水平和垂直鏡像 |
| overlay | 視頻疊加 |
| rotate | 視頻任意角度旋轉 |
| showinfo | 顯示視頻的參數信息,比如時間戳,采樣格式,幀類型等 |
| subtitles | 使用 libass 庫繪制 subtitle(字幕) |
| transpose | 圖像轉置 |
| scale | 使用 libswscale 庫完成視頻縮放 |
| thumbnail | 提取縮略圖 |
(3)多媒體 filter
| ahistogram | 將音頻轉換為視頻輸出,并顯示為音量的直方圖 |
| concat | 將音頻流、視頻流拼接成一個 |
| metadata ametadata | 操作 metadata 信息 |
| setpts asetpts | 改變輸入音頻幀或視頻幀的 pts |
| showfreqs showspectrum showspertrumpic showvolume showwaves | 將輸入音頻轉換為視頻顯示,并顯示頻譜、音量等信息 |
| split asplit | 將輸入切分為多個相同的輸出 |
| movie amovie | |
| 從 movie 容器中讀取音頻或視頻 |
總結
以上是生活随笔為你收集整理的3、FFmpeg 过滤器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 生成中文字符乱码,java汉字
- 下一篇: 怎么查二手华为手机价格