web-dev-qa-db-ja.com

SOXバッチスクリプトを作成して最初の15秒を抽出し、フォルダー内の複数のファイルの名前を変更します

10〜15秒のオーディオを抽出する必要があるいくつかのMP3ファイルを含むフォルダーがあります。また、変換されたファイルにsample-(name).mp3を追加して、これらの名前を変更したいと思います。

シェルスクリプトを介してこれを行うにはどうすればよいですか?

2
Designs Edge

これにsoxを使用したい/必要がある場合は、そのtrimコマンドを使用できます。

for i in *.mp3
do 
  sox "$i" sample-"$i" trim 0 10
done

mp3splt の一部であるコマンドラインユーティリティを使用して分割することもできます。出力ファイルを-oで明示的に設定するので、オリジナルは変更されません。使い終わったら削除するだけです。これにより、ファイルで定義されたタグをsoxよりも出力名に組み込むことができます(現時点では必要ないと思われるもの)。

for i in *.mp3
do 
  mp3splt "$i" 00.00.00 00.10.00 -o sample-"${i%.mp3}"
done

-oは通常@ベースのディレクティブと連携して、出力名にタグ要素を含め、.mp3を追加することに注意してください。 。 ${i%.mp3}がないと、.mp3.mp3ファイルを取得できます。

時間はドットで区切られています。代わりに:を使用しないでください。十分な分割ポイントがないという、役に立たないエラーメッセージが表示されます。

スクリプトが機能することをテストするまで、入力ファイルは削除しません。また、途中で停止したり、後でファイルを追加したりすると、最初にsample-ファイルを削除しないと再実行できないことに注意してください。物事を区別するために、sample-...の前にディレクトリを指定することをお勧めします。

2
Anthon