我是GStreamer的新手,正在尝试编写一些用例。
你们能简单地给我解释一下GStreamer中的关键帧吗?
另外,我有一个mp4视频,我需要从中找到一种模式并选择那些帧,然后推入一个单独的水槽。
为了选择mp4文件,我使用了filesrc源元素,但是它没有videotestsrc中具有的名为“ pattern
”的属性。那么如何选择视频中的图案呢?
答案 0 :(得分:0)
关键帧是每隔一定时间与标头信息一起出现的帧。我不知道很多其他细节,但是我录制的视频需要从关键帧开始,而不是一些随机缓冲区。
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
}