我的管道方案(动态链接):
videotestsrc或audiotestsrc! decodebin!排队! autovideosink或 autoaudiosink
我尝试使用this advice来检查我获得的数据类型(视频/音频),但如果我使用像解复用器这样的解码器,那么我只需“src_0”而不是“音频”或“视频”。如何检查我的打击垫类型以链接正确的元素进行播放?可能我可以使用一个通用元素进行音频播放和视频播放,例如playink(但它不适用于视频)?
答案 0 :(得分:2)
您可以获取新添加的打击垫的大写,并检查它是否包含音频或视频上限(或其他内容)。
尝试:
gst_pad_get_current_caps (pad);
或:
gst_pad_get_allowed_caps (pad);
如果您使用gstreamer 0.10(已过时3年未使用),您可以:
gst_pad_get_caps_reffed (pad);
然后只需检查返回的大写字母(如果是音频或视频),方法是从大写字母中获取结构并检查其名称是否以视频或音频开头。
/* There might be multiple structures depending on how you do it,
* but usually checking one in this case is enough */
structure = gst_caps_get_structure (caps, 0);
name = gst_structure_get_name (structure);
if (g_str_has_prefix (name, "video/")) {
...
} else if (g_str_has_prefix (name, "audio/")) {
...
}