我有一个带有音频 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>
。
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
...