Pour vous connecter à Gstreamer avec Qt afin de jouer un gstreamer vidéo dans le Widget Qt

J'ai essayé d'utiliser phonon pour lire la vidéo, mais ne pouvait pas réussir. Hors fin venu à connaître à travers l'intervalle Qt forums que même la dernière version de Qt ne prend pas en charge phonon. C'est quand j'ai commencé à utiliser Gstreamer.Des suggestions quant à la façon de connecter le Gstreamer fenêtre avec le widget Qt?Mon but est de jouer une vidéo en utilisant Gstreamer sur le widget Qt.Alors, comment puis-je relier le gstreamer fenêtre et le widget Qt?

Je réussis à obtenir l'Id du widget par winid().
En outre, avec l'aide de Gregory Pakosz, j'ai ajouté les dessous de 2 lignes de code dans mon application

QApplication::syncX();
gst_x_overlay_set_xwindow_id(GST_X_OVERLAY(sink), widget->winId());

Toutefois ne suis pas en mesure de relier le widget Qt avec le gstreamer de la fenêtre vidéo.

C'est ce que mon exemple de code devrait ressembler à :-

int main(int argc, char *argv[])
{
printf("winid=%d\n", w.winId());
    gst_init (NULL,NULL);
    /* create a new bin to hold the elements */
    bin = gst_pipeline_new ("pipeline");

      /* create a disk reader */
  filesrc = gst_element_factory_make ("filesrc", "disk_source");
  g_assert (filesrc);



  g_object_set (G_OBJECT (filesrc), "location", "PATH_TO_THE_EXECUTABLE", NULL);

  demux = gst_element_factory_make ("mpegtsdemux", "demuxer");
  if (!demux) {
    g_print ("could not find plugin \"mpegtsmux\"");
    return -1;
  }

  vdecoder = gst_element_factory_make ("mpeg2dec", "decode");
  if (!vdecoder) {
    g_print ("could not find plugin \"mpeg2dec\"");
    return -1;
  }

  videosink = gst_element_factory_make ("xvimagesink", "play_video");
  g_assert (videosink);


  /* add objects to the main pipeline */

  gst_bin_add_many (GST_BIN (bin), filesrc, demux, vdecoder, videosink, NULL);


  /* link the elements */
  gst_element_link_many (filesrc, demux, vdecoder, videosink, NULL);

    gst_element_set_state(videosink, GST_STATE_READY);

    QApplication::syncX();
    gst_x_overlay_set_xwindow_id(GST_X_OVERLAY(videosink), w.winId());



  /* start playing */
  gst_element_set_state (bin, GST_STATE_PLAYING);

}

Pourriez-vous expliquer plus en détail sur l'utilisation de gst_x_overlay_set_xwindow_id() wrt mon contexte?

Je pouvais obtenir aucune idée comment je peux intégrer gstreamer sous Qt?
Merci de m'aider à résoudre ce problème

juste une petite question, pourquoi ne pas utiliser phonon? Il utilise gstreamer comme backend (sur linux) et est bien intégré dans Qt.
J'ai essayé d'utiliser phonon pour lire la vidéo, mais ne pouvait pas réussir. Oflate venu à connaître à travers l'intervalle Qt forums que même la dernière version de Qt ne prend pas en charge phonon. C'est quand j'ai commencé à utiliser Gstreamer.Des suggestions quant à la façon de connecter le Gstreamer fenêtre avec le widget Qt?

OriginalL'auteur raggio | 2010-02-12