TightVNC H264编解码(二)之硬编码库的编译

在默认ffmpeg库不支持硬编码的情况下,通过编译ffnvcodec分支成功启用硬编码功能。然而,由于系统中nvEncodeAPI.dll版本过低(8.1)导致编码失败。为解决此问题,调整了vcpkg工具包中的ffmpeg和ffnvcodec版本配置,经过四步操作并重新编译,最终实现了与旧系统版本的兼容,从而可以享受硬编码带来的效率提升。
摘要由CSDN通过智能技术生成
AVCodec * codec = avcodec_find_encoder_by_name("nvenc_h264");

如果是默认的ffmpeg库,返回结果是NULL,看来是不带有硬编码功能的,重新编译分支ffnvcodec,不到半个小时编译完成,返回值终于ok了(^-^),继续编写代码:

AVCodecContext *avctx = avcodec_alloc_context3(codec);
int ret = avcodec_open2(avctx, codec, 0);

返回值-40(-_-)(ENOSYS),跟踪调试,在“nvenc.c ”文件中函数nvenc_load_libraries中判断版本处失败返回,

err = dl_fn->nvenc_dl->NvEncodeAPIGetMaxSupportedVersion(&nvenc_max_ver);
    if (err != NV_ENC_SUCCESS)
        return nvenc_print_error(avctx, err, "Failed to query nvenc max version");

    av_log(avctx, AV_LOG_VERBOSE, "Loaded Nvenc version %d.%d\n", nvenc_max_ver >> 4, nvenc_max_ver & 0xf);

    if ((NVENCAPI_MAJOR_VERSION << 4 | NVENCAPI_MINOR_VERSION) > nvenc_max_ver) {
        av_log(avctx, AV_LOG_ERROR, "Driver does n
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值