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

时间:2017-03-18 19:52:06

标签: linux audio command-line mp3 wav

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

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

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

这里的问题是:

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

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

2 个答案:

答案 0 :(得分:2)

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进行编码,如前两个示例所示,但我发现此方法更简单,更灵活。

答案 1 :(得分:0)

根据评论中的建议,您应该能够使用FFmpeg处理音频文件。完全丢弃一个通道会产生与先转换为单声道不同的结果。但是,我认为要么可以使用FFMpeg中的平移过滤器来实现。

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