【问题标题】:How to include a gstreamer sink in a QML VideoItem?如何在 QML VideoItem 中包含 gstreamer 接收器?
【发布时间】:2017-01-24 16:47:20
【问题描述】:

我正在尝试使用 QML 将 gsrtreamer 视频集成到 QT 应用中。

我从使用远程视频的示例 qmlplayer2 开始:

player->setUri(QLatin1Literal("http://download.blender.org/peach/bigbuckbunny_movies/big_buck_bunny_480p_surround-fix.avi"));

我已修改此示例以使用管道获取 udpsrc:

    m_pipeline = QGst::Pipeline::create();
    QGst::ElementPtr udp = QGst::ElementFactory::make(QLatin1Literal("udpsrc"));
    udp->setProperty("address", "192.168.1.1");
    udp->setProperty("port", 3333);
    QGst::ElementPtr decodage = QGst::ElementFactory::make("jpegdec");
    QGst::ElementPtr videosink = QGst::ElementFactory::make("autovideosink");

相当于:

gst-launch-1.0 udpsrc address=192.168.1.1 port=3333 ! jpegdec ! autovideosink

这可行,我的视频流式传输,播放/暂停/停止按钮正常工作。

但是视频在另一个窗口

而我的QML 指定 VideoItem 在主窗口中:

Rectangle {
    id: window
    width: 600
    height: 300
    Column {
        width: 600
        height: 544
        y : 10;
        VideoItem {
            id: video
            y : 10;
            width: window.width
            height: 260
            surface: videoSurface1 //bound on the context from main()
        }
        // Other buttons

我发现的每个主题要么太旧(gstreamer 从今年 5.5 开始在 Qt 中原生)要么没有答案

我的工作有错误吗?

还有其他方法可以做我想做的事吗?

谢谢。

【问题讨论】:

    标签: c++ qt qml gstreamer qt5.5


    【解决方案1】:

    这里的问题是 autovideosink 没有实现“GstVideoOverlay”。在您的管道中,您应该使用“xvimagesink,ximagesink”这个元素之一作为接收器元素,或者直接使用“playbin”,这个元素实现“GstVideoOverlay”接口。

    这里是一个使用“playbin”的例子。请注意,此示例使用没有 QT 包装器的纯 Gstreamer。

    GstElement *pipeline = gst_element_factory_make("playbin", "playbin");
    /* Set the URI to play */
    g_object_set(pipeline, "uri", url, NULL);
    gst_video_overlay_set_window_handle(GST_VIDEO_OVERLAY(pipeline), windowsID);
    

    *windowsID 是您要在其中绘制视频输出的小部件 ID。 *url 是您的视频网址。你会是“udp://192.168.1.1:3333”

    【讨论】:

    猜你喜欢
    • 2017-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-05
    • 1970-01-01
    相关资源
    最近更新 更多