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)
要將聲道以混合的方式由多變少可以使用 -ac
選項。當設定的輸出的聲道數量數比輸入還要少時,會以混合輸入聲道的方式減少聲道。
使用 -ac 2
降混為雙聲道:
ffmpeg -i input.wav -ac 2 output.wav
表面上是將多個聲道降混到較少的聲道,但透多聲道的訊息被矩陣編碼給隱藏到輸出的聲道內容之中,特過支援的解碼器或與設備可以將隱藏的多聲道訊息還原回多聲道。
使用 aresample
篩選器提供的 matrix_encoding
選項降混為 DPL2:
ffmpeg -i input.wav -ac 2 -af "aresample=matrix_encoding=dplii" output.m4a"
使用 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
使用 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
重複選取同樣的輸入聲道來得到相同的內容的新聲道。
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
FL = input_FL + input_FR
FR = input_FL + input_FR
使用 pan
篩選器來互相混合左右聲道:
ffmpeg -i input.wav -af "pan=stereo|c0<c0+c1|c1<c0+c1" output.flac
如果要把兩個雙聲道(stereo)音訊混合為一個雙聲道音訊,可以使用以下這兩種做法。
FL = input0_FL + input1_FL
FR = input0_FR + input1_FR
amerge
篩選器 → pan
篩選器:
ffmpeg -i input0.wav -i input1.wav -filter_complex "[0:a][1:a]amerge=inputs=2,pan=stereo|c0<c0+c2|c1<c1+c3[aout]" -map "[aout]" output.flac
amerge
篩選器 → -ac
選項:
ffmpeg -i input0.wav -i input1.wav -filter_complex "[0:a][1:a]amerge=inputs=2[aout]" -map "[aout]" -ac 2 output.flac
FL = input0_FL + input0_FR
FR = input1_FL + input1_FR
amerge
篩選器 → pan
篩選器:
ffmpeg -i input0.wav -i input1.wav -filter_complex "[0:a][1:a]amerge=inputs=2,pan=stereo|c0<c0+c1|c1<c2+c3[aout]" -map "[aout]" output.flac
FL = input0_FR
FR = input0_FL
使用 -map_channel
選項來交換聲道位置:
ffmpeg -i stereo.flac -map_channel 0.0.1 -map_channel 0.0.0 output.wav
使用 pan
篩選器來交換聲道位置:
ffmpeg -i stereo.ogg -af "pan=stereo|c0=c1|c1=c0" output.wav
使用 pan
篩選器,將目標聲道乘以零已得到即可得到一個靜音的聲道。或者是使用 -map_channel
選取需要的聲道再用選取 -1
代表一個靜音聲道。
FL = 0
FR = input0_FR
使用 -map_channel -1
將輸入雙聲道的左聲道靜音:
ffmpeg -i stereo.wav -map_channel -1 -map_channel 0.0.1 output.wav
使用 pan
篩選器將輸入雙聲道的左聲道靜音:
ffmpeg -i stereo.ogg -af "pan=stereo|c0=0*c0|c1=c1" output.wav
如果要分割每個聲道為單聲道音訊串流,可以使用 channelsplit
/ pan
篩選器來做到這點。
使用 channelsplit
篩選器分割 6 聲道輸出為個別個音軌:
ffmpeg -i input.flac -filter_complex channelsplit=channel_layout=stereo output.mka
使用 -map_channel
選項分割 6 聲道輸出為個別個音軌:
ffmpeg -i input.flac -map 0:0 -map 0:0 -map 0:0 -map 0:0 -map 0:0 -map 0:0 -map_channel 0.0.0:0.0 -map_channel 0.0.1:0.1 -map_channel 0.0.2:0.2 -map_channel 0.0.3:0.3 -map_channel 0.0.4:0.4 -map_channel 0.0.5:0.5 output.mka
使用 pan
篩選器分割6聲道輸出為個別個音軌:
ffmpeg -i input.flac -filter_complex "[0:a:0]pan=1c|c0=c0[a0],[0:a:0]pan=1c|c0=c1[a1],[0:a:0]pan=1c|c0=c2[a2],[0:a:0]pan=1c|c0=c3[a3],[0:a:0]pan=1c|c0=c4[a4],[0:a:0]pan=1c|c0=c5[a5]" -map "[a0]" -map "[a1]" -map "[a2]" -map "[a3]" -map "[a4]" -map "[a5]" output.mka
使用 channelsplit
篩選器分割 6 聲道輸出為個別檔案:
ffmpeg -i input.wav -filter_complex "channelsplit=channel_layout=5.1[c0][c1][c2][c3][c4][c5]" -map "[c0]" channel_0.wav -map "[c1]" channel_1.wav -map "[c2]" channel_2.wav -map "[c3]" channel_3.wav -map "[c4]" channel_4.wav -map "[c5]" channel_5.wav
使用 -map_channel
分割 6 聲道輸出為個別檔案:
ffmpeg -i input.flac -map_channel 0.0.0 channel_0.wav -map_channel 0.0.1 channel_1.wav -map_channel 0.0.2 channel_2.wav -map_channel 0.0.3 channel_3.wav -map_channel 0.0.4 channel_4.wav -map_channel 0.0.5 channel_5.wav
使用 pan
篩選器分割 6 聲道分割輸出為個別檔案:
ffmpeg -i input.flac -filter_complex "[0:a:0]pan=1c|c0=c0[c0],[0:a:0]pan=1c|c0=c1[c1],[0:a:0]pan=1c|c0=c2[c2],[0:a:0]pan=1c|c0=c3[c3],[0:a:0]pan=1c|c0=c4[c4],[0:a:0]pan=1c|c0=c5[c5]" -map "[c0]" channel_0.wav -map "[c1]" channel_1.wav -map "[c2]" channel_2.wav -map "[c3]" channel_3.wav -map "[c4]" channel_4.wav -map "[c5]" channel_5.wav
如果合併多個單聲道為為一個多聲道串流,可以使用 amerge
篩選器來做到這點。
2 × mono → stereo:
ffmpeg -i left.wav -i right.wav -filter_complex "[0:a][1:a]amerge=inputs=2[aout]" -map "[aout]" output.wav
6 × mono → 5.1:
ffmpeg -i front_left.wav -i front_right.wav -i front_center.wav -i lfe.wav -i back_left.wav -i back_right.wav -filter_complex "[0:a][1:a][2:a][3:a][4:a][5:a]amerge=inputs=6[aout]" -map "[aout]" output.wav
ffmpeg
初始化硬體裝置 **範例:**z 列出 FFmpeg 支援的硬體裝置類型: ffmpeg -hide_banner -init_hw_device list 注意:實際可用類型取決於硬體與合適的驅動程式。 初始化一個新的 OpenCL 類型的硬體裝置並命名為 gpu:
Oct 17, 2023簡介 使用 FFmpeg 編碼輸出標準 DVD-Video 教學,此文僅供參考與學習 FFmpeg 用法。 實際製作標準 DVD 視訊影片推薦使用以下軟體: TMPGEnc Authoring Works (付費,高自訂性、多樣式) VSO DVD Converter (付費,高易用性) DVDStyler (免費) 由於 DVD Video 是很老舊的標準了,如果你有藍光播放機,只是需要將影片燒錄到 DVD 上,建議可以考慮 AVCHD 格式,同一張 DVD 光碟片可以燒錄畫質更高的 720p AVCHD 格式影片。
Jun 15, 2022簡介 FFmpeg 的優點就是集各種工具為一身,Demuxer (多工解訊器 / 分離器)、Decoder (解碼器)、Filter (篩選器 / 濾鏡)、Encoder (編碼器)、Muxer (多工器 / 合成器),而且 FFmpeg 支援的輸入/輸出格式非常多,單一工具就可以解決大部分問題。使用方便,消耗資源低,執行效率高,支援格式種類多,大多數情況可以一次處裡完畢輸出成品,不需要建立暫存檔,節省時間與磁碟容量。 說明檔 說明檔 官方說明檔 下載
Jul 12, 2021簡介 如果你的播放設備不支援字幕 (softsub, 也就是封裝在影片內的字幕) ,你就要重新編碼視訊將字幕烙印在畫面上 (hardsub),播放時一定有字幕,因為字幕是烙印在畫面上,只要有畫面就有字幕。 字幕篩選器 要將字幕烙印至影像上做成 Hardsub 必須使用到 libass (subtitles 篩選器),ffmpeg 的 configuration 如果含有 --enable-libass 則代表 libass 是可用的。 要將字幕烙印至影像上,必須要重新編碼視訊才可以,所以不能使用 -codec:v copy 、 -c:v copy 、 -vcodec copy 來複製視訊串流。注意,subtitles filter 只能指定輸入字幕檔名,無法指定路徑,所以必須將字幕檔放置在工作目錄下。 將 ASS 字幕做成 Hardsub:
Jul 12, 2021or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up