From: Alexander B. <abi...@gm...> - 2005-01-16 23:48:27
|
Hey, I've downloaded kiss and aldegone for having some examples for creating a basic player with gstreamer. I'm using QT and the xv-plugin for displaying the content. My player is able to play divx, mpeg etc.... but no XVID !!??? I'm getting just the message "killed".. no exception, nothing . aldegone can play XVID without any problems but I can't see a huge / significant difference between my code and the code from aldegone. It would be great if anyone could give me some advices for getting this thing 100% to work. This is the way I'm initializing GStreamer:: void GStreamer::initialize() { gst_init(NULL,NULL); /* initialize GStreamer objects */ m_pPipeline = gst_element_factory_make ("playbin", "player"); if (!m_pPipeline) return; m_pAudioSink = gst_element_factory_make ("alsasink", "audiosink"); m_pVideoSink = gst_element_factory_make ("xvimagesink", "videosink"); g_object_set (G_OBJECT (m_pPipeline),"video-sink", m_pVideoSink,"audio-sink", m_pAudioSink,NULL); gst_element_set_state (m_pPipeline, GST_STATE_READY); m_bInitialized = true; } the way I'm setting the output window : void GStreamer::drawCurrentFrame(QWidget *widget) { /* expose overlay */ if (m_pVideoSink && GST_IS_X_OVERLAY (m_pVideoSink)) { gst_x_overlay_set_xwindow_id (GST_X_OVERLAY (m_pVideoSink), widget->winId()); gst_x_overlay_expose (GST_X_OVERLAY (m_pVideoSink)); } } // and here the code for setting the source and start playing void GStreamer::setVideoSource(QString src) { if(!src || src.length() <= 0) return; //g_object_set (G_OBJECT (m_pFileSrc), "location", src.ascii(), NULL); if (GST_STATE (m_pPipeline) > GST_STATE_READY) gst_element_set_state (m_pPipeline, GST_STATE_READY); g_object_set (m_pPipeline, "uri",QString(QString("file:///")+src).ascii(), NULL); printf("GStreamer url location is: %s\n",src.ascii()); } void GStreamer::startPlaying() { gst_element_set_state (GST_ELEMENT (m_pPipeline), GST_STATE_PLAYING); } Regards, Alexander Bierbrauer |