【发布时间】:2011-03-18 05:15:18
【问题描述】:
我尝试使用 ffmpeg (libavcodec) 解码一系列 nal 单元,但出现“无帧”错误。我按照How does one encode a series of images into H264 using the x264 C API? 的指南制作了最终单元。我尝试了以下解码策略:
avcodec_init();
avcodec_register_all();
AVCodec* pCodec;
pCodec=lpavcodec_find_decoder(CODEC_ID_H264);
AVCodecContext* pCodecContext;
pCodecContext=lpavcodec_alloc_context();
avcodec_open(pCodecContext,pCodec);
AVFrame *pFrame;
pFrame=avcodec_alloc_frame();
//for every nal unit:
int frameFinished=0;
//nalData2 is nalData without the first 4 bytes
avcodec_decode_video(pCodecContext,pFrame,&frameFinished,(uint8_t*) nalData2,nalLength);
我通过了我得到的所有单元,但 frameFinished 保持为 0。我想 pCodecContext 设置一定有问题。有人可以给我一个工作示例吗?
谢谢
【问题讨论】:
-
为了使解码器能够解码您的视频,您需要为其提供流参数集和图片参数集 NAL 单元,然后它才能正确解码切片/帧。