当前位置: 首页 > article >正文

ubuntu环境编译ffmepg支持nvidia显卡加速

文章目录

  • 1. 安装NVIDIA驱动
  • 2. 安装CUDA&NV-CODEC
    • 2.1 安装CUDA
    • 2.2 安装NV-CODEC
  • 3. 编译ffmpeg
    • 3.1 安装依赖
    • 3.2 下载源码安装依赖
    • 3.3 验证
  • 4. 使用

1. 安装NVIDIA驱动

  1. 安装依赖包

    sudo apt install -y ubuntu-drivers-common
    
  2. 编辑 /etc/modprobe.d/blacklist-nouveau.conf 文件,添加以下内容:

    blacklist nouveau
    blacklist lbm-nouveau
    options nouveau modeset=0
    alias nouveau off
    alias lbm-nouveau off
    
  3. 关闭nouveau

    echo options nouveau modeset=0 | sudo tee -a /etc/modprobe.d/nouveau-kms.conf
    
  4. 重新生成内核并重启

    sudo update-initramfs -u
    sudo reboot
    
  5. 重启后验证

    lsmod | grep nouveau
    

    如果没有输出,则禁用成功;

  6. 查找推荐驱动

    ubuntu-drivers devices
    

    输出如下:
    image-20250220114042673

  7. 安装推荐驱动

    sudo apt install -y nvidia-driver-535-server
    

    安装成功后重启执行nvidia-smi输出如下则证明驱动安装成功,注意这里的CUDA Version为最高安装版本,并非已安装版本

    image-20250220115053302

2. 安装CUDA&NV-CODEC

2.1 安装CUDA

去NVIDIA官网直接下载不高于nvidia-smi显示的版本,我们安装12.0版本,按照官网描述安装

image-20250220134133409

image-20250220134205352

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin
sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/12.0.0/local_installers/cuda-repo-ubuntu2004-12-0-local_12.0.0-525.60.13-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu2004-12-0-local_12.0.0-525.60.13-1_amd64.deb
sudo cp /var/cuda-repo-ubuntu2004-12-0-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda

安装成功后将以下内容加到/etc/profile文件

export PATH=$PATH:/usr/local/cuda-12.0/bin/
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-12.0/lib64

执行source /etc/profile后执行nvcc --version输出如下内容则证明安装成功

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2022 NVIDIA Corporation
Built on Mon_Oct_24_19:12:58_PDT_2022
Cuda compilation tools, release 12.0, V12.0.76
Build cuda_12.0.r12.0/compiler.31968024_0

2.2 安装NV-CODEC

因为我们cuda安装的是12.0版本,因此执行以下指令安装ffnvcodec,参考NVIDIA官网

git clone -b sdk/12.0 git@github.com:FFmpeg/nv-codec-headers.git
cd nv-codec-headers && sudo make install && cd

3. 编译ffmpeg

3.1 安装依赖

sudo apt-get -y install \build-essential \pkg-config \libtool \automake \yasm \nasm \cmake \libtool \libc6 \libc6-dev \unzip \wget \libnuma1 \libnuma-dev \libx264-dev \libx265-dev \libssl-dev \librtmp-dev \libsrt-dev \libfreetype6-dev

3.2 下载源码安装依赖

前往ffmpeg官网下载ffmpeg源码,最好下载5以上版本,我用4.x版本编译时候有莫名报错,换到5版本一切正常;我们以ffmpeg-5.1.6版本为例,解压后进入ffmpeg源码目录,执行以下命令

./configure \--prefix=$(pwd)/install \--extra-cflags="-I/usr/local/cuda/include" \--extra-ldflags="-L/usr/local/cuda/lib64" \--enable-shared \--enable-static \--extra-libs=-lstdc++ \--enable-gpl \--enable-version3 \--enable-libfreetype \--enable-libx264 \--enable-libx265 \--enable-openssl \--enable-librtmp \--enable-libsrt \--enable-demuxer=rtsp \--enable-muxer=rtsp \--enable-cuda-nvcc \--enable-libnpp \--enable-cuda \--enable-cuvid \--enable-nvenc \--enable-nvdec \--enable-nonfree

成功后会输出如下信息:

image-20250221110235921

​ 执行make -j$(nproc) && make install即可在源码目录下生成install目录;

3.3 验证

依然修改/etc/profile将ffmpeg加入环境变量,大致效果如下:

export PATH=$PATH:/usr/local/cuda-12.0/bin/:/home/ffmpeg-5.1.6/install/bin/
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-12.0/lib64:/home/ffmpeg-5.1.6/install/lib

执行source /etc/profile生效环境变量,执行以下命令验证

ffmpeg -encoders | grep nvenc

输出如下内容,则证明成功

V....D h264_nvenc           NVIDIA NVENC H.264 encoder (codec h264)
V....D hevc_nvenc           NVIDIA NVENC hevc encoder (codec hevc)

4. 使用

# H.264加速编码
ffmpeg -i input.mp4 -c:v h264_nvenc -b:v 2M -g 30 -c:a copy output_gpu_h264.mp4# HEVC/H.265加速编码
ffmpeg -i input.mp4 -c:v hevc_nvenc -b:v 2M -g 30 -c:a copy output_gpu_h265.mp4

相关文章:

ubuntu环境编译ffmepg支持nvidia显卡加速

文章目录 1. 安装NVIDIA驱动2. 安装CUDA&NV-CODEC2.1 安装CUDA2.2 安装NV-CODEC 3. 编译ffmpeg3.1 安装依赖3.2 下载源码安装依赖3.3 验证 4. 使用 1. 安装NVIDIA驱动 安装依赖包 sudo apt install -y ubuntu-drivers-common编辑 /etc/modprobe.d/blacklist-nouveau.conf 文…...

淘宝商品评论API调用教程:轻松获取用户评价数据(含测试Key)

在电商开发中,用户评价数据是优化产品和提升用户体验的重要依据。淘宝提供了商品评论API,方便开发者获取商品的用户评价信息。本文将详细介绍如何调用淘宝商品评论API,并附上测试Key供调试使用。 一、准备工作 注册淘宝开放平台账号 前往注册…...

边缘安全加速(Edge Security Acceleration)

边缘安全加速(Edge Security Acceleration,简称ESA)是一种通过将安全功能与网络边缘紧密结合来提升安全性和加速网络流量的技术。ESA的目标是将安全措施部署到接近用户或设备的地方,通常是在网络的边缘,而不是将所有流…...

SpringCould+vue3项目的后台用户管理的CURD【Taurus教育平台】

文章目录 一.SpringCouldvue3项目的后台用户管理的CURD【Taurus教育平台】 1.1 背景 二.用户列表(分页查询) 2.1 前端Vue3 (Vue3-Element-Admin)2.2 后端SpringCould 处理 三. 用户信息删除 3.1 前端Vue3 (Vue3-Eleme…...

ROS-相机话题-获取图像-颜色目标识别与定位-目标跟随-人脸检测

文章目录 相机话题获取图像颜色目标识别与定位目标跟随人脸检测 相机话题 启动仿真 roslaunch wpr_simulation wpb_stage_robocup.launch rostopic hz /kinect2/qhd/image_color_rect/camera/image_raw:原始的、未经处理的图像数据。 /camera/image_rect&#xff…...

破解Docker镜像拉取难题:为Docker配置代理加速镜像拉取

为Docker配置代理加速镜像拉取 概述守护进程配置(推荐长期使用)Systemd环境变量配置(适合临时调整)其他 概述 为什么需要配置代理与镜像加速? 跨国网络限制:境外镜像仓库拉取速度慢或无法访问企业安全策略&#xff…...

细分数字货币钱包的不同种类

文章目录 一、中心化钱包1.1 中心化钱包架构1.2 中心化钱包业务细节流程 二、去中心化钱包(HD 钱包)2.1 去中心化钱包架构2.2 去中心化钱包细节业务流程 三、硬件钱包3.1 硬件钱包架构3.2 硬件钱包细节业务流程 四、MPC 托管钱包五、多签钱包 中心化钱包 :钱包私钥一…...

推理模型时代:大语言模型如何从对话走向深度思考?

一、对话模型和推理模型的区别概述 对话模型是专门用于问答交互的语言模型,符合人类的聊天方式,返回的内容可能仅仅只是一个简短的答案,一般模型名称后面会带有「chat」字样。 推理模型是比较新的产物,没有明确的定义,一般是指输出过程中带有<think>和</think&…...

调用click.getchar()时Windows PyCharm无法模拟键盘输入

文章目录 问题描述解决方案参考文献 问题描述 调用 click.getchar() 时&#xff0c;Windows PyCharm 无法模拟键盘输入 解决方案 Run → Edit Configurations… → Modify options → Emulate terminal in output console 参考文献 Terminal emulator | PyCharm Documentati…...

关于ES中text类型时间字段范围查询的结构化解决方案

前言 有关es中text类型的时间字段范围查询的问题&#xff0c;比如&#xff1a; {"query": {"range": {"insertTime": {"gte": "2025-02-01T00:00:00","lte": "2025-11-30T23:59:59","format&quo…...

易基因: ChIP-seq+DRIP-seq揭示AMPK通过调控H3K4me3沉积和R-loop形成以维持基因组稳定性和生殖细胞完整性|NAR

原文&#xff1a;ChIP-seqDRIP-seq揭示AMPK通过调控H3K4me3沉积和R-loop形成以维持基因组稳定性和生殖细胞完整性&#xff5c;NAR 大家好&#xff0c;这里是专注表观组学十余年&#xff0c;领跑多组学科研服务的易基因。 在饥饿等能量胁迫条件下&#xff0c;生物体会通过调整…...

Web 自动化测试提速利器:Aqua 的 Web Inspector (检查器)使用详解

Web 自动化测试提速利器:Aqua 的 Web Inspector (检查器)使用详解 前言简介一、安装二、Web Inspector 的使用2.1 获取元素定位器(Locators)2.2 将定位器添加到代码2.3 验证定位器2.4 处理 Frames (框架)总结前言 JetBrains 的 Aqua IDE 提供强大的 Web Inspector 工具,帮…...

数据中心储能蓄电池状态监测管理系统 组成架构介绍

安科瑞刘鸿鹏 摘要 随着数据中心对供电可靠性要求的提高&#xff0c;蓄电池储能系统成为关键的后备电源。本文探讨了蓄电池监测系统在数据中心储能系统中的重要性&#xff0c;分析了ABAT系列蓄电池在线监测系统的功能、技术特点及其应用优势。通过蓄电池监测系统的实施&#…...

01数据准备 抓取图片 通过爬虫方式获取bing的关键词搜索图片

为了获取训练所需的图片,我们最常用的手段就是自己去写一个爬虫去获取相关图片。本文将重点围绕如何采用爬虫的方式获取训练所需的图片素材进行讲解,为了大家能够够直观的掌握相关技术,参考本文的相关过程和代码获取自己的数据图片素材,笔者将详细介绍实现过程。 1、确定图…...

【UCB CS 61B SP24】Lecture 5 - Lists 3: DLLists and Arrays学习笔记

本文内容为构建双向循环链表、使用 Java 的泛型将其优化为通用类型的链表以及数组的基本语法介绍。 1. 双向链表 回顾上一节课写的代码&#xff0c;当执行 addLast() 与 getLast() 方法时需要遍历链表&#xff0c;效率不高&#xff0c;因此可以添加一个指向链表末尾的索引&am…...

Git 工作流程

1、Git 工作流程 http://www.ruanyifeng.com/blog/2015/12/git-workflow.html git push -f origin HEAD^:master 删除服务器上最近的一次提交git push -f origin HEAD^:master 2、Git分支管理 动画形式演示分支效果&#xff1a; http://onlywei.github.io/explain-git-with-…...

DeepSeek接入Siri(已升级支持苹果手表)完整版硅基流动DeepSeek-R1部署

DeepSeek接入Siri&#xff08;已升级支持苹果手表&#xff09;完整版硅基流动DeepSeek-R1部署 **DeepSeek** 是一款专注于深度学习和人工智能的工具或平台&#xff0c;通常与人工智能、机器学习、自动化分析等领域有关。它的主要功能可能包括&#xff1a;深度学习模型搜索&…...

【后端】gitHub访问速度太慢解决办法

问题描述 浏览器无法打开GitHub&#xff0c;加载非常慢 解决方法 1、修改本地hosts文件&#xff0c;增加到 http://github.global.ssl.fastly.net 和 http://github.com 的映射 本机hosts 文件位置&#xff1a; C:\Windows\System32\drivers\etc配置如下&#xff1a; # g…...

Hutool - Extra:功能丰富的扩展模块

一、简介 Hutool - Extra 作为 Hutool 工具包的扩展模块&#xff0c;对众多第三方库和功能进行了封装&#xff0c;极大地丰富了 Hutool 的功能体系。它涵盖了模板引擎、邮件发送、Servlet 处理、二维码生成、Emoji 处理、FTP 操作以及分词等多个方面&#xff0c;为开发者在不同…...

opencv实时二维码识别的一种实现与思路分享

在嵌入式平台上比如 rk3568 这种弱鸡的平台,要做到实时视频处理就非常鸡肋,不像英伟达那种 deepstrem 什么的。 开始的时候,我们使用python 下的 pyzbar + opencv opencv 读取摄像头的数据然后每帧送到 pyzbar 二维码识别函数里面进行处理,然后打印出识别的数字。结果,非常…...

深入剖析Linux C中线程未释放问题

深入剖析 Linux C 中线程未释放问题 在 Linux C 编程中&#xff0c;线程的正确使用对于程序的性能和稳定性至关重要。其中&#xff0c;线程资源的释放是一个容易被忽视但又极为关键的环节。本文将通过具体代码示例&#xff0c;深入探讨线程未释放的问题&#xff0c;并结合进程…...

个人博客5年回顾

https://huangtao01.github.io/ 五年前&#xff0c;看程序羊的b站视频做的blog&#xff0c;受限于网络&#xff0c;只能单向学习&#xff0c;没有人指导与监督&#xff0c;从来没有想过&#xff0c;有没有什么问题&#xff1f; 一、为什么要做个人博客&#xff1f; 二、我是怎么…...

nacos编写瀚高数据库插件

1、下载nacos源码 git clone gitgithub.com:alibaba/nacos.git 2、引入瀚高驱动 <dependency><groupId>com.highgo</groupId><artifactId>jdbc</artifactId><version>${highgo.version}</version></dependency> 3、DataSource…...

bboss v7.3.5来袭!新增异地灾备机制和Kerberos认证机制,助力企业数据安全

ETL & 流批一体化框架 bboss v7.3.5 发布&#xff0c;多源输出插件增加为特定输出插件设置记录过滤功能&#xff1b;Elasticsearch 客户端新增异地双中心灾备机制&#xff0c;提升框架高可用性&#xff1b;Elasticsearch client 和 http 微服务框架增加对 Kerberos 认证支持…...

【编程语言】委托与函数指针

委托与函数指针的相似之处&#xff1a; 指向方法&#xff1a;C# 的委托和 C 的函数指针都可以用来指向一个方法或函数。调用方法&#xff1a;它们都可以通过引用&#xff08;委托或函数指针&#xff09;来调用指向的方法。 委托与函数指针的主要区别&#xff1a; 类型安全&am…...

《Python实战进阶》专栏 No2: Flask 中间件与请求钩子的应用

专栏简介 《Python实战进阶》专栏共68集&#xff0c;分为 模块1&#xff1a;Web开发与API设计&#xff08;共10集&#xff09;&#xff1b;模块2&#xff1a;数据处理与分析&#xff08;共10集&#xff09;&#xff1b;模块3&#xff1a;自动化与脚本开发&#xff08;共8集&am…...

Redis三剑客解决方案

文章目录 缓存穿透缓存穿透的概念两种解决方案: 缓存雪崩缓存击穿 缓存穿透 缓存穿透的概念 每一次查询的 key 都不在 redis 中&#xff0c;数据库中也没有。 一般都是属于非法的请求&#xff0c;比如 id<0&#xff0c;比如可以在 API 入口做一些参数校验。 大量访问不存…...

OpenCV机器学习(8)随机森林(Random Forests)算法cv::ml::RTrees类

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 cv::ml::RTrees 是 OpenCV 机器学习模块中的一部分&#xff0c;用于实现随机森林&#xff08;Random Forests&#xff09;算法。随机森林是一种集…...

C++:线程当中的锁专题

在 C 多线程编程中&#xff0c;线程同步是确保程序正确运行的关键环节&#xff0c;而锁机制则是实现线程同步的重要手段。 一、线程的同步之互斥锁 1.1 互斥锁的概念 互斥锁&#xff08;Mutex&#xff0c;即 Mutual Exclusion 的缩写&#xff09;是一种最基本的线程同步工具…...

vue3 文件类型传Form Data数据格式给后端

在 Vue 3 中&#xff0c;如果你想将文件&#xff08;例如上传的 Excel 文件&#xff09;以 FormData 格式发送到后端&#xff0c;可以通过以下步骤实现。这种方式通常用于处理文件上传&#xff0c;因为它可以将文件和其他数据一起发送到服务器。 首先&#xff0c;创建一个 Vue…...