FFmpeg:Jpeg文件到AVFrame

我需要使用FFmpeg库将几个jpg文件加入到video中。 但是我在阅读这些文件时遇到了问题。 这是一个读取图像文件并生成AVFrame的函数:

AVFrame* OpenImage(const char* imageFileName) { AVFormatContext *pFormatCtx; if(av_open_input_file(&pFormatCtx, imageFileName, NULL, 0, NULL)!=0) { printf("Can't open image file '%s'\n", imageFileName); return NULL; } dump_format(pFormatCtx, 0, imageFileName, false); AVCodecContext *pCodecCtx; pCodecCtx = pFormatCtx->streams[0]->codec; pCodecCtx->width = W_VIDEO; pCodecCtx->height = H_VIDEO; pCodecCtx->pix_fmt = PIX_FMT_YUV420P; // Find the decoder for the video stream AVCodec *pCodec = avcodec_find_decoder(pCodecCtx->codec_id); if (!pCodec) { printf("Codec not found\n"); return NULL; } // Open codec if(avcodec_open(pCodecCtx, pCodec)width, pCodecCtx->height); uint8_t *buffer = (uint8_t *) av_malloc(numBytes * sizeof(uint8_t)); avpicture_fill((AVPicture *) pFrame, buffer, PIX_FMT_YUVJ420P, pCodecCtx->width, pCodecCtx->height); // Read frame AVPacket packet; int framesNumber = 0; while (av_read_frame(pFormatCtx, &packet) >= 0) { if(packet.stream_index != 0) continue; int ret = avcodec_decode_video2(pCodecCtx, pFrame, &frameFinished, &packet); if (ret > 0) { printf("Frame is decoded, size %d\n", ret); pFrame->quality = 4; return pFrame; } else printf("Error [%d] while decoding frame: %s\n", ret, strerror(AVERROR(ret))); } } 

这不会导致错误,但只创建黑框,没有图像。 怎么了?

此代码是正确的(除了配色方案的问题)。 向video添加框架时出现了错误。