开发需要能够获取一个编码器支持的输入图像数据类型(pix_fmt),但是网上找了一圈,除了找到了相关命令,并没有找到怎么通过代码获取。于是扒了下源码,实现了功能。
ffmpeg 版本:4.4.2
代码方式
话不多说,直接上代码
void print_pix_fmt(AVCodec *codec) {
printf(" support pix_fmts : ");
const AVPixelFormat *pfmt = codec->pix_fmts;
while (pfmt != NULL && *pfmt != AV_PIX_FMT_NONE) {
const char *name = av_get_pix_fmt_name(*pfmt );
printf("%d (%s) ",*pfmt , name);
pfmt ++;
}
printf("\n");
}
上述代码须在find_encoder系列函数调用后执行。
输出:
命令方式
输入命令
ffmpeg -h encoder=h264_nvenc
输出结果: