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

问题描述 投票:0回答:1

我正在尝试从 GstSample 获取数据以在我的应用程序接收器中处理它。 但我找不到从样本中提取数据的方法。 我已经设置了回调函数“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”,这是真的吗?据我了解,缓冲区包含样本。

c++ gstreamer
1个回答
6
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.