gstreamer-1.0 从GstAppSink中的GstSample获取数据
gstreamer-1.0 get data from GstSample in GstAppSink
我正在尝试从 GstSample 获取数据以在我的应用接收器中处理它。
但是我找不到从样本中提取数据的方法。
我已经设置了 callball 函数 "new-sample":
static void GStPipeline::new_sample (GstAppSink *sink, CustomData *data) {
GstSample* sample;
sample = gst_app_sink_pull_sample(data->app_sink);
if (sample) {
data->sampleBuffer[data->num_samples] = sample;
data->num_samples++;
}
gst_sample_unref(sample);
}
我是不是漏掉了一些基本概念?是真的吗,因为 gstreamer-1.0 我必须提供回调 "new-sample" 而不是 "pull-buffer" ?据我了解,缓冲区包含样本。
我觉得你说得对。 GstAppSink 对回调有很好的记录。您只需要走得更远一点即可访问数据。
sample = gst_app_sink_pull_sample(sink)
buffer = gst_sample_get_buffer(sample)
gst_buffer_map(buffer, &info, GST_MAP_READ)
其中 info
的类型为 GstMapInfo
。然后可以在
找到您的数据
info.data
负载长度为 info.size
.
我正在尝试从 GstSample 获取数据以在我的应用接收器中处理它。 但是我找不到从样本中提取数据的方法。 我已经设置了 callball 函数 "new-sample":
static void GStPipeline::new_sample (GstAppSink *sink, CustomData *data) {
GstSample* sample;
sample = gst_app_sink_pull_sample(data->app_sink);
if (sample) {
data->sampleBuffer[data->num_samples] = sample;
data->num_samples++;
}
gst_sample_unref(sample);
}
我是不是漏掉了一些基本概念?是真的吗,因为 gstreamer-1.0 我必须提供回调 "new-sample" 而不是 "pull-buffer" ?据我了解,缓冲区包含样本。
我觉得你说得对。 GstAppSink 对回调有很好的记录。您只需要走得更远一点即可访问数据。
sample = gst_app_sink_pull_sample(sink)
buffer = gst_sample_get_buffer(sample)
gst_buffer_map(buffer, &info, GST_MAP_READ)
其中 info
的类型为 GstMapInfo
。然后可以在
info.data
负载长度为 info.size
.