Question

Je veux créer un widget Qt qui peut lire les flux entrants RTP où la vidéo est codé comme H264 et ne contient pas audio.

Mon plan de base pour la mise en œuvre est la suivante:

  • Créer un phonon MediaSource objet (type Stream).
  • Connectez avec une sous-classe QIODevice qui fournit les données
  • Obtenir les données vidéo en utilisant soit:
    • JRTPLIB bibliothèque client
    • GStreamer de gstrtpbin plugin. Ce plugin prend soin depayloading les paquets et le décodage de la vidéo. Peut-être que cela améliore les chances que Phonon reconnaîtra les données.

Mon environnement:

  • Ubuntu 9.10
  • Qt 4.6

Mes questions:

  • Mon approche une bonne? Peut-être que je donne sur une solution plus évidente ou simple?
  • Je rencontre actuellement cette question: lorsque vous essayez de lire le flux vidéo de l'état du mediaobject se tourne vers errorState avec errorType FatalError. Quelqu'un peut-il me dire ce que je fais mal?

Modifier
Une solution que je trouve utilise libvlc en combinaison avec Qt, que j'appris dans cette fil. Voici un exemple de code pour l'intéressé. Je cherche toujours une solution phonon.
Idéalement je voudrais seulement besoin de fournir un fichier SDP et le travail est fait.

Était-ce utile?

La solution

J'ai pu le faire fonctionner avec la solution libvlc. Je ne peux pas que ce soit Garantie meilleure solution mais comme je l'ai simplement arrêté à la recherche après.

Voici un lien vers l'échantillon libvlc .

Autres conseils

La façon dont je comprends Phonon fonctionne au moins dans Windows est que QT fournit un plug-in back-end de phonon pour DirectShow (\ plugins \ phonon_backend \ phonon_ds94.dll) et GStreamer dans votre cas. Ensuite, vous obtenir ou écrire votre propre filtre DirectShow qui peut accepter les flux RTP comme source. DirectShow prend en charge le décodage et Phonon prendra soin du rendu.

Donc, si le back-end fonctionne, le code d'application est aussi simple que:

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

Il semble que le problème réside dans le backend GStreamer accepter RTP comme source. Pouvez-vous lire cette source dans GStreamer autonome sans problème?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top