通过命令行将立体声声道音频文件仅转换为左声道
Converting a stereo channel audio file to left channel only, through command line
假设我有一堆 mp3 文件。我将如何使用音频软件命令行工具来完全降低音频文件一侧(右)的音量,而在音频文件的左侧留下完整的音量?然后我想将这个文件保存到一个新的 mp3 文件中。这需要完全通过命令行完成。
作为另一种方法。是否可以使用命令行音频文件工具将立体声 mp3 文件转换为单声道,然后将此单声道文件与相同长度的 "silent" 轨道合并,创建一个带声音的左耳机轨道和一个右耳机轨道-静音耳机轨道?
在这个 SO 问题中,似乎有许多方法可以实现一个相当古怪的最终目标。在第一个可能的解决方案中,我只想减小右侧的音量。在第二种可能的解决方案中,我想结合一些更常见的步骤来实现相同的最终结果。
这里的问题是:
- 我找不到一个好的命令行工具来修改音频文件,即使是第二种方法,应该是更常见的请求。
- 我预计我首先需要使用类似或第二种工具将 mp3 文件转换为 wav
- 这个查询很古怪,所以网上没有很多关于它的链接。
感谢您的帮助。 Audacity 通常是我的首选,但它似乎只是 GUI。
正如评论中所建议的那样,您应该能够使用 FFmpeg 来处理您的音频文件。完全放弃一个通道会产生与首先转换为单声道不同的结果。但是,我认为两者都可以通过 FFMpeg 中的 pan 过滤器来实现。
https://trac.ffmpeg.org/wiki/AudioChannelManipulation
https://ffmpeg.org/ffmpeg-filters.html#pan
单声道衰减
- 将 mp3 文件解码为 wav
- 使用 pan 过滤器 100% 到一个通道创建一个新的立体声 wav 文件
- 将生成的 wav 文件编码为 mp3
在一个通道中均匀混合两个通道,然后衰减另一个通道
- 将 mp3 文件解码为 wav
- 使用声像过滤器创建一个新的 wav 文件,一个通道从左到右 50%,从右到 50%,另一个通道增益为 0
- 将生成的 wav 文件编码为 mp3
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编码,但我觉得这种方法更简单、更灵活。
假设我有一堆 mp3 文件。我将如何使用音频软件命令行工具来完全降低音频文件一侧(右)的音量,而在音频文件的左侧留下完整的音量?然后我想将这个文件保存到一个新的 mp3 文件中。这需要完全通过命令行完成。
作为另一种方法。是否可以使用命令行音频文件工具将立体声 mp3 文件转换为单声道,然后将此单声道文件与相同长度的 "silent" 轨道合并,创建一个带声音的左耳机轨道和一个右耳机轨道-静音耳机轨道?
在这个 SO 问题中,似乎有许多方法可以实现一个相当古怪的最终目标。在第一个可能的解决方案中,我只想减小右侧的音量。在第二种可能的解决方案中,我想结合一些更常见的步骤来实现相同的最终结果。
这里的问题是:
- 我找不到一个好的命令行工具来修改音频文件,即使是第二种方法,应该是更常见的请求。
- 我预计我首先需要使用类似或第二种工具将 mp3 文件转换为 wav
- 这个查询很古怪,所以网上没有很多关于它的链接。
感谢您的帮助。 Audacity 通常是我的首选,但它似乎只是 GUI。
正如评论中所建议的那样,您应该能够使用 FFmpeg 来处理您的音频文件。完全放弃一个通道会产生与首先转换为单声道不同的结果。但是,我认为两者都可以通过 FFMpeg 中的 pan 过滤器来实现。
https://trac.ffmpeg.org/wiki/AudioChannelManipulation
https://ffmpeg.org/ffmpeg-filters.html#pan
单声道衰减
- 将 mp3 文件解码为 wav
- 使用 pan 过滤器 100% 到一个通道创建一个新的立体声 wav 文件
- 将生成的 wav 文件编码为 mp3
在一个通道中均匀混合两个通道,然后衰减另一个通道
- 将 mp3 文件解码为 wav
- 使用声像过滤器创建一个新的 wav 文件,一个通道从左到右 50%,从右到 50%,另一个通道增益为 0
- 将生成的 wav 文件编码为 mp3
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编码,但我觉得这种方法更简单、更灵活。