Pregunta

Quiero crear un widget de Qt que puede reproducir flujos RTP entrante donde el vídeo se codifica como H264 y no contiene audio.

Mi plan básico para la aplicación es el siguiente:

  • Crea un fonón MediaSource objeto (tipo Stream).
  • Conectar con un QIODevice subclase que proporciona los datos
  • Obtener los datos de vídeo utilizando:
    • El href="http://research.edm.uhasselt.be/~jori/page/index.php?n=CS.Jrtplib" rel="nofollow noreferrer"> JRTPLIB biblioteca cliente
    • El GStreamer gstrtpbin plugin. Este plugin se encarga depayloading los paquetes y decodificación de vídeo. Tal vez esto mejora las posibilidades de que Phonon reconocer los datos.

Mi entorno:

  • Ubuntu 9.10
  • Qt 4.6

Mis preguntas:

  • ¿Es mi enfoque una buena? Tal vez estoy con vistas a una solución más obvia o simple?
  • Actualmente estoy experimentando este problema: al intentar reproducir el video stream el estado de la mediaobject vuelve a ErrorState con errortype FatalError. ¿Puede alguien decirme lo que estoy haciendo mal?

Editar
Una solución que encontré está utilizando libvlc en combinación con Qt, que aprendí sobre en este hilo . He aquí una ejemplo de código para el interesado. Todavía estoy en busca de una solución a base de fonones.
Lo ideal sería que sólo tendría que proporcionar un archivo SDP y el trabajo está hecho.

¿Fue útil?

Solución

Yo era capaz de conseguir que funcione utilizando la solución libvlc. No puedo garantuee que este es el mejor solución sin embargo ya que simplemente dejé de buscar después de eso.

Aquí hay una enlace a la muestra libvlc .

Otros consejos

Según entiendo Phonon funciona al menos en Windows es que QT ofrece un plugin de fonones backend para DirectShow (\ plugins \ phonon_backend \ phonon_ds94.dll) y GStreamer en su caso. De allí tendría que o bien obtener o escribir su propio filtro DirectShow que puede aceptar flujos RTP como fuente. DirectShow se encarga de la decodificación, y Phonon se hará cargo de la prestación.

Así que si el servidor funciona, el código de la aplicación es tan simple como:

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

Parece que el problema radica en el backend GStreamer aceptar RTP como una fuente. Se puede reproducir esa fuente en GStreamer independiente sin ningún problema?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top