Video aus OpenCV mit ffmpeg über Netzwerk streamen



  • Hallo liebes Forum,
    ich habe hier eine Netzwerkkamera, die problemlos mit der mitgelieferten API
    angesteuert wird. Der Datenstrom wird dann an einen Buffer vom Typ IplImage
    übergeben und mit OpenCV bearbeitet (scaling etc.).
    Nun suche ich nach einer effizienten Möglichkeit diese Daten über ein Netzwerk
    zu schieben. Nun bin ich bei der Suche nach einer Methode, diesen Strom möglichst
    bandbreitensparend zu transportieren, über ffmpeg gestolpert, finde jedoch
    keine vernünftige Dokumentation zur Verwendung, nur massenweise Anleitungen
    wie ich ffmpeg mit Linux kompiliere.
    Habe ich hier einen grundlegenden verständnisfehler und und ffmpeg kann nur
    Videodatei einlesen und streamen?
    Welche Möglichkeiten würde ihr sonst vorschlagen?

    Vielen Dank



  • ffmpeg baut auf libavcodec auf. Diese kannst du separat runter laden unter http://ffmpeg.org/download.html.
    Wenn du libavcodec-dev installierst (linux) kannst du in /usr/include/libavcodec/libavcodec.h was nützliches vielleicht raus fischen. ffmpeg kann konvertieren und streamen.
    zum streamen könntest du eventuell auch schon einfach vlc verwenden.

    gP



  • Hallo,
    leider arbeite ich mit Windows und Linux scheint zur Zeit keine Option zu sein.
    Was mich interessiert ist ja vorwiegend, ob es überhaupt möglich ist, nahezu in Echtzeit die Videodaten, die bereits als IplImage vorliegen, zu komprimieren & verschicken mit ffmpeg, gstreamer (oder vlc). Oder ob besagte Programme lediglich eine Videodatei einlesen und streamen können?


  • Mod

    Deine Frage ist zu allgemein, um sie zufriedenstellend beantworten zu können. Ich sage daher mal: Ja.



  • Also zur Zeit ist das Setup so:
    Eine Netzwerkkamera sendet ein Videosignal an einen PC.
    Der PC nimmt das Signal auf, und wandelt die einzelnen Bilder in OpenCV-IplImage um.
    Dann wird dieses Bild aus dem IplImage Objekt als JPEG komprimiert und über udp versendet.

    Ich möchte das nun dahingehend ändern, dass statt den JPEG Bildern ein Videostream genutzt wird.
    Ist sowas (z.B. mit den erwähnten Bibliotheken) denn möglich?



  • Ja es ist möglich. Wenn du schon die OpenCV Bibliothek verwendest, dann schau dir doch mal an was die schon für Video Verarbeitungsfunktionen mitbringt.

    Bsp: benutze die ffmpeg (libavcodec) Bibliothek (Link: http://ffmpeg.org/download.html (funktioniert auch unter Windoof's)) um die Bilder zu einem Video zu schneiden, und eine RTP/RTSP Bibliothek (Bsp Link: 1. http://research.edm.uhasselt.be/~jori/page/index.php?n=CS.Jrtplib 2. http://www.live555.com/ ) um das Video zu streamen.

    Musst dich halt in die Bibliotheken einarbeiten.


Anmelden zum Antworten