『heqingchun-Ubuntu系统+x86架构+编译安装ffmpeg+带有nvidia硬件加速』

Ubuntu系统+x86架构+编译安装ffmpeg+带有nvidia硬件加速

一、准备文件

注:可直接下载我上传的CSDN资源,然后直接跳到"一"中的第"3"项"将文件按以下顺序存放"。
ffmpeg源码:音视频开发+ffmpeg+编译所需资源文件
其他文件:音视频开发+ffmpeg+x86/Arm+编译所需库文件(fdk-aac-2.0.2,lame-3.99.5,opencore)
nvidia硬件加速文件:音视频开发+ffmpeg+x86/Arm+编译所需文件(使用nvidia硬件加速)

1.ffmpeg源码下载

官网下载
网址:

http://ffmpeg.org/download.html#releases

操作:
点击FFmpeg 4.4.3 “Rao"下的"Download xz tarball”
下载得到ffmpeg-4.4.3.tar.xz压缩文件
注:本教程使用的ffmpeg4.4.3,官网找不到也可以使用其他版本。

2.其他文件

(1)fdk-aac-2.0.2.tar.gz

官网下载
网址:

https://www.linuxfromscratch.org/blfs/view/svn/multimedia/fdk-aac.html
(2)lame-3.99.5.tar.gz

官网下载
网址:

https://sourceforge.net/projects/lame/files/lame/3.99/
(3)opencore-amr-0.1.6.tar.gz

官网下载
网址:

https://sourceforge.net/projects/opencore-amr/files/opencore-amr/
(4)nv-codec-headers.zip

执行

git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git

3.将文件按以下顺序存放

新建"ffmpeg"目录与"ffmpegOtherFiles"目录

mkdir ffmpeg && \
mkdir -p ffmpeg/ffmpegOtherFiles

"ffmpeg-4.4.3.tar.xz"放入ffmpeg目录
“fdk-aac-2.0.2.tar.gz”,“lame-3.99.5.tar.gz”,"opencore-amr-0.1.6.tar.gz"放入ffmpegOtherFiles目录
"nv-codec-headers.zip"放入ffmpeg目录

二、更新、安装基础依赖

sudo apt update && \
sudo apt upgrade -y && \
sudo apt install -y build-essential cmake python

三、安装configure依赖

1.终端apt依赖

sudo apt install -y gnutls-dev \
libass-dev \
libdrm-dev \
libopus-dev \
libpulse-dev \
libspeex-dev \
libtheora-dev \
libtwolame-dev \
libv4l-dev \
libvorbis-dev \
libvpx-dev \
libx264-dev \
libx265-dev \
libxvidcore-dev \
libopenal-dev \
libomxil-bellagio-dev \
libxcb1-dev \
libsdl2-dev \
libva-dev \
libvdpau-dev

2.其他依赖

进入"ffmpegOtherFiles"目录

cd ffmpeg/ffmpegOtherFiles

解压编译安装依赖

tar -xvf fdk-aac-2.0.2.tar.gz && \
cd fdk-aac-2.0.2 && \
./configure --prefix=/usr --disable-static && \
make -j12 && \
sudo make install && \
cd .. && \
tar -xvf lame-3.99.5.tar.gz && \
cd lame-3.99.5 && \
./configure --prefix=/usr --disable-static && \
make -j12 && \
sudo make install && \
cd .. && \
tar -xvf opencore-amr-0.1.6.tar.gz && \
cd opencore-amr-0.1.6 && \
./configure --prefix=/usr --disable-static && \
make -j12 && \
sudo make install

3.nvidia硬件加速

cd ffmpeg
unzip nv-codec-headers.zip
cd nv-codec-headers
make -j $(nproc)
sudo make install

四、配置

1.解压文件

cd ffmpeg
tar -xvf ffmpeg-4.4.3.tar.xz
cd ffmpeg-4.4.3
sed -i "s/compute_30,code=sm_30/compute_86,code=sm_86/g" configure

注:电脑显卡为3050,所以是86,需要根据你的显卡算力进行修改
可在此网站查看:显卡算力查看

2.开始配置

./configure --prefix=/usr/local/ffmpeg \
--disable-debug \
--disable-doc \
--disable-static \
--enable-cuda-nvcc \
--enable-cuvid \
--enable-libdrm \
--enable-ffplay \
--enable-gnutls \
--enable-gpl \
--enable-libass \
--enable-libfdk-aac \
--enable-libfontconfig \
--enable-libfreetype \
--enable-libmp3lame \
--enable-libnpp \
--enable-libopencore_amrnb \
--enable-libopencore_amrwb \
--enable-libopus \
--enable-libpulse \
--enable-sdl2 \
--enable-libspeex \
--enable-libtheora \
--enable-libtwolame \
--enable-libv4l2 \
--enable-libvorbis \
--enable-libvpx \
--enable-libx264 \
--enable-libx265 \
--enable-libxcb \
--enable-libxvid \
--enable-nonfree \
--enable-nvenc \
--enable-omx \
--enable-openal \
--enable-opencl \
--enable-runtime-cpudetect \
--enable-shared \
--enable-vaapi \
--enable-vdpau \
--enable-version3 \
--enable-xlib \
--extra-cflags=-I/usr/local/cuda/include \
--extra-ldflags=-L/usr/local/cuda/lib64 \
--libdir=/usr/lib/x86_64-linux-gnu \
--incdir=/usr/include/x86_64-linux-gnu \
--disable-asm \
--disable-x86asm \
--extra-cflags=-fPIC \
--toolchain=hardened \
--disable-stripping \
--extra-cflags=-I/usr/local/include/ffnvcodec

五、编译安装

1.编译

make -j $(nproc)

2.安装

sudo make install

六、配置环境

1.链接

sudo ln -s /usr/local/ffmpeg/bin/ffmpeg /usr/bin/ffmpeg && \
sudo ln -s /usr/local/ffmpeg/bin/ffprobe /usr/bin/ffprobe && \
sudo ln -s /usr/local/ffmpeg/bin/ffplay /usr/bin/ffplay && \
sudo ln -s /usr/local/ffmpeg/bin/ffmpeg /usr/local/bin/ffmpeg && \
sudo ln -s /usr/local/ffmpeg/bin/ffprobe /usr/local/bin/ffprobe && \
sudo ln -s /usr/local/ffmpeg/bin/ffplay /usr/local/bin/ffplay

2.库

写入设置

sudo sh -c "echo '/usr/local/ffmpeg/lib' >> /etc/ld.so.conf.d/ffmpeg.conf"

更新设置

sudo ldconfig

七、验证安装

查看ffmpeg支持信息

ffmpeg -hwaccels

执行结果如下:

ffmpeg version 4.4.3 Copyright (c) 2000-2022 the FFmpeg developersbuilt with gcc 7 (Ubuntu 7.5.0-3ubuntu1~18.04)configuration: --prefix=/usr/local/ffmpeg --disable-debug --disable-doc --disable-static --enable-cuda-nvcc --enable-cuvid --enable-libdrm --enable-ffplay --enable-gnutls --enable-gpl --enable-libass --enable-libfdk-aac --enable-libfontconfig --enable-libfreetype --enable-libmp3lame --enable-libnpp --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libopus --enable-libpulse --enable-sdl2 --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libv4l2 --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxvid --enable-nonfree --enable-nvenc --enable-omx --enable-openal --enable-opencl --enable-runtime-cpudetect --enable-shared --enable-vaapi --enable-vdpau --enable-version3 --enable-xlib --extra-cflags=-I/usr/local/cuda/include --extra-ldflags=-L/usr/local/cuda/lib64 --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --disable-asm --disable-x86asm --extra-cflags=-fPIC --toolchain=hardened --disable-stripping --extra-cflags=-I/usr/local/include/ffnvcodeclibavutil      56. 70.100 / 56. 70.100libavcodec     58.134.100 / 58.134.100libavformat    58. 76.100 / 58. 76.100libavdevice    58. 13.100 / 58. 13.100libavfilter     7.110.100 /  7.110.100libswscale      5.  9.100 /  5.  9.100libswresample   3.  9.100 /  3.  9.100libpostproc    55.  9.100 / 55.  9.100
Hardware acceleration methods:
vdpau
cuda(使用nvidia硬件加速才有)
vaapi
drm
opencl

编解码测试(使用nvidia硬件加速):
HEVC->H.264

ffmpeg -vcodec hevc_cuvid -an -gpu 0 -i <vidoe_path> -vcodec h264_nvenc -an -gpu 0 -y output.mp4

H.264->HEVC

ffmpeg -vcodec h264_cuvid -an -gpu 0 -i <video_path> -vcodec hevc_nvenc -an -gpu 0 -y output.mp4

Ubuntu系统+x86架构+编译安装ffmpeg+带有nvidia硬件加速-完毕

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

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

相关文章

Pgsql常用命令

Postgresql数据库常用命令 1、连接数据库, 默认的用户和数据库是postgres psql -h host -p port -U user -d dbname 2、执行sql文件 psql -h ${PGHOST} -p ${PGPORT} -U ${PGUSER} -d safe_browser -f xxxx.sql \i /xxxxx/xxx/xxxxxx.sql 3、切换数据库,相当于mysql的use d…

Ajax技

Ajax的特点 异步提交&#xff1a;Ajax采用异步通信方式&#xff0c;能够在页面无需重新加载的情况下向服务器发送请求并接收响应数据&#xff0c;提升了用户体验。无需插件&#xff1a;Ajax是基于标准浏览器的Javascript和XMLHttpRequest对象实现的&#xff0c;无需安装插件或…

打开和关闭conda,激活和关闭conda,详解退出conda环境

Python编程技巧&#xff1a;详解退出conda环境 https://www.python100.com/html/110499.html # 创建虚拟环境~/anaconda3/bin/conda create -n name python3.6 # 激活虚拟环境 source ~/anaconda3/bin/activate name # 查看所有环境 conda env list # 激活虚拟环境 conda activ…

使用JVS低代码表单引擎高效管理文件,实现个性化需求

在数字化、信息化的时代&#xff0c;文件上传与管理功能已经成为了各类应用系统的标配。无论是在办公自动化、项目管理还是内容管理系统中&#xff0c;我们都希望能轻松、高效地完成文件的上传、查看和管理。JVS低代码表单引擎提供了文件类组件。无论是文件类型、大小的限制&am…

ubuntu Setforeground 前台应用切换

场景分析 有这样一个系统&#xff0c;一个服务主进程用于接收指令&#xff0c;其它服务是独立的gui 程序&#xff0c;服务进程根据命令将对应的gui 程序切换到前台。 windows 平台有Setforeground 这个api&#xff0c;可以根据进程ID&#xff0c;将某个应用的窗口切换到前台。…

SpringBoot整合Redis,redis连接池和RedisTemplate序列化

SpringBoot整合Redis 1、SpringBoot整合redis1.1 pom.xml1.2 application.yml1.3 配置类RedisConfig&#xff0c;实现RedisTemplate序列化1.4 代码测试 2、SpringBoot整合redis几个疑问&#xff1f;2.1、Redis 连接池讲解2.2、RedisTemplate和StringRedisTemplate 3、RedisTemp…

UniApp打包教程:使用HBuilder X和AppUploader完成原生App云打包和上架指南“

​ 目录 uniapp进行打包 使用上架工具appuplode进行发包 1.登录appuploder软件 2.登陆开发者App Store后台 uniapp进行打包 在HBuilder X编辑器中打开需要打包的项目&#xff0c;然后点击上面菜单栏中 发行 > 原生App-云打包&#xff0c;对以下弹出的弹窗进行内容填写 ​…

竞赛python区块链实现 - proof of work工作量证明共识算法

文章目录 0 前言1 区块链基础1.1 比特币内部结构1.2 实现的区块链数据结构1.3 注意点1.4 区块链的核心-工作量证明算法1.4.1 拜占庭将军问题1.4.2 解决办法1.4.3 代码实现 2 快速实现一个区块链2.1 什么是区块链2.2 一个完整的快包含什么2.3 什么是挖矿2.4 工作量证明算法&…

Java计算时间差,距结束还有几天几小时几分钟

文章目录 1、写法2、备份3、LocalDate、LocalDateTime、Date、String互转 1、写法 //静态方法&#xff0c;传入年月日时分秒 LocalDateTime startTime LocalDateTime.of(2023, 11, 22, 15, 09, 59); LocalDateTime endTime LocalDateTime.of(2023, 11, 30, 0, 0, 0); //计算…

Java基层卫生健康云综合管理(云his)系统源码

云HIS&#xff08;Cloud-Based Healthcare Information System&#xff09;是基于云计算的医院健康卫生信息系统。它运用云计算、大数据、物联网等新兴信息技术&#xff0c;按照现代医疗卫生管理要求&#xff0c;在一定区域范围内以数字化形式提供医疗卫生行业数据收集、存储、…

indexedDB存储

使用 setDBData({ id: name, value: 张三, expire: new Date().getTime() 10000 }, info, infoDB) console.log(getDBData(name, info, infoDB)); 添加或更新数据 async function setDBData(data,storeName "storeName",dbName "dbName",version ) {c…

educoder中Hive综合应用案例 — 用户搜索日志分析

第1关:2018年点击量最高的10个网站域名 ---------- 禁止修改 ----------drop database if exists mydb cascade; ---------- 禁止修改 -------------------- begin ---------- ---创建mydb数据库 create database mydb;---使用mydb数据库 use mydb;---创建表db_search create…

CVE-2023-27524:Apache Superset未授权访问漏洞复现

文章目录 ​Apache Superset 未授权访问漏洞(CVE-2023-27524)复现0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.漏洞复现 0x06 修复建议 ​Apache Superset 未授权访问漏洞(CVE-2023-27524)复现 0x01 前言 免责声明&#xff1a;请勿利用文…

在线工具收集

在线工具收集 1、在线P图 https://www.photopea.com/ 一款类似于PS的在线抠图软件 ①去除图片中的文字&#xff0c;并填充背景色 第一步&#xff1a;使用矩形选中要清除的文字 第二步&#xff1a;点击编辑选择填充 第三步&#xff1a;选择内容识别&#xff0c;保留透明区域…

操作系统(七)| 设备管理-- 端口 驱动程序 基本I/O控制 磁盘I/O

文章目录 1 设备管理概述1.1 系统总线结构1.2 设备控制器通用结构1.3 I/O设备的模型 2 I/O端口2.1 寻址方式 3 驱动程序4 基本I/O控制方式4.1 程序直接控制4.2 中断I/O方式4.3 DMA方式4.4 I/O通道控制方式 5 I/O管理中的重要思想5.1 设备独立性5.2 SPOOLing技术5.3 I/O软件的多…

c语言 结构数组

为什么要使用结构数组&#xff1f; 例如有一种情况&#xff0c;我们需要存储5名学生的数据。我们可以使用下面给出的结构来存储它。 示例 #include<stdio.h> struct student { char name[20]; int id; float marks; }; void main() {struct student s1,s2,…

前端Date对象的使用锦集

Date 对象用于处理日期与时间。 创造对象 var d new Date(); var d new Date(milliseconds); // 参数为毫秒 var d new Date(dateString); var d new Date(year, month, day, hours, minutes, seconds, milliseconds);方法 getDate() 获取当前日期对象是几日(1-31) cons…

C++标准模板(STL)- 类型支持 (类型修改,添加 const 或/与 volatile 限定符到给定类型,std::add_cv)

类型特性 类型特性定义一个编译时基于模板的结构&#xff0c;以查询或修改类型的属性。 试图特化定义于 <type_traits> 头文件的模板导致未定义行为&#xff0c;除了 std::common_type 可依照其所描述特化。 定义于<type_traits>头文件的模板可以用不完整类型实例…

SAP的四种计量单位

在SAP中物料创建后&#xff0c;一旦发生业务&#xff0c;其基本计量单位便很难修改。由于单位无法满足业务要求&#xff0c;往往会要求新建一个物料替代旧物料。这时候除了要将旧物料上所有的未清业务删除外&#xff0c;还需要替换工艺与BOM中的旧物料。特别是当出现旧物料存在…

Linux学习笔记-Ubuntu下使用Crontab设置定时任务

文章目录 一、概述二、基于crontab的设置2.1 基本命令说明2.2 使用-e指令编辑命令2.2.1 进入编辑模式2.2.2 指令信息格式2.2.4 开启日志1) 修改rsyslog配置文件2) 重启rsyslog3) 查看日志 2.2.3 设置后之后重启服务 三、示例3.1 每隔一分钟往文件中日期3.2 使用-l查看任务列表3…