avcodec_find_encoder()用于通过codec id 查找FFmpeg的编码器

avcodec_find_encoder_by_name()用于通过codec name 查找FFmpeg的编码器

avcodec_find_encoder()和avcodec_find_encoder_by_name() 的声明位于libavcodec\codec.h,如下:

/**
* Find a registered encoder with a matching codec ID.
*
* @param id AVCodecID of the requested encoder
* @return An encoder if one was found, NULL otherwise.
*/
const AVCodec *avcodec_find_encoder(enum AVCodecID id);

/**
* Find a registered encoder with the specified name.
*
* @param name name of the requested encoder
* @return An encoder if one was found, NULL otherwise.
*/
const AVCodec *avcodec_find_encoder_by_name(const char *name);

avcodec_find_encoder()函数的参数是一个编码器的ID,返回查找到的编码器(没有找到就返回NULL)

avcodec_find_encoder_by_name()函数的参数是一个编码器的名称,返回查找到的编码器(没有找到就返回NULL)

avcodec_find_encoder()函数的定义位于libavcodec\allcodecs.c, 如下: 

const AVCodec *avcodec_find_encoder(enum AVCodecID id)
{
return find_codec(id, av_codec_is_encoder);
}

  av_codec_is_encoder()是一个判断AVCodec是否为编码器的函数。如果是编码器,返回非0值,否则返回0

/**
* @return a non-zero number if codec is an encoder, zero otherwise
*/
int av_codec_is_encoder(const AVCodec *codec);

 find_codec()函数的讲解参见另一篇文章​