我编写了以下gstreamer函数,以在Windows的Win32窗口(HWND)上显示videotestsrc视频。此功能可以完美运行,并在给定的“ win”窗口句柄的整个窗口中显示videotestsrc。
void runGstPipe(HWND win)
{
GstElement *pipeline =
gst_parse_launch
("rtspsrc location=\"...\" ! decodebin ! d3dvideosink name=sink", NULL);
GstElement *sink = gst_bin_get_by_name(GST_BIN(pipeline), "sink");
gst_video_overlay_set_window_handle(GST_VIDEO_OVERLAY(sink), (guintptr)win);
GstStateChangeReturn sret = gst_element_set_state(pipeline,
GST_STATE_PLAYING);
}
接下来,我尝试使用以下选项来增强上述功能,以在“ win”窗口的一部分中显示videotestsrc。
a)通过如下使用glimagesink和render-rectangle选项
"rtspsrc location=\"...\" ! decodebin ! glvideosink render-rectange=\"<50, 50, 200, 150>\" name=sink"
b)通过如下使用gst_video_overlay_set_render_rectangle
gst_video_overlay_set_render_rectangle(GST_VIDEO_OVERLAY(sink), 50, 50, 200, 150);
以上两个选项均未更改渲染区域。即videotestsrc仍然占据整个窗口,而不是给定的坐标。谢谢,如果我能得到任何建议。