Können Sie Bilder zu ffmpeg „streamen“, um ein Video zu erstellen, anstatt sie auf der Festplatte zu speichern?

Meine Arbeit umfasst kürzlich das programmgesteuerte Erstellen von Videos. In Python sieht der typische Workflow ungefähr so ​​aus:

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"])

Dieser Workflow erstellt ein Bild für jedes Bild im Video und speichert es auf der Festplatte. Nachdem alle Bilder gespeichert wurden, wird ffmpeg aufgerufen, um aus allen Bildern ein Video zu erstellen.

Das Speichern der Bilder auf der Festplatte (nicht das Erstellen der Bilder im Speicher) beansprucht hier den größten Teil der Zyklen und scheint nicht erforderlich zu sein. Gibt es eine Möglichkeit, dieselbe Funktion auszuführen, ohne die Bilder auf der Festplatte zu speichern? Also würde ffmpeg aufgerufen und die Bilder würden konstruiert und sofort nach der Konstruktion an ffmpeg weitergeleitet.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage