先是AVFrame转QImage
#pragma execution_character_set("utf-8")
static int decode_write_frame(AVCodecContext *avctx, AVFrame *frame, int *frame_count, AVPacket *pkt, int last)
{
int len, got_frame;
char buf[1024];
len = avcodec_decode_video2(avctx, frame, &got_frame, pkt);
if (len < 0) {
printf("Error while decoding frame %d\n", *frame_count);
return len;
}
if (got_frame) {
printf("Saving frame %3d\n", *frame_count);
QImage image(QSize(avctx->width, avctx->height), QImage::Format_RGB888);
for(int h = 0; h < avctx->height; h++)
{
for(int w = 0; w < avctx->width; w ++)
{
int hh = h >> 1;
int ww = w >> 1;
int Y = frame->data[0][h * frame->linesize[0] + w];
int U = frame->data[1][hh * (frame->line