私は現在、いくつかのmp3ファイルを取得し、最初のファイルが指定された時間再生され、必要に応じてループされる別のmp3ファイルを作成する必要があるという問題に直面しています。できれば、コマンドラインソリューションを探しています。 ffmpegとsoxを試しましたが、解決策が見つかりませんでした。だから今私はいくつかのオプションを探しています。
詳細な説明:ファイルfoo.mp3があるとしましょう。ある特定の長さ、たとえば30秒、foo.mp3ファイルを含むbar.mp3ファイルを作成する必要があり、foo.mp3が30より短い場合秒それはそれが30秒全体を満たすほど何度もループします。私が何を求めているのかが明確になったことを願っています。
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
これは、以下のコマンドを使用(追加)することで実現できます。
-stream_loop -1 -i D:\music\mp4.mp3
これは、ビデオが終了するまで、D:\ music\mp4.mp3ファイルを無限にループする必要があることを意味します。