web-dev-qa-db-ja.com

オーディオファイルを指定された長さにループします

私は現在、いくつかのmp3ファイルを取得し、最初のファイルが指定された時間再生され、必要に応じてループされる別のmp3ファイルを作成する必要があるという問題に直面しています。できれば、コマンドラインソリューションを探しています。 ffmpegとsoxを試しましたが、解決策が見つかりませんでした。だから今私はいくつかのオプションを探しています。

詳細な説明:ファイルfoo.mp3があるとしましょう。ある特定の長さ、たとえば30秒、foo.mp3ファイルを含むbar.mp3ファイルを作成する必要があり、foo.mp3が30より短い場合秒それはそれが30秒全体を満たすほど何度もループします。私が何を求めているのかが明確になったことを願っています。

5
Tomcatus

ffmpegはあなたのためにそれをすることができます、しかしあなたは2つのステップを必要とするかもしれません

オプションのステップ1:元のファイルの長さを見つける

ffmpeg -i '/path/to/original.mp3' 2>&1 | grep 'Duration :'

これで、必要な繰り返し回数を計算できます。別の方法として、「安全な」繰り返し回数を使用することもできます。繰り返し回数が多すぎても問題はありません。

ステップ2:ファイルをループして必要な長さにカットします

このコンテンツで「concat.txt」を作成します

file '/path/to/original.mp3'
file '/path/to/original.mp3'
...
file '/path/to/original.mp3'
file '/path/to/original.mp3'
file '/path/to/original.mp3'

少なくとも繰り返しが必要な数の行が必要ですが、繰り返しになりますが、それ以上の行は問題にならないため、安全な(多すぎる)行数を使用できます。

そしてffmpegを実行します(123.456秒が必要だと仮定します):

ffmpeg -t 123.456 -f concat -i concat.txt -c copy -t 123.456 output.mp3
9
Eugen Rieck

これは、以下のコマンドを使用(追加)することで実現できます。

-stream_loop -1 -i D:\music\mp4.mp3

これは、ビデオが終了するまで、D:\ music\mp4.mp3ファイルを無限にループする必要があることを意味します。

https://ffmpeg.org/ffmpeg.html

3
SfatFarma