![ffmpeg 画像入力は Windows の入力レベルで奇数または偶数を使用します](https://rvso.com/image/1592559/ffmpeg%20%E7%94%BB%E5%83%8F%E5%85%A5%E5%8A%9B%E3%81%AF%20Windows%20%E3%81%AE%E5%85%A5%E5%8A%9B%E3%83%AC%E3%83%99%E3%83%AB%E3%81%A7%E5%A5%87%E6%95%B0%E3%81%BE%E3%81%9F%E3%81%AF%E5%81%B6%E6%95%B0%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%BE%E3%81%99.png)
フィルター レベルですべての奇数または偶数の画像を選択する方法はいくつかあり、すべて機能します。ただし、私の場合は 15360x8640 の .jpg ファイルの入力があり、すべての画像を入力してフィルターで 1 秒ごとに破棄するか、入力画像を 2 秒ごとにスキップするかによって大きな違いが生じます。これにより、エンコードが大幅に高速化されます。私の通常の入力は次のとおりです (5 桁の数値ファイルの場合、win10 x64 で実行中):
ffmpeg.exe -framerate 60 -i %05d.jpg -vcodec libx264 out.mkv
私が試したこと(このスレッド、Linux でのみ動作するかもしれませんが、確認できませんでした):
ffmpeg.exe -framerate 60 -i %04d%[13579%].jpg -vcodec libx264 out.mkv
glob オプションの有無など、さまざまなバリエーションがあります。すべて失敗します。常に「%04d%[13579%].jpg: そのようなファイルまたはディレクトリはありません」などの結果になります。
10 フレームごとの動作例 (つまり、00001、00011、00021 など)。
ffmpeg.exe -framerate 60 -i %04d1.jpg -vcodec libx264 out.mkv
すでに問題を解決した人、または新しいアイデアを得た人はいますか?
答え1
現在は2段階のソリューションです。
リストを作成します:
dir *1.jpg *3.jpg *5.jpg *7.jpg *9.jpg /b /on | c:\prog\unix\sed "s/^/file /" > "!list.txt"
使用リスト:
ffmpeg.exe -r 60 -f concat -safe 0 -i "!list.txt" -vcodec libx264 out.mkv
利点: 入力として異なる名前のファイルのコピーを持つだけで、または入力レベルでのデコード時間で、約 1 テラバイトを節約できます。巨大な .jpg を入力としてフィルター レベルで変換する場合と比較して、ほぼ 1.5 倍の速度です。
欠点: フィルター レベルで使用する場合よりも多くの RAM が必要になるようですが、なぜでしょうか。
もっと良い解決策はありますか。