bash - 如果 #channels 为 2,则连接 wav 文件将忽略

标签 bash macos audio terminal sox

我需要连接文件夹中的所有 wav 文件。

我尝试使用命令

sox folder_name/*.wav folder_name.wav

但是得到了错误

sox FAIL sox: Input files must have the same # channels


原来该文件夹中的 2864 个 wav 文件中只有 21 个有 2 个 channel 而不是 1 个。

我怎样才能忽略具有 2 个 channel 的 21 个文件并将所有 2843 wav 与 1 个 channel 连接起来?

最佳答案

使用soxi要获取所有一个 channel 文件,请将它们放在一个数组中,然后调用 sox :

for file in folder_name/*.wav; do
  if soxi "$file" | grep -q 'Channel.*1'; then
    files+=("$file")
  fi
done

sox "${files[@]}" folder_name.wav

关于bash - 如果 #channels 为 2,则连接 wav 文件将忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47463252/

相关文章:

c - 需要帮助改进一个小型 C 程序

linux - ping 命令后延迟 1 秒

objective-c - 如何以编程方式检索 OS X 中根磁盘分区的 UUID?

Javascript 从音轨中选择片段

php - 是否有可用于在 PHP 中拆分音频文件的脚本?

ios - 使用 expect 在 bash 中通过 SCP 更新 IOS

Linux - Bash 将字符串重定向到文件

c++ - Mac 上的 Visual Studio 使用 VS2015 故障性能测试--Z : not considered a local drive

java - 如何设置从我的 Java 应用程序启动的 MacOS 应用程序包的工作目录?

Python - 如何在不互相干扰的情况下多次播放相同的声音?