Y_h_y_ 2021-02-26 11:22 采纳率: 0%
浏览 187

FFMPEG 硬编码问题

我直接从FFMPEG官网下载的sdk,我的显卡是NVIDIA.

硬编码代码如下:

int InitEncoderCodec( int iWidth, int iHeight)
{
	AVCodec *  pH264Codec = avcodec_find_encoder_by_name("h264_nvenc");
	if(NULL == pH264Codec)
	{
		printf("%s", "avcodec_find_encoder failed");
		return  -1;
	}
	outPutEncContext = avcodec_alloc_context3(pH264Codec);
	outPutEncContext->gop_size = 30;
	//outPutEncContext->framerate = 30;
	outPutEncContext->has_b_frames = 0;
	outPutEncContext->max_b_frames = 0;
	//outPutEncContext = avcodec_alloc_context3(pH264Codec);
	outPutEncContext->codec_id = pH264Codec->id;
	outPutEncContext->time_base.num =1;
	outPutEncContext->time_base.den = 25;
	outPutEncContext->pix_fmt            = *pH264Codec->pix_fmts;
	outPutEncContext->width              =  iWidth;
	outPutEncContext->height             = iHeight;

	AVDictionary *options = NULL;
	outPutEncContext->flags |= AV_CODEC_FLAG_GLOBAL_HEADER;
	
	av_opt_set(outPutEncContext->priv_data,"async_depth","1",0);
	av_opt_set(outPutEncContext->priv_data,"max_dec_frame_buffering","1",0);
	av_opt_set(outPutEncContext->priv_data,"look_ahead","0",0);

	int ret = avcodec_open2(outPutEncContext, pH264Codec, &options);
	AVQSVContext *qsv = (AVQSVContext *)outPutEncContext->hwaccel_context;
	if (ret < 0)
	{
		printf("%s", "open codec failed");
		return  ret;
	}
	return 1;
}

但是在最后一步

int ret = avcodec_open2(outPutEncContext, pH264Codec, &options);

ret的值是-40

不知道是不是我从官网上下载的dll没有载入相关模块

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-09-07 17:36
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 以帮助更多的人 ^-^
    评论

报告相同问题?

悬赏问题

  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误