私の最近の仕事は、プログラムでビデオを作成することです。Python では、典型的なワークフローは次のようになります。
import subprocess, Image, ImageDraw
for i in range(frames_per_second * video_duration_seconds):
img = createFrame(i)
img.save("%07d.png" % i)
subprocess.call(["ffmpeg","-y","-r",str(frames_per_second),"-i", "%07d.png","-vcodec","mpeg4", "-qscale","5", "-r", str(frames_per_second), "video.avi"])
このワークフローは、ビデオのフレームごとに画像を作成し、ディスクに保存します。すべての画像が保存された後、すべての画像からビデオを構築するために ffmpeg が呼び出されます。
画像をディスクに保存する (メモリ内に画像を作成するのではなく) と、ここでのサイクルの大部分が消費され、その必要はないようです。画像をディスクに保存せずに同じ機能を実行する方法はありますか? したがって、ffmpeg が呼び出され、イメージが構築され、構築された直後に ffmpeg に供給されます。