关于h264的avc box中数据的提取。sps pps的获取。

如果你想获取视频中的avc数据,而不要音频的数据,你就需要录制一段不带音频的视频。

录制完成后保存视频,然后用WinHex打开。如果你是手机需要的视频就录制3gp格式。

然后CTRL+F搜索avc.可以看到如图:


把鼠标点击到avc附近,左边也就在01这个数据附近了。

好了avc box的内容就是从01开始,比如上图就是:

{ 0x01, 0x42, (byte) 0x80, 0x0A,(byte) 0xFF,

(byte) 0xE1, 0x00, 0x12, 0x67, 0x42, (byte) 0x80, 0x0A,
(byte) 0xE9, 0x02, (byte) 0xC1, 0x29, 0x08, 0x00, 0x00,
0x1F, 0x40, 0x00, 0x04, (byte) 0xE2, 0x00, 0x20, 0x01,
0x00, 0x04, 0x68, (byte) 0xCE, 0x3C, (byte) 0x80 };

sps信息就是67开头 67-20  pps就是68-80 具体数据意义可以看上篇博客。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
获取 H264 视频流SPSPPS 参数,可以使用 GStreamer 的 `h264parse` 元素。`h264parse` 元素可以解析 H264 视频流,并且提取SPSPPS 参数信息。一旦解析出 SPSPPS 参数,就可以将它们传递给视频解码器,以正确解码视频流。 下面是使用 `h264parse` 元素获取 SPSPPS 的示例代码: ```c // 创建 h264parse 元素 GstElement *h264parse = gst_element_factory_make("h264parse", "h264parse"); // 设置输入视频流的格式信息 GstCaps *caps = gst_caps_new_simple("video/x-h264", "stream-format", G_TYPE_STRING, "byte-stream", NULL); gst_pad_set_caps(gst_element_get_static_pad(h264parse, "sink"), caps); // 将视频流输入到 h264parse 元素 GstBuffer *inbuf = ...; // 输入的视频流数据 gst_app_src_push_buffer(GST_APP_SRC(appsrc), inbuf); // 从 h264parse 元素获取 SPSPPS 参数 GstStructure *sps_structure = gst_caps_get_structure(gst_pad_query_caps(gst_element_get_static_pad(h264parse, "src"), caps), 0); const GValue *sps_value = gst_structure_get_value(sps_structure, "sps"); GstBuffer *sps_buffer = gst_value_get_buffer(sps_value); GstStructure *pps_structure = gst_caps_get_structure(gst_pad_query_caps(gst_element_get_static_pad(h264parse, "src"), caps), 0); const GValue *pps_value = gst_structure_get_value(pps_structure, "pps"); GstBuffer *pps_buffer = gst_value_get_buffer(pps_value); // 将 SPSPPS 参数传递给视频解码器 GstVideoCodecState *state = gst_video_decoder_set_output_state(GST_VIDEO_DECODER(decoder), caps); gst_video_codec_state_set_info(state, GST_VIDEO_INFO_WIDTH, width); gst_video_codec_state_set_info(state, GST_VIDEO_INFO_HEIGHT, height); gst_video_codec_state_set_info(state, GST_VIDEO_INFO_FPS_N, fps_n); gst_video_codec_state_set_info(state, GST_VIDEO_INFO_FPS_D, fps_d); gst_video_codec_state_set_info(state, GST_VIDEO_INFO_FORMAT, format); gst_video_codec_state_set_info(state, GST_VIDEO_INFO_H264_SPS, sps_buffer); gst_video_codec_state_set_info(state, GST_VIDEO_INFO_H264_PPS, pps_buffer); ``` 在上面的示例,我们首先创建了一个 `h264parse` 元素,并将输入的视频流数据输入到该元素。然后,我们使用 `gst_caps_get_structure()` 函数和 `gst_structure_get_value()` 函数从 `h264parse` 元素的输出 caps 获取 SPSPPS 参数。最后,我们将 SPSPPS 参数传递给视频解码器,以正确解码视频流。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值