gstreamer-1.0 从 GstAppSink 中的 GstSample 获取数据

gstreamer-1.0 get data from GstSample in GstAppSink

本文关键字:GstSample 获取 数据 中的 GstAppSink gstreamer-1      更新时间:2023-10-16

我正在尝试从 GstSample 获取数据以在我的应用程序接收器中处理它。但是我找不到从样本中提取数据的方法。我已经将调用球函数设置为"新样本":

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 开始,我必须提供一个回调"新样本"而不是"拉取缓冲区"?据我了解,缓冲区包含样本。

我认为你说得对。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.sizeinfo.data