在QML中显示Gstreamer视频

时间:2016-05-12 02:03:08

标签: c++ qt qml gstreamer

我尝试在QML(Qt Quick Controls Application)中使用Gstreamer(不是QtGstreamer或QtMultimedia):

QQmlEngine engine;
   QQmlComponent component(&engine,
           QUrl(QStringLiteral("qrc:/main.qml")));
   QObject *object = component.create();

   QWidget *rect = (QWidget*) object->findChild<QObject*>("rectangle1");

   gst_init(NULL, NULL);

   GstElement *pipeline;
   pipeline = gst_element_factory_make("playbin", "player");

   g_object_set (G_OBJECT (pipeline), "uri", "file:///home/user/Downloads/test.mp4", NULL);

   gst_element_set_state(pipeline, GST_STATE_NULL);
   gst_video_overlay_set_window_handle(GST_VIDEO_OVERLAY(pipeline), rect->winId());
   gst_element_set_state(pipeline, GST_STATE_PLAYING);

但我的应用程序在启动后崩溃了。此代码适用于Qt Widgets,但只有QML才会出现问题。

那么如何通过纯Gstreamer(不是QtGstreamer或QtMultimedia)在QML项目中显示视频?

P.S。当然没有后端编译或类似的东西(如果可能的话)。我想我可以使用正确的QML项目或Widget。

P.S.S我也听说过QDeclarativeItem,我可以将它用于此目的吗?怎么样?

0 个答案:

没有答案