Ffmpeg libavcodec将AV帧解码到FIFO缓冲区

Ffmpeg libavcodec将AV帧解码到FIFO缓冲区,ffmpeg,buffer,avcodec,Ffmpeg,Buffer,Avcodec,我的目标是对一个视频文件的多个帧进行解码,将解码后的帧累积到FIFO缓冲区中,然后读取它们。我将数据包解码为我的AVFRame mFrame: avcodec_decode_video2(mCodecContext、mFrame、frameFinished和mPacket) 通常我可以将YUV帧从mFrame->data[n][0]复制到我的FIFO缓冲区,但我只是尽可能地减少memcpy。因此,我不想复制mFrame->data[n][0],我只想将mFrame(比它指向的帧小得多)存储在缓冲

我的目标是对一个视频文件的多个帧进行解码,将解码后的帧累积到FIFO缓冲区中,然后读取它们。我将数据包解码为我的AVFRame mFrame:

avcodec_decode_video2(mCodecContext、mFrame、frameFinished和mPacket)

通常我可以将YUV帧从mFrame->data[n][0]复制到我的FIFO缓冲区,但我只是尽可能地减少memcpy。因此,我不想复制mFrame->data[n][0],我只想将mFrame(比它指向的帧小得多)存储在缓冲区中,在读取时,我只需获取它并访问数据

我试着这样做,但没有成功。AVFrames是从缓冲区提取的,但是当你在屏幕上显示它们时,视频就像冻结了一样。您可能认为我使用的是相同的mFrame,每次解码数据包时都会覆盖它,但我不是。每次在解码循环中,我都会创建一个新的AVFrame*

这个问题与avcodec的工作方式有关吗?有什么想法吗

谢谢 迈克