我想做的很简单。在视频混合器上启用接收器垫:
/* Manually link the mixer, which has "Request" pads */
mixer_sink_pad_template = gst_element_class_get_pad_template(GST_ELEMENT_GET_CLASS(videomixer), "sink_%u");
mixer_sink_pad = gst_element_request_pad(videomixer, mixer_sink_pad_template, NULL, NULL);
sink_pad = gst_element_get_static_pad(videomixer, "src");
gst_pad_link(sink_pad, mixer_sink_pad);
然后设置alpha,xpos,ypos,例如
g_object_set(videomixer, "sink_0::alpha", 0.5, NULL);
但是,这不起作用。
(orig_code:22527): GLib-GObject-WARNING **: g_object_set_valist: object class 'GstVideoMixer2' has no property named 'sink_0::alpha'
我试图弄清楚获取C代码以设置视频混音器的sink_0&的语法。 sink_1 pad properties。
有人能指出它有多容易吗?
答案 0 :(得分:1)
这是我自己的问题的答案。
首先请注意。我认为当从相机中取出不良数据时(通常在启动时),没有足够的数据来存档视频流和代码段错误。我的经验是:如果再跑一次,那就没事了。
首先要做的事情。要访问视频混合器,您必须在链接元素时创建它们。这是一个例子:
/* Manually link the mixer, which has "Request" pads */
source0_src_pad = gst_element_get_static_pad (source0, "src");
mixer_sink_pad_template = gst_element_class_get_pad_template(GST_ELEMENT_GET_CLASS(videomixer), "sink_%u");
mixer_sink_pad = gst_element_request_pad(videomixer, mixer_sink_pad_template, NULL, NULL);
if (gst_pad_link(source0_src_pad, mixer_sink_pad) != GST_PAD_LINK_OK) {
g_printerr ("source0 and mixer pads could not be linked.\n");
gst_object_unref (pipeline);
return -1;
}
我没有对此进行测试,但您应该可以在自动链接后立即设置xpos:
g_object_set(mixer_sink_pad, "xpos", 1280, NULL);
gst_object_unref(source0_src_pad);
我正在使用以下代码在代码中设置pad xpos:
GstPad* sink_0 = gst_element_get_static_pad(videomixer, "sink_0");
g_object_set(sink_0, "xpos", 0, NULL);
感谢马丁指出我正确的方向。
编辑,因为我误解了一些代码。