FFmpeg

簡介與其他資料:
http://www.mobile01.com/topicdetail.php?f=510&t=3734550

其他範例:
http://www.mobile01.com/topicdetail.php?f=510&t=4487462

聲道編號與布局名稱


mono: FC
聲道布局名稱為 `mono`,單聲道,聲道 #0 就是 `FC`

stereo: FL+FR
聲道布局名稱為 `stereo` ,2 聲道。聲道 #0 - 1: `FL`, `FR`

5.1(side): FL+FR+FC+LFE+SL+SR
聲道布局名稱為 `5.1(side)`,6 聲道,聲道 #0 - 5: `FL`, `FR`, `FC`, `LFE`, `SL`, `SR`。

查詢各音訊布局各聲道編號


可用 `-layouts` 查詢得知更多布局:
ffmpeg -layouts

查詢音訊的聲道布局



使用 ffmpeg 讀取影片檔
ffmpeg -i movie.mkv


假設輸出結果是這樣:
```
Input #0, matroska,webm, from 'movie.mkv':
Duration: 00:40:38.08, start: 0.000000, bitrate: 21128 kb/s
Stream #0:0(eng): Video: h264 (High), yuv420p(tv, bt709, progressive), 1920x800 [SAR 1:1 DAR 12:5], 24 fps, 24 tbr, 1k tbn, 48 tbc
Stream #0:1(eng): Audio: ac3, 48000 Hz, 5.1(side), fltp, 384 kb/s
Stream #0:3(eng): Subtitle: subrip
```
由以上結果可知音訊布局是 `5.1(side)`

降混聲道 (Dwonmix)


要將聲道以混合的方式由多變少可以使用 `-ac` 選項。當設定的輸出的聲道數量數比輸入還要少時,會以混合輸入聲道的方式減少聲道。

降混 2 聲道以上至立體聲 (stereo)


使用 `-ac 2` 降混為雙聲道:
ffmpeg -i input.wav -ac 2 output.wav

特殊降混


表面上是將多個聲道降混到較少的聲道,但透多聲道的訊息被矩陣編碼給隱藏到輸出的聲道內容之中,特過支援的解碼器或與設備可以將隱藏的多聲道訊息還原回多聲道。

降混 6 聲道以上至 Dolby Pro Logic II


使用 `aresample` 過濾器提供的 `matrix_encoding` 選項降混為 DPL2。
ffmpeg -i input.wav -ac 2 -af "aresample=matrix_encoding=dplii" output.m4a"

也可使用 qaac / refalac 的自訂 matrix mixer 來處理。
qaac / refalac: http://www.mobile01.com/topicdetail.php?f=510&t=3747920

提取聲道


提取 1 個聲道為單聲道 (mono)


使用 `channelsplit` 過濾器提取第一個(#0)聲道:
ffmpeg -i input.wav -filter_complex "channelsplit=channel_layout=stereo[c0][c1]" -map "[c0]" channel_0.wav

使用 `-map_channel` 選項提取第一個(#0)聲道:
ffmpeg -i input.flac -map_channel 0.0.0 output.flac

使用 `pan` 過濾器提取第一個(#0)聲道:
ffmpeg -i input.flac -af "pan=1c|c0=c0" output.flac

使用 `pan` 過濾器提取輸入音訊的左聲道:
ffmpeg -i input.flac -af "pan=1c|FC=FL" output.flac

提取 2 個聲道為立體聲 (stereo)


使用 `pan` 過濾器提取 FL 與 FR 輸出為雙聲道:
ffmpeg -i input.wav -af "pan=stereo|c0=FL|c1=FR" output.wav

使用 `pan` 過濾器提取聲道編號0與1輸出為雙聲道:
ffmpeg -i input.wav -af "pan=stereo|c0=c0|c1=c1" output.wav

使用 `-map_channel` 提取聲道編號0與1輸出為雙聲道:
ffmpeg -i input.wav -map_channel 0.0.0 -map_channel 0.0.1 output.wav

複製聲道


要將聲道以複製的方式由少變多可以使用 `-ac` 選項。當設定的輸出的聲道數量數比輸入還要多時,會以複製輸入聲道的方式增加聲道。也可以使用 `-map_channel` 重複選取同樣的輸入聲道來得到相同的內容的新聲道。

mono → stereo


FL = input_FC
FR = input_FC

使用 `-ac` 選項:
ffmpeg -i input.wav -ac 2 output.wav

使用 `pan` 過濾器:
ffmpeg -i input.wav -af "pan=stereo|c0=c0|c1=c0" output.wav

`-map_channel` 選項:
ffmpeg -i input.wav -map_channel 0.0.0 -map_channel 0.0.0 output.wav

`amerge` 過濾器:
ffmpeg -i input.wav -filter_complex "[0:a][0:a]amerge=inputs=2[aout]" -map "[aout]" output.wav

混合聲道


stereo → stereo 兩個聲道互相混合


FL = input_FL + input_FR
FR = input_FL + input_FR

使用 `pan` 過濾器來互相混合左右聲道:
文章關鍵字
非常受用的文章,感謝分享教學
文章分享
評分
評分
複製連結

今日熱門文章 網友點擊推薦!