如何阅读H264 SPS&使用libavformat API的PPS NAL字节?
我尝试使用“av_read_frame(input_avFormatContext,& avPkt)”API从.mp4视频(编解码器是h264)文件中将视频数据读取到“AVPacket”结构。
我将avPkt->数据转储到文件中。但第一帧读取是IDR帧。
使用“ffmpeg -i video.mp4 video.h264”生成的文件将包含SPS& PPS在IDR开始之前开始。
我想从.mp4文件中提取原始的.h264视频,并将其转储到SPS,PPS,IDR,P1,P2 ...顺序中。
我希望使用libavformat API以编程方式完成此任务。
有什么想法吗?
感谢。
答案 0 :(得分:3)
在mp4-container(mkv中)PPS / SPS与全局标题中的帧数据分开存储。要从libav * API访问它们,您需要在AVStream的AVCodecContext中查找与所需视频流相关的extradata字段。此外,extradata可以采用与标准H.264 NAL不同的格式,因此请参阅MP4容器规格以获取格式说明。