3

我正在使用 C/C++ 中的 FFMpeg 库来开发媒体播放器。
此源使用以下代码在文件中查找视频流的解码器:

pCodec=avcodec_find_decoder(pCodecCtx->codec_id); ,

其中 pCodecCtx 是指向视频流的编解码器上下文的指针,而 pCodec 是指向初始化为 NULL 的 AVCodec 的指针。

struct AVCodec *codec如果我们必须显式地找到解码器,那么 find 是什么struct AVCodecContext?这是在这里定义的。有人可以帮我理解它的用途吗?

4

1 回答 1

0

AVCodec 是一个结构,用于保存有关编解码器的信息,例如编解码器名称等。

请参阅此处了解定义。

如果您想阅读网站上列出的 muxing.c 示例,他们使用 AVCodec 本身来初始化 AVCodecContext 中的 AVCodec。

AVCodec *codec;
AVCodecID codec_id; // <-enum value (found based on the codec you enter)
AVCodecContext context;

//find and set encoder (or decoder) based on codec ID
codec = avcodec_find_encoder(codec_id);

//       or
// codec = avcodec_find_decoder(codec_id);

//Allocate encoding context for the AVCodec within AVCodecContext
context = avcodec_alloc_context3(*codec);

//Set the codec_id within AVCodecContext.
context->codec_id = codec_id;


于 2019-05-07T14:52:33.450 回答