Моя работа в последнее время связана с программным составлением видео. В 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 сразу после его создания.