Frage

Ich mag einen Qt-Widget erstellen, die eingehenden spielen kann RTP-Streams, wo das Video als H264 codiert und enthält kein Audio.

Mein Grundplan für die Umsetzung ist dies:

  • Erstellen Sie ein Phonon Mediasource Objekt (Stream-Typ).
  • Schließen Sie es mit einer QIODevice Unterklasse, die die Daten
  • liefert
  • Rufen Sie die Videodaten entweder von:
    • Die JRTPLIB Client-Bibliothek
    • Die GStreamer gstrtpbin Plugin. Dieses Plugin kümmert sich um die Pakete depayloading und Dekodieren des Video. Vielleicht verbessert dies die Chancen, dass Phonon die Daten erkennen.

Meine Umwelt:

  • Ubuntu 9.10
  • Qt 4.6

Meine Fragen:

  • Ist mein Ansatz ein guter? Vielleicht bin ich mit Blick auf eine offensichtliche oder einfache Lösung?
  • Ich erlebe gerade dieses Problem bei dem Versuch, das Video abzuspielen der Zustand der mediaobject streamen dreht sich mit errortype Fatal zu Error. Kann mir jemand sagen, was mache ich falsch?

Bearbeiten
Eine Lösung, die ich gefunden wird libvlc in Kombination mit Qt, die ich gelernt, in dieser Thread . Hier ist ein Codebeispiel für den interessierten. Ich bin noch auf der Suche nach einer Phonon-basierten Lösung.
Idealerweise würde ich nur noch eine SDP-Datei zur Verfügung zu stellen und Arbeit erledigt ist.

War es hilfreich?

Lösung

Ich war in der Lage, es zu bekommen mit der libvlc Lösung zu arbeiten. Ich kann nicht garantuee, dass dies die am besten Lösung obwohl, wie ich aufgehört einfach danach suchen.

Hier ist ein Link auf die libvlc Probe .

Andere Tipps

So wie ich das verstehe Phonon zumindest unter Windows funktioniert, ist, dass QT eine Phonon-Backend-Plugin für Directshow bietet (\ Plugins \ phonon_backend \ phonon_ds94.dll) und GStreamer in Ihrem Fall. Dann würden Sie entweder erhalten oder Ihre eigenen Directshow-Filter schreiben, die RTP-Streams als Quelle akzeptieren kann. Directshow kümmert sich um die Decodierung und Phonon die kümmern sich um die Rendering.

Also, wenn das Backend funktioniert, ist der Anwendungscode so einfach wie:

        Phonon::MediaObject *media = new Phonon::MediaObject();
        Phonon::VideoWidget *video = new Phonon::VideoWidget();
        Phonon::createPath(media, video);
        media->setCurrentSource(source);
        media->play();

Es scheint, dass das Problem mit dem GStreamer-Backend liegt RTP als Quelle zu akzeptieren. Können Sie diese Quelle im Standalone-GStreamer ohne Probleme wiedergeben?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top