ビデオ全体で表示される単一の画像で構成される一連のビデオを作成したいのですが、各ビデオには異なるオーディオ ファイルがあります。さまざまなツールを使用して手動で行うことができますが、問題は、多くのオーディオ ファイルがあり、フレーム レートを最適化できないことです (これについては後で詳しく説明します)。必要なものはすべて揃っていますが、すべてをバッチ処理する方法がわからないという問題があります。
基本的なコード:
ffmpeg -i song-name.mp3 -loop 1 -i cover.jpg -r frame-rate -t song-length -acodec copy output.mp4
私が達成したいこと:
いくつかのオーディオ ファイルで構成されるフォルダーがあるとしましょう: song-name-1.mp3、song-name-2.mp3、...、song-name-n.mp3 およびカバー。 jpg.
フォルダー内のすべての mp3 ファイルの名前を取得し (FOR ループだと思います)、同じコマンドで処理するバッチ ファイルが必要です。
ffmpeg -i song-name.mp3 -loop 1 -i cover.jpg -r frame-rate -t song-length -acodec copy output.mp4
そのため、画像はすべてのビデオで常に同じです。曲の長さは、ツールmp3infoと対応するコマンドで取得できます。
mp3info.exe -p %S song-name.mp3
ビデオ全体で 1 つの画像しかないため、最適なフレーム レートは、ビデオの長さの逆数である 1/長さになります (長さは、mp3info から取得した秒単位の変数です)。
したがって、最終的なコードは次のようになります。
ffmpeg -i song-name.mp3 -loop 1 -i cover.jpg -r 1/length -t length -acodec copy song-name.mp4
ここで、「song-name」は FOR ループの反復ごとに (つまり、フォルダー内のすべてのオーディオ ファイルごとに) 変化する変数であり、length は次のコマンドで値を取得する変数です。
mp3info.exe -p %S song-name.mp3
特定のフォルダー内のすべての mp3 のすべてのファイル名を取得する FOR ループの例を見つけましたが、mp3info を統合する方法がわかりません。誰かが私を助けてくれることを願っています.Cプログラミング言語についてある程度の知識があり、それが何らかの方法で使用できる場合.