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

Linux 通过命令行将立体声声道音频文件转换为仅左声道,linux,audio,command-line,mp3,wav,Linux,Audio,Command Line,Mp3,Wav,假设我有一堆mp3文件。如何使用音频软件命令行工具将音频文件一侧(右侧)的音量完全减小,而将音频文件左侧的音量完全减小?然后我想把这个文件保存到一个新的mp3文件中。这需要完全通过命令行完成 作为另一种方法。是否可以使用命令行音频文件工具将立体声mp3文件转换为单声道,然后将此单声道文件与相同长度的“静音”曲目合并,创建带声音的左耳机曲目和带静音的右耳机曲目 在这个问题上,似乎有很多方法可以达到一个相当古怪的最终目标。在第一种可能的解决方案中,我只想减小右侧的体积。在第二种可能的解决方案中,我想

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

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

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

这里的问题是:

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

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

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

单通道衰减

  • 将mp3文件解码为wav
  • 使用平移过滤器100%对一个通道创建一个新的立体声wav文件
  • 将生成的wav文件编码为mp3
在一个通道中均匀混合两个通道,然后衰减另一个通道

  • 将mp3文件解码为wav
  • 使用pan过滤器创建一个新的wav文件,其中一个通道左起50%,右起50%,另一个通道增益为0
  • 将生成的wav文件编码为mp3
    • 让您可以非常轻松地完成此操作。
      第一种情况,静音右声道:

      sox test.mp3 test-rmuted.mp3 remix 1 0
      
      sox test.mp3 test-lmono.mp3 remix 1,2 0
      
      for f in *.mp3
      do
        basename="${f%.*}"
        echo "$basename"
        sox "$f" -t wav - remix 1 0 | \
          lame --preset standard - "00-${basename}-rmute".mp3
      done
      
      第二种情况,左声道的单声道:

      sox test.mp3 test-rmuted.mp3 remix 1 0
      
      sox test.mp3 test-lmono.mp3 remix 1,2 0
      
      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循环。
      静音右声道:

      sox test.mp3 test-rmuted.mp3 remix 1 0
      
      sox test.mp3 test-lmono.mp3 remix 1,2 0
      
      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进行编码,但我发现这种方法更简单、更灵活。

      欢迎使用StackOverflow。当遇到你尝试过的问题时(即:重复出现的问题),请在此询问。尝试下载FFMPEG到Linux(获取静态构建/应用程序,而不是C++代码库)。许多音频编辑教程(包括静音频道)。请允许我给你给新手的标准建议:如果答案解决了你的问题,请点击大复选标记接受它(✓) 在它旁边,也可以选择向上投票(向上投票需要15个或更多的声誉点)。如果您发现其他答案有帮助,请向上投票。接受(您将获得2个声誉点)和向上投票有助于未来的读者。请参阅。如果您的问题尚未完全回答,请提供反馈或建议。