繁体   English   中英

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

[英]Converting a stereo channel audio file to left channel only, through command line

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

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

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

这里的问题是:

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

谢谢你的帮助。 我通常会选择Audacity,但它似乎仅是GUI。

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进行编码,但是我发现此方法更简单,更灵活。

如评论中所建议,您应该能够使用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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM