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

news2025/2/22 20:05:07

文章目录

  • 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2303593.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

边缘安全加速(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…

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

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

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

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

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

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

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

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

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

本文内容为构建双向循环链表、使用 Java 的泛型将其优化为通用类型的链表以及数组的基本语法介绍。 1. 双向链表 回顾上一节课写的代码,当执行 addLast() 与 getLast() 方法时需要遍历链表,效率不高,因此可以添加一个指向链表末尾的索引&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分支管理 动画形式演示分支效果: http://onlywei.github.io/explain-git-with-…

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

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

个人博客5年回顾

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

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 认证支持…

《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 入口做一些参数校验。 大量访问不存…

Frp部署文档

Frp部署文档 开源项目地址:https://github.com/fatedier/frp项目中文文档地址&#xff1a;https://github.com/fatedier/frp/blob/dev/README_zh.md官网文档地址: https://gofrp.org/zh-cn/docs/发布包地址&#xff1a;https://github.com/fatedier/frp/releases 要注意对应的…

创建一个简单的spring boot+vue前后端分离项目

一、环境准备 此次实验需要的环境&#xff1a; jdk、maven、nvm和node.js 开发工具&#xff1a;idea或者Spring Tool Suite 4&#xff0c;前端可使用HBuilder X&#xff0c;数据库Mysql 下面提供maven安装与配置步骤和nvm安装与配置步骤&#xff1a; 1、maven安装与配置 1…

Spring Boot项目@Cacheable注解的使用

Cacheable 是 Spring 框架中用于缓存的注解之一&#xff0c;它可以帮助你轻松地将方法的结果缓存起来&#xff0c;从而提高应用的性能。下面详细介绍如何使用 Cacheable 注解以及相关的配置和注意事项。 1. 基本用法 1.1 添加依赖 首先&#xff0c;确保你的项目中包含了 Spr…

124.二叉树中的最大路径和 python

二叉树中的最大路径和 题目题目描述示例 1&#xff1a;示例 2&#xff1a;提示&#xff1a; 题解解决方案步骤Python 实现解释提交结果 题目 题目描述 二叉树中的 路径 被定义为一条节点序列&#xff0c;序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中 至多…

23.1 WebBrowser控件

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 WebBrowser控件类似于IE浏览器的文档界面&#xff08;事实上IE也是使用的这个控件&#xff09;&#xff0c;它提供了显示网页及支持…