通过命令行仅将立体声声道音频文件转换为左声道

Posted

技术标签:

【中文标题】通过命令行仅将立体声声道音频文件转换为左声道【英文标题】:Converting a stereo channel audio file to left channel only, through command line 【发布时间】:2017-03-18 19:52:05 【问题描述】:

假设我有一堆 mp3 文件。我将如何使用音频软件命令行工具在音频文件的一侧(右)完全降低音量,而在音频文件的左侧完成?然后我想将此文件保存到一个新的 mp3 文件中。这需要完全通过命令行完成。

作为另一种方法。是否可以使用命令行音频文件工具将立体声 mp3 文件转换为单声道,然后将此单声道文件与相同长度的“静音”音轨合并,创建带有声音的左耳机音轨和右耳机静默追踪?

在这个 SO 问题中,似乎有许多方法可以实现一个相当古怪的最终目标。在第一个可能的解决方案中,我只想减小右侧的音量。在第二种可能的解决方案中,我想结合一些更常见的步骤来实现相同的最终结果。

这里的问题是:

我找不到一个好的命令行工具来修改音频文件,即使是执行第二种方法,这应该是一个更常见的请求。 我希望我首先需要使用类似或第二个工具将 mp3 文件转换为 wav 这个查询很古怪,所以网络上没有很多关于它的链接。

感谢您的帮助。 Audacity 通常是我的首选,但它似乎只是 GUI。

【问题讨论】:

欢迎来到 ***。当遇到您尝试过的事情时在这里询问(ie: 一个可重现的问题)。尝试下载 FFmpeg for Linux(获取静态构建/应用程序,而不是 C++ 代码库)。许多音频编辑教程(包括静音通道)。 请允许我给你一个标准的建议给新手:如果一个答案解决了你的问题,请点击它旁边的大复选标记 (✓) 接受它,也可以选择给它投票(up - 投票需要 15 个或更多声望点)。如果您发现其他答案有帮助,请给他们投票。接受(您将获得 2 个声望点)和投票有助于未来的读者。请参阅the relevant help-center article。如果您的问题尚未得到完全解答,请提供反馈或self-answer。 【参考方案1】:

SoX 让您轻松做到这一点。 第一种情况,静音右声道:

sox test.mp3 test-rmuted.mp3 remix 1 0

第二种情况,在左声道求和单声道:

sox test.mp3 test-lmono.mp3 remix 1,2 0

要进行批处理,您只需执行一个简单的 for 循环即可。 静音右声道:

for f in *.mp3
do
  basename="$f%.*"
  echo "$basename"
  sox "$f" -t wav - remix 1 0 | \
    lame --preset standard - "00-$basename-rmute".mp3
done

仅在左声道上求和单声道:

for f in *.mp3
do
  basename="$f%.*"
  echo "$basename"
  sox "$f" -t wav - remix 1,2 0 | \
    lame --preset standard - "00-$basename-lmono".mp3
done

您可以像前两个示例一样放弃 LAME 并使用 SoX 进行编码,但我发现这种方法更简单、更灵活。

【讨论】:

【参考方案2】:

正如评论中所建议的,您应该能够使用 FFmpeg 来处理您的音频文件。完全删除一个通道会产生与首先转换为单声道不同的结果。但是,我认为任何一个都可以通过 FFMpeg 中的 pan 过滤器来实现。

https://trac.ffmpeg.org/wiki/AudioChannelManipulation

https://ffmpeg.org/ffmpeg-filters.html#pan

一个通道的衰减

将 mp3 文件解码为 wav 使用 100% 到一个通道的声像滤波器创建一个新的立体声 wav 文件 将生成的 wav 文件编码为 mp3

在一个通道中均匀混合两个通道,然后衰减另一个通道

将 mp3 文件解码为 wav 使用平移滤波器创建一个新的 wav 文件,其中一个通道从左到右 50% 和 50%,另一个通道具有 0 增益 将生成的 wav 文件编码为 mp3

【讨论】:

以上是关于通过命令行仅将立体声声道音频文件转换为左声道的主要内容,如果未能解决你的问题,请参考以下文章

谁知道mp3单声道怎么转立体声

在Javascript中将立体声音频转换为单声道

在 C 中将立体声 wav 转换为单声道

在Javascript中将立体声音频转换为单声道

mp3格式转换后没有了立体声

是否可以将时间序列从单声道转换为立体声?