我想从一个特殊的框架(比如图片)制作一个备份框架(AVFrame)。所以,我写了
AVFrame* bkf = avcodec_alloc_frame();
memcpy(bkf,pic,sizeof(AVFrame));
bkf->extended_data = pic->extended_data;
bkf->linesize[0] = pic->linesize[0];
memcpy(bkf->data, pic->data, sizeof(pic->data));
bkf->reordered_opaque = pic->reordered_opaque;
bkf->sample_rate = pic->sample_rate;
bkf->channel_layout = pic->channel_layout;
bkf->pkt_pts = pic->pkt_pts;
bkf->pkt_pos = pic->pkt_pos;
bkf->width = pic->width;
bkf->format = pic ->format;
将图片复制到 bkf。但是跑完之后,看到了很多失真。知道如何从解码的帧中制作正确的副本吗?
最佳答案
使用 AVFrame *bkf = av_frame_copy() 分配 bkf 后使用 av_frame_alloc (bkf, pic)。
关于ffmpeg:从解码帧(AVFrame)制作副本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32083278/