You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用OpenCV结合H264编码生成视频时,提示无法加载libcuda.so.1

解决OpenCV-Python H.264编码时libcuda.so.1加载失败的问题

你的错误提示:

[h264_nvenc @ 0x562490d62d80] Cannot load libcuda.so.1
Could not open codec 'h264_nvenc': Unspecified error

本质是因为你代码里指定的fourcc = cv2.VideoWriter_fourcc(*'H264'),在OpenCV中默认会调用NVIDIA的NVENC硬件编码器,而这个编码器依赖NVIDIA的CUDA驱动库,你的系统要么没装CUDA驱动,要么库路径配置有问题。下面是几种针对性的解决方案:

  • 方案一:安装并配置NVIDIA CUDA驱动

    • 先确认你的机器有NVIDIA独立显卡,运行命令 nvidia-smi,如果没有输出或提示命令不存在,说明需要安装对应显卡型号的CUDA驱动(注意是驱动,不是CUDA Toolkit开发包)。
    • 安装完成后,检查libcuda.so.1是否存在于系统库路径中(比如/usr/lib/x86_64-linux-gnu/或/usr/local/cuda/lib64/)。如果找不到,找到实际的CUDA驱动库文件(比如libcuda.so.535.104.05,版本号依你安装的驱动而定),创建软链接:
      sudo ln -s /usr/lib/x86_64-linux-gnu/libcuda.so.535.104.05 /usr/lib/x86_64-linux-gnu/libcuda.so.1
      
    • 重启终端后再运行你的代码,就能正常调用NVENC编码器了。
  • 方案二:改用软件H.264编码器(无需NVIDIA显卡)
    如果你的机器没有NVIDIA显卡,或者不想折腾CUDA驱动,可以换用OpenCV支持的软件H.264编码器,常用的有两种:

    • 使用avc1编码器(基于FFmpeg的软件实现),修改代码中的fourcc部分:
      import cv2
      width = 1920  # 替换成你的实际宽度
      height = 1080 # 替换成你的实际高度
      name = "output.mp4"
      # 改用软件H.264编码器
      fourcc = cv2.VideoWriter_fourcc(*'avc1')
      video = cv2.VideoWriter(name, fourcc, 30, (width, height))
      # 后续写入帧的逻辑...
      video.release()
      
    • 或者使用X264编码器(开源的H.264软件编码库),对应的fourcc是cv2.VideoWriter_fourcc(*'X264'),pip安装的官方OpenCV包一般已经包含X264支持。
  • 方案三:确认OpenCV的编码器支持情况
    你可以运行以下代码查看OpenCV编译时支持的所有编码器,确认你想用的编码器是否存在:

    import cv2
    print(cv2.getBuildInformation())
    

    在输出中查找Video I/O部分,查看是否有FFmpeg、X264相关的支持项,这能帮你判断哪种编码器可用。

内容的提问来源于stack exchange,提问作者svecax

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:13:15