ffmepg中根据nal数据判断sps\pps\I帧、p帧、b帧
时间: 2024-05-15 12:14:16 浏览: 28
在ffmpeg中,可以使用h264_parser_parse2()函数解析NALU数据,并获取到对应的类型。具体实现可以参考以下代码示例:
```c
AVCodecParserContext *parser_ctx = av_parser_init(AV_CODEC_ID_H264);
AVPacket *pkt = av_packet_alloc();
// 假设nal数据存储在buf中
pkt->data = buf;
pkt->size = buf_size;
int ret = 0;
int nal_type = 0;
while (pkt->size > 0) {
// 解析NALU数据
ret = av_parser_parse2(parser_ctx, codec_ctx, &pkt->data, &pkt->size,
pkt->data, pkt->size, AV_NOPTS_VALUE, AV_NOPTS_VALUE, 0);
if (ret < 0) {
// 解析失败
break;
}
if (pkt->size == 0) {
// 解析完成
break;
}
nal_type = parser_ctx->nal_unit_type;
switch (nal_type) {
case H264_NAL_SPS:
// SPS帧
break;
case H264_NAL_PPS:
// PPS帧
break;
case H264_NAL_IDR_SLICE:
case H264_NAL_SLICE:
// I帧、P帧或B帧
break;
default:
// 其他类型的NALU
break;
}
}
av_packet_free(&pkt);
av_parser_close(parser_ctx);
```
其中H264_NAL_SPS、H264_NAL_PPS、H264_NAL_IDR_SLICE和H264_NAL_SLICE分别代表SPS帧、PPS帧、I帧和P/B帧。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)