ffmpeg 立体声通道变成两个单声道

seb*_*ian 16 audio ffmpeg audio-conversion

我想知道是否有办法将立体声分成两个单声道 wav 文件。我的第一个猜测是

ffmpeg -threads "16" -i "$2" -map 0:1:1 "$3"
Run Code Online (Sandbox Code Playgroud)

因为我的示例视频具有以下信息:

Audio
ID                                       : 2
Format                                   : AAC
Format/Info                              : Advanced Audio Codec
Format profile                           : LC
Codec ID                                 : 40
Duration                                 : 39mn 0s
Bit rate mode                            : Constant
Bit rate                                 : 256 Kbps
Channel(s)                               : 2 channels
Channel positions                        : Front: L R
Run Code Online (Sandbox Code Playgroud)

所以我有一个带有两个通道的音频流,并且想要两个单声道。起初我用 map_channel 尝试了它,但这并没有奏效,相反我收到了一条错误消息:

Syntax error, mapchan usage: [file.stream.channel|-1][:syncfile:syncstream]
Run Code Online (Sandbox Code Playgroud)

所以我用上面提到的代码再次尝试,至少 ffmpeg 做了一些事情,但结果不是我所期望的,而不是将它分解成两个单声道 wav 文件,结果是:

info.system.container = WAVE
info.system.size = 449413166 Bytes
info.system.size = 428.59 MiB
info.system.playtime = 2340.69 s
info.audio0.codec = PCM
info.audio0.desc = 
info.audio0.format_endianness = Little
info.audio0.format_sign = Signed
info.audio0.format_resolution = 16 bits
info.audio0.samprate = 48000 Hz
info.audio0.channels = 2
Run Code Online (Sandbox Code Playgroud)

再次使用两个音频通道,那么我哪里出错了?

llo*_*gan 22

使用 ffmpeg,我知道有几种方法可以将立体声转换为两个单独的单声道文件,或一个文件中的两个单声道流:

立体声转 2 个单声道输出

立体声转 2 个单声道输出

-map_channel 选项

ffmpeg -i stereo.wav -map_channel 0.0.0 left.wav -map_channel 0.0.1 right.wav
Run Code Online (Sandbox Code Playgroud)

pan 音频过滤器

ffmpeg -i stereo.wav -filter_complex \
"[0:0]pan=1|c0=c0[left]; \
 [0:0]pan=1|c0=c1[right]" \
-map "[left]" left.wav -map "[right]" right.wav
Run Code Online (Sandbox Code Playgroud)

立体声到 2 个单声道流

channelsplit 音频过滤器

立体声到 2 个单声道流

这将创建一个具有两个单独单声道流的输出文件:

ffmpeg -i input.m4a -filter_complex channelsplit out.mka
Run Code Online (Sandbox Code Playgroud)

另见


ptQ*_*tQa 2

您应该为此使用channelsplit 过滤器。-map 无法做到这一点。例如:

ffmpeg -i in.mp3 -filter_complex channelsplit out.mkv
Run Code Online (Sandbox Code Playgroud)

检查我提供的文档的链接。