AVCodecContext没有coded_frame
时间: 2024-01-20 08:04:15 浏览: 22
AVCodecContext中的coded_frame在FFmpeg 4.0之后已经被弃用,取而代之的是AVFrame中的flags属性中的AV_FRAME_FLAG_KEY标志。AVFrame中的flags属性表示当前帧的一些状态,如是否为关键帧等。如果AVFrame的flags属性中包含AV_FRAME_FLAG_KEY,则表示当前帧是一个关键帧。如果不包含AV_FRAME_FLAG_KEY,则表示当前帧是一个非关键帧。你可以通过检查AVFrame的flags属性来确定当前帧是否为关键帧。
相关问题
avcodec_receive_frame中文
avcodec_receive_frame是FFmpeg中的函数,用于从解码器中接收解码后的视频帧。该函数的作用是从解码器中获取解码后的视频帧,并将其存储在AVFrame结构体中。AVFrame结构体中包含了视频帧的各种信息,如宽度、高度、像素格式等。
当调用avcodec_receive_frame函数时,如果解码器中有可用的视频帧,则该函数将返回0,并将解码后的视频帧存储在AVFrame结构体中。如果解码器中没有可用的视频帧,则该函数将返回负值。在这种情况下,应该继续调用avcodec_receive_frame函数,直到解码器中有可用的视频帧为止。
avcodec_receive_frame函数的调用方式如下:
int avcodec_receive_frame(AVCodecContext *avctx, AVFrame *frame);
其中,avctx是AVCodecContext结构体的指针,该结构体包含了解码器的各种参数和状态信息;frame是AVFrame结构体的指针,用于存储解码后的视频帧。
总之,avcodec_receive_frame函数是FFmpeg中的一个非常重要的函数,用于从解码器中获取解码后的视频帧,是视频解码过程中必不可少的一环。
avcodec_send_frame
avcodec_send_frame是FFmpeg中的一个函数,用于将视频帧发送给编码器进行编码。它的函数原型为:
```
int avcodec_send_frame(AVCodecContext *avctx, const AVFrame *frame);
```
其中,avctx是编码器的上下文,frame是要编码的视频帧。该函数返回0表示成功,否则表示失败。在使用该函数之前,需要先通过avcodec_open2函数打开编码器。调用avcodec_send_frame函数后,需要使用avcodec_receive_packet函数获取编码后的数据包。