Wie kann ich OpenCV Bilder zu ffmpeg (Ausführen von ffmpeg als Subprozess)? (ich benutze spyder/anaconda)Pipe opencv Bilder zu ffmpeg mit Python
Ich lese Frames aus einer Videodatei und mache einige Verarbeitung für jeden Frame.
import cv2
cap = cv2.VideoCapture(self.avi_path)
img = cap.read()
gray = cv2.cvtColor(img[1], cv2.COLOR_BGR2GRAY)
bgDiv=gray/vidMed #background division
dann die verarbeiteten Rahmen zu ffmpeg Rohr, ich diesen Befehl in einer verwandten Frage gefunden:
sys.stdout.write(bgDiv.tostring())
nächstes versuche ich ffmpeg als subprocess auszuführen:
cmd='ffmpeg.exe -f rawvideo -pix_fmt gray -s 2048x2048 -r 30 -i - -an -f avi -r 30 foo.avi'
sp.call(cmd,shell=True)
(dies auch aus dem genannten Beitrag) Allerdings füllt dies meine IPython-Konsole mit kryptischen Hieroglyphen und stürzt dann ab. irgendein Rat?
letztlich würde ich gerne 4 Streams auspipsen und ffmpeg diese 4 Streams parallel kodieren.
Gibt es einen Grund, warum Sie OpenCV VideoWriter-Schnittstelle nicht verwenden möchten, um Ihr Video zu schreiben? Ich glaube nicht, dass du 4 Streams auf einmal rausholen kannst. – mirosval
Ich hatte gehofft, das wäre schneller zum Speichern des Videos. Ich habe bemerkt, dass mein openCV-Lese-Schreib-Beispiel oben mit VideoWriter etwa doppelt so lang war wie eine reine ffmpeg-Kodierung des gleichen Eingangsvideos (vorausgesetzt, die ffmpeg-Kodierung enthielt keine Hintergrundeinteilung - weshalb ich openCV probierte) den ersten Platz). Ich hoffte, Named Pipes zu verwenden ... – jlarsch