使用 ffmpeg 将 5.1 转换为单声道

使用 ffmpeg 将 5.1 转换为单声道

我有一个带有音频 5.1 的 mp4 文件,我想使用 FFmpeg 将其设置为默认单声道。

以下是编解码器信息:

 Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf56.40.101
  Duration: 01:59:51.99, start: 0.021333, bitrate: 2450 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 2317 kb/s, 24 fps, 24 tbr, 12288 tbn, 48 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, 5.1, fltp, 127 kb/s (default)
    Metadata:
      handler_name    : SoundHandler

我的目标是保持视频原样,并将音频默认为单声道,音频的输出编解码器应该是

Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, mono, fltp, 127 kb/s (default)

我试过:

ffmpeg -i "my_file.mp4" -strict -2 -c:v copy -c:a copy -map 0:v:0 -map 0:a:1 output.mp4

答案1

解释:

-c:a copy您在命令中指定,这将只复制音频流而不进行转换。-map也只选择. 音频溪流例如,视频容器中有第二种语言,或者评论员音轨。

你正在寻找的是可以转换的东西频道音频。


根据ffmpeg 文档您可以使用标志对音频通道进行混合-ac <channels>

5.1 转立体声

ffmpeg -i 6channels.wav -ac 2 stereo.wav

此示例将环绕声文件转换为立体声。但我们想要单声道音频。


立体声转单声道

ffmpeg -i stereo.flac -ac 1 mono.flac

看来,指定-ac 1应该一次性获得所需的结果。


例子:

从具有 5.1 音频通道的视频开始:

$- mediainfo output_surround.mkv
...
Bit rate mode                            : Constant
Bit rate                                 : 384 kb/s
Channel(s)                               : 6 channels
Channel layout                           : L R C LFE Ls Rs
Sampling rate                            : 48.0 kHz
...

ffmpeg使用我们发现的选项运行:

ffmpeg -i output_surround.mkv  -c:v copy -ac 1 output_mono.mkv

你剩下一个单声道音频通道文件:

$- mediainfo output_mono.mkv
...
Bit rate mode                            : Variable
Bit rate                                 : 80.0 kb/s
Channel(s)                               : 1 channel
Sampling rate                            : 48.0 kHz
...

相关内容