我尝试在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,我可以将它用于此目的吗?怎么样?