You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GstOverlay搭配GTK/wxWidget实现无填充黑边视频渲染问题求解

问题描述

我将视频流渲染到wxWidget的ImagePanel控件(代码中对应变量为m_renderwindow)中,渲染画面上下存在填充黑边,尝试了多种方法都无法将其去除。调用gst_video_overlay_set_render_rectangle接口后对应区域变为黑屏,无法正常显示视频流。

复现代码
GstState state;
GstState pending;
GstPad* pad = nullptr;
GError* error = NULL;
GstElement* source;
GstElement* clocktime;
GstElement* textoverlay;
GstCaps* caps = gst_caps_new_simple("application/x-rtp",
    "media", G_TYPE_STRING, "video",
    "payload", G_TYPE_INT, 96,
    "encoding-name", G_TYPE_STRING, "H264",
    NULL);

(*ptrstats).pipeline = gst_parse_launch("udpsrc name=source !rtph264depay !h264parse !avdec_h264 ! videoconvert !d3dvideosink name=mysink sync=false ", &error);

if (!(*ptrstats).pipeline) {
    outfile << "Load video : ", error->message, "\n";
    exit(1);
}

source = gst_bin_get_by_name(GST_BIN((*ptrstats).pipeline), "source");
g_object_set(G_OBJECT(source), "caps", caps, NULL);
g_object_set(G_OBJECT(source), "port", m_port, NULL);

pad = gst_element_get_static_pad(source, "src");
gst_pad_add_probe(pad, GST_PAD_PROBE_TYPE_BUFFER, (GstPadProbeCallback)buffer_out_cb, ptrstats, NULL);
gst_object_unref(pad);

#ifdef __WXGTK__
outfile << "__WXGTK__\n";
GstElement* sink = gst_bin_get_by_name((GstBin*)(*ptrstats).pipeline, "mysink");
gst_video_overlay_set_window_handle(GST_VIDEO_OVERLAY(sink), m_xid);
#elif defined __WXMSW__
GstElement* sink = gst_bin_get_by_name((GstBin*)(*ptrstats).pipeline, "mysink");
WXWidget hwnd = m_renderWindow->GetHandle();
//gst_video_overlay_set_render_rectangle(GST_VIDEO_OVERLAY(sink), 0, 0, 1224, 1024);
gst_video_overlay_set_window_handle(GST_VIDEO_OVERLAY(sink),
    reinterpret_cast<guintptr>(hwnd));
#endif


gst_element_set_state((*ptrstats).pipeline, GST_STATE_PLAYING);
解决方案

修改GStreamer管道中d3dvideosink的配置,添加force-aspect-ratio=false参数即可关闭强制宽高比校验,让视频画面自动拉伸填充整个渲染区域,消除上下填充黑边。


内容的提问来源于stack exchange,提问作者Arnaud Tullio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 15:27:03