OpenCV nicht Erfassung von Einzelbildern aus einer RTMP-source, während FFmpeg tut

mein Ziel ist es zu erfassen, ein Bild aus einem rtmp-stream, jede Sekunde, und verarbeiten es mithilfe von OpenCV. Ich bin mit FFmpeg version N-71899-g6ef3426 und OpenCV 2.4.9 mit der Java-Schnittstelle (aber ich bin als erstes Experimentieren mit Python).
Für den moment kann ich nur die einfache und schmutzige Lösung, die für die Aufnahme von Bildern mit FFmpeg, speichern Sie in der Festplatte, und Lesen Sie dann die Bilder von meinem OpenCV Programm. Dies ist der FFmpeg-Befehl, den ich verwende:

ffmpeg -i "rtmp://antena3fms35livefs.fplive.net:1935/antena3fms35live-live/stream-lasexta_1 live=1" -r 1 capImage%03d.jpg

Dies ist aktuell für mich, zumindest mit diesem konkreten rtmp-source. Dann würde ich Lesen müssen, diese Bilder aus meinem OpenCV Programm in der richtigen Weise. Ich habe nicht wirklich umgesetzt wird dieses Teil, weil ich versuche eine bessere Lösung zu finden.

Ich denke, der ideale Weg wäre, das zu erfassen rtmp-Bilder direkt von OpenCV, aber ich kann nicht finden die Art und Weise, es zu tun. Dies ist der code in Python, die ich verwende:

cv2.namedWindow("camCapture", cv2.CV_WINDOW_AUTOSIZE)
cap = cv2.VideoCapture()
cap.open('"rtmp://antena3fms35livefs.fplive.net:1935/antena3fms35live-live/stream-lasexta_1 live=1"')
if not cap.open:
    print "Not open"
while (True):
    err,img = cap.read()
    if img and img.shape != (0,0):
        cv2.imwrite("img1", img)
        cv2.imshow("camCapture", img)
    if err:
        print err
        break
    cv2.waitKey(30)

Anstelle von read () - Funktion, ich versuche auch mit Greifer() und retrieve () - Funktionen, ohne gutes Ergebnis. Die read () - Funktion ausgeführt wird, jedes mal, aber keine "img" oder "err" empfangen wird.
Gibt es irgendeinen anderen Weg, es zu tun? oder vielleicht gibt es keine Möglichkeit, Bilder direkt von OpenCV 2.4.9 aus einem stream so?

Ich gelesen habe OpenCV verwendet FFmpeg zu tun, diese Art von Aufgaben, aber wie Sie sehen können, in meinem Fall FFmpeg ist in der Lage, frames aus dem stream, während OpenCV nicht.

In dem Fall ich könnte den Weg nicht finden um die Bilder direkt von OpenCV, meine nächste Idee ist die Leitung irgendwie, FFmpeg Ausgabe OpenCV, das scheint schwieriger zu implementieren.

Jeder Idee,
danke!

UPDATE 1:
Ich bin in Windows 8.1. Da ich mit der python-Skript in Eclipse PyDev, dieses mal habe ich es ausführen von cmd statt, und ich bin immer folgende Warnung:

warning: Error opening file (../../modules/highgui/src/cap_ffmpeg_impl.hpp:545)

Diese Warnung bedeutet, soweit ich Lesen konnte, dass entweder der Datei-Pfad falsch ist, oder der codec wird nicht unterstützt. Nun, die Frage ist die gleiche. Ist OpenCV nicht in der Lage, die Bilder aus dieser Quelle?

  • Ich erhalte die gleiche Fehlermeldung ,alle updates
  • Konnte ich nicht lösen, das es so ist. Ich denke, OpenCV, zumindest 2.4.9-version, unterstützt nicht diese Art von codecs (bezogen auf meine UPDATE-1). Endlich habe ich die integrierte FFmpeg in meinem Programm durch die Fütterung von OpenCV Eingang mit FFmpeg Ausgabe. Wenn Sie finden eine saubere Lösung, lassen Sie es mich bitte wissen.
InformationsquelleAutor user2957378 | 2015-05-07
Schreibe einen Kommentar