使用 FFMPEG 在 GSM6.10 上将两个音频通道(立体声)合并为一个(单声道)

Ron*_*lev 38 audio ffmpeg

我想知道是否可以使用 FFMPEG 在 GSM6.10 音频文件上将立体声音频合并为单声道。如果是,请提供实现此目的的命令。
否则,是否可以使用 FFMPEG 将 GSM6.10 转换为 WAV PCM?然后我可以合并 WAV PCM 上的频道。

如果有其他免费工具可以做到这一点,我也可以尝试一下。

小智 61

在 ffmpeg 中任何支持的文件中从立体声“混音”到单声道的方法如下:

ffmpeg -i file.ext -ac 1 file_mono.ext
Run Code Online (Sandbox Code Playgroud)

“-ac 1”位指示 ffmpeg 仅输出 1 个音频通道,即单声道。默认情况下,此操作将保留您的文件格式,但会将您的比特率恢复为 ffmpeg 默认值 64kbs。如果你想要更高的比特率,你可以这样做:

ffmpeg -i file.ext -ac 1 -ab 192k file_mono.ext
Run Code Online (Sandbox Code Playgroud)

...用您喜欢的比特率替换 192k。

请注意,您安装的 ffmpeg 必须支持您特定的 GSM 编解码器才能正常工作。我知道 ffmpeg 通过 libgsm 支持一些 GSM 编码的音频,但我自己从未处理过 GSM 文件。然而,我已经成功地将其他类型的文件 (MP3) 转换为单声道。

  • [音频通道操作](https://trac.ffmpeg.org/wiki/AudioChannelManipulation)“将单个立体声流混合为单声道流。立体声流的两个通道都将被混合到流中:”`ffmpeg -i立体声.flac -ac 1 单声道.flac` (5认同)
  • 这真的是混合,还是只是减少了频道? (4认同)

小智 10

上面的答案适用于您仍然想在格式之间转换的情况,但对于可能需要很长时间的长文件。或者您可能不想再次转换,降低质量,因此您可能只想流式复制。同时使用 -codec:a 和 -ac 1 不起作用,但根据 ffmpeg pan filter 文档,如果满足某些条件(例如您没有调整通道的电平或将两个通道混合为一个) ,它会识别这种情况并报告:“检测到纯通道映射”,并进行流复制,这要快得多。

例如:要仅使用左声道制作立体声文件单声道,只需复制视频流,请执行以下操作:

ffmpeg -i infile.ext -codec:v copy -af pan="mono: c0=FL" outfile.ext
Run Code Online (Sandbox Code Playgroud)


小智 6

为了保留视频,我结合使用了上面两个答案:

ffmpeg -i infile -codec:v copy -ac 1 -ab 192k outfile
Run Code Online (Sandbox Code Playgroud)

这为我提供了一个足够的解决方案。


Rob*_*ans 0

我知道使用 sox 是可能的......我使用 sox 进行通道操作,使用 kdenlive 和 audacity 进行轻度编辑,使用 ffmpeg 进行重新混合。只是让你知道过去对我来说效果很好的事情。