Ich erstelle einen Prozess, in dem Python eine Videodatei öffnet und sie in die Standardeingabe eines ffmpeg-Befehls streamt. Ich denke, ich habe die richtige Idee, aber die Art, wie die Datei geöffnet wird, funktioniert nicht mit Stdin. Hier ist mein Code so weit:streamen Videodatei als Bytes in Stddin
def create_pipe():
return Popen([ 'ffmpeg',
'-loglevel', 'panic',
'-s', '1920x1080',
'-pix_fmt', 'yuvj420p',
'-y',
'-f', 'image2pipe',
'-vcodec', 'mjpeg',
'-r', self.fps,
'-i', '-',
'-r', self.fps,
'-s', '1920x1080',
'-f', 'mov',
'-vcodec', 'prores',
'-profile:v', '3',
'-aspect', '16:9', '-y',
'output_file_name' + '.mov'], stdin=PIPE)
in_pipe = create_pipe()
with open("~/Desktop/IMG_1973.mov", "rb") as f:
in_pipe.communicate(input=f)
Dies ergibt den Fehler:
TypeError: a bytes-like object is required, not '_io.BufferedReader'
Was wäre der richtige Weg sein/zu öffnen, eine Videodatei in dieses Rohr streamen? Ich muss auch ein Stream sein, anstatt das Ganze in Erinnerung zu behalten.
PS. bitte ignoriere, dass ich die Datei in ffmpeg nativ öffnen könnte ... Ich erstelle einen Wrapper, und es ist besser, wenn ich die Eingabe steuern kann.