FFmpegを使用して50個のビデオに50個のビデオを(同じオーディオファイルを使用して)バッチ変換する


0

名前の異なる50枚の画像があります。

同じフォルダに names.txt そのフォルダ内のすべての画像の名前を含むファイルです。

apples.jpg
oranges.jpg
blackberries.jpg
etc.

そして私は1つのオーディオファイルを持っています、 sound.wav

各画像をsound.wavファイルと混合して、50個のビデオを生成します。

apples.mp4
oranges.mp4
blackberries.mp4
etc.

何か案は?

これは、各画像を手動で変換するために私にとって有効なスクリプトです。

ffmpeg -loop 1 -y -i oranges.jpg -i sound.wav -shortest oranges.mp4

しかし、私はこれをスケールしたいのですが、多分各行を通るスクリプトがあるでしょう。 names.txt 画像の名前を取得し、その画像をビデオに変換してから次の画像に移動します。

ありがとう


お使いのオペレーティングシステムは何ですか?あなたはまだ何か試しましたか?
slhck

Windows 10、64ビットOS。まだ何も試していない、何かアイデアはありますか? :)
Duraid

ファイルから行単位で読み取る方法についてWeb検索を行う場合、Windowsでそれを実行する方法の例がいくつかあります。あなたがスタートのために必要なのは取り替えることだけです -i oranges.jpg-i %aどこで %a テキストファイルから読み込んでいる行に置き換えられます。
slhck

その方法を私は理解することができませんでした。しかし、私は別の解決策を見つけました。基本的には、スクリプトをCSVで連結し、それをコピーしてコマンドプロンプトに貼り付けるという方法です。好きです: ffmpeg -loop 1 -y -i apples.jpg -i intro5.wav -shortest apples_video.mp4 & ffmpeg -loop 1 -y -i oranges.jpg -i intro5.wav -shortest oranges_video.mp4 & ffmpeg -loop 1 -y -i blackberries.jpg -i intro5.wav -shortest blackberries_video.mp4 しかし、ビデオの長さに問題があります。音声は28秒ですが、最後のビデオは常に30秒になります(最後の2秒間は無音です)。何か案は?
Duraid

交換することで目的の結果を達成することができました -shortest-t 28 (28は最終ビデオファイルの秒数です)。悪くないが、あなたが最終的なファイルの長さを指定する必要なしに同じ結果を達成するための別の方法を知っているならば、私はそれを聞くのが大好きだ。 :)ありがとう
Duraid

回答:


1

あなたはできる ファイルの行を繰り返す Windowsバッチファイルの場合:

for /F "tokens=*" %%A in (names.txt) do [process]

ここで、交換してください [process] と:

ffmpeg -loop 1 -y -i %%A -i intro5.wav -shortest %%~nA_movie.mp4

どこで %A その行のファイル名です。 %%~nA 拡張子なしの名前です。


注:ここには確認するWindowsがないので、これはテストされていません。
slhck
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.