gstreamer中extradata在哪里存放 怎么能够提取出来
时间: 2024-03-27 16:39:45 浏览: 64
在 GStreamer 中,extradata 存储在媒体流的特定数据字段中。这个字段通常被称为 codec_data 或 extradata,不同的媒体格式可能使用不同的字段名。
要提取 extradata,可以使用 GStreamer 中的 gst-rtsp-server 库中的代码作为参考。具体来说,可以查看 gst-rtsp-server 库中的 rtsp-media-factory.c 文件,找到该文件中的 create_element 函数。在该函数中,可以看到如下代码:
```
if (codec_data) {
GstBuffer *codec_data_buf = gst_buffer_new_wrapped_full(GST_MEMORY_FLAG_READONLY, codec_data, codec_data_size, 0, codec_data_size, NULL, NULL);
gst_caps_set_simple(caps, "codec_data", GST_TYPE_BUFFER, codec_data_buf, NULL);
}
```
这段代码将 extradata 作为一个 GstBuffer 对象存储在 caps 中的 codec_data 字段中。因此,要提取 extradata,可以使用类似以下的代码:
```
GstBuffer *codec_data_buf;
gst_caps_get_simple(caps, "codec_data", GST_TYPE_BUFFER, &codec_data_buf);
```
这将从 caps 中获取 codec_data 字段,并将其存储为一个 GstBuffer 对象,您可以进一步处理该 GstBuffer 对象以提取所需的 extradata。
阅读全文