我是GStreamer的新手,正在尝试编写一些用例。
你们能简单地给我解释一下GStreamer中的关键帧是什么吗?
另外,我有一个mp4视频,我需要从中找到一种模式并选择那些帧并将其推入另一个接收器。
为了选择mp4文件,我使用filesrc源元素,但是它没有videotestsrc中具有的名为“ pattern
”的属性。那么如何选择视频中的图案呢?
关键帧是指与定时和标头信息间隔开的帧。我不知道很多其他细节,但是我录制的视频需要从关键帧开始,而不是一些随机缓冲区。
videotestsrc中的模式是生成的,而不是检测到的模式。您必须监视缓冲区并自己找到模式。您可以通过向某些元素(例如,filesrc src pad)添加探针来完成此操作。
GstPad *pad = gst_element_get_static_pad (filesrc, "src");
gst_pad_add_probe(pad, GST_PAD_PROBE_TYPE_EVENT_BOTH, probe_callback_method, user_data, NULL);
g_object_unref(pad);
static GstPadProbeReturn probe_callback_method (GstPad * pad, GstPadProbeInfo *info, gpointer user_data) {
GstBuffer* buf = gst_pad_probe_info_get_buffer(info);
// Do something with the buffer
}