2017-11-23 7 views
2

フォルダ内のすべてのwavファイルを連結する必要があります。#channelsが2の場合、wavファイルを無視する

私は、コマンドに

sox folder_name/*.wav folder_name.wav 

を使用してみましたが、エラー

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

は、そのフォルダ内の唯一の21 2864のWAVファイルが2つのチャンネルの代わりに、1

を持って判明しました

2つのチャンネルを持つ21個のファイルを無視して2843のすべてを連結するにはどうすればよいですか1チャンネルのwavs?

答えて

1

使用soxiは、すべて一つのチャンネルファイルを取得し、配列に入れ、その後、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 
+0

これは、それを周りに間違った方法をして、私はすべて1チャンネルのファイルをマージします。私はそれらを選ぶことができますが、私はできませんか? – theonlygusti

+0

'soxi'の' -c'オプションを使うことができますか? – codeforester

+0

ええ、私はそれが存在するのか分からなかった – theonlygusti

関連する問題