LINUX下,ffmpeg增加NVIDIA硬件编解码的步骤及解决办法

简介: LINUX下,ffmpeg增加NVIDIA硬件编解码的步骤及解决办法

官方关于ffmepg的网页

https://developer.nvidia.com/FFmpeg


下载驱动

https://www.nvidia.com/drivers


下载CUDA

https://developer.nvidia.com/cuda-downloads


下载ffmpeg

http://www.ffmpeg.org/download.html


安装ffnvcodec

git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git
cd nv-codec-headers
make && sudo make install

编译ffmpeg

cd ffmpeg-4.0.2
./configure --disable-asm --disable-x86asm \
 --enable-cuda --enable-cuvid --enable-nvenc \
 --enable-nonfree --enable-libnpp \
 --extra-cflags=-I/usr/local/cuda/include \
 --extra-cflags=-fPIC --extra-ldflags=-L/usr/local/cuda/lib64
# --enable-shared --enable-pic 
make -j8
sudo make install

验证

退出当前终端,重新进入一个,输入命令:

ffmpeg -decoders | grep h264

输出的第一行,应该是:ffmpeg version 4.0.2


VFS..D h264                 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10

V..... h264_v4l2m2m     V4L2 mem2mem H.264 decoder wrapper (codec h264)

V..... h264_cuvid           Nvidia CUVID H264 decoder (codec h264)


ffmpeg -encoders | grep nv

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

V..... h264_v4l2m2m      V4L2 mem2mem H.264 encoder wrapper (codec h264)

V..... nvenc                     NVIDIA NVENC H.264 encoder (codec h264)

V..... nvenc_h264           NVIDIA NVENC H.264 encoder (codec h264)


测试

ffmpeg -y -hwaccel cuvid -c:v h264_cuvid -vsync 0 -i 2018.MOV -vcodec h264_nvenc -preset slow -b:v 2000k 2017.h264

注意,这里的preset参数,有的不能用了。



出错及解决办法

吾电脑提示要加上--disable-x86asm参数。

configure时出错,提示:

ERROR: cuda requested, but not all dependencies are satisfied: ffnvcodec


解决办法:


git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git
cd nv-codec-headers
make && sudo make install
目录
相关文章
|
3月前
|
NoSQL Linux PHP
如何在不同操作系统上安装 Redis 服务器,包括 Linux 和 Windows 的具体步骤
本文介绍了如何在不同操作系统上安装 Redis 服务器,包括 Linux 和 Windows 的具体步骤。接着,对比了两种常用的 PHP Redis 客户端扩展:PhpRedis 和 Predis,详细说明了它们的安装方法及优缺点。最后,提供了使用 PhpRedis 和 Predis 在 PHP 中连接 Redis 服务器及进行字符串、列表、集合和哈希等数据类型的基本操作示例。
165 4
|
4月前
|
Linux API 开发工具
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
ijkplayer是由B站研发的移动端播放器,基于FFmpeg 3.4,支持Android和iOS。其源码托管于GitHub,截至2024年9月15日,获得了3.24万星标和0.81万分支,尽管已停止更新6年。本文档介绍了如何在Linux环境下编译ijkplayer的so库,以便在较新的开发环境中使用。首先需安装编译工具并调整/tmp分区大小,接着下载并安装Android SDK和NDK,最后下载ijkplayer源码并编译。详细步骤包括环境准备、工具安装及库编译等。更多FFmpeg开发知识可参考相关书籍。
157 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
|
5月前
|
NoSQL Linux Redis
linux安装单机版redis详细步骤,及python连接redis案例
这篇文章提供了在Linux系统中安装单机版Redis的详细步骤,并展示了如何配置Redis为systemctl启动,以及使用Python连接Redis进行数据操作的案例。
121 3
|
4月前
|
应用服务中间件 Linux Shell
Linux 配置 Nginx 服务的详细步骤,绝对干货
Linux 配置 Nginx 服务的详细步骤,绝对干货
176 0
|
6月前
|
Ubuntu Linux 开发工具
【事件中心 Azure Event Hub】在Linux环境中(Ubuntu)安装Logstash的简易步骤及配置连接到Event Hub
【事件中心 Azure Event Hub】在Linux环境中(Ubuntu)安装Logstash的简易步骤及配置连接到Event Hub
|
6月前
|
传感器 缓存 Prometheus
在Linux中,如何进行硬件性能监控?
在Linux中,如何进行硬件性能监控?
|
6月前
|
存储 监控 Ubuntu
在Linux中,如何规划⼀台 Linux 主机,步骤是怎样?
在Linux中,如何规划⼀台 Linux 主机,步骤是怎样?
|
6月前
|
JavaScript Linux API
【Azure 应用服务】NodeJS Express + MSAL 应用实现AAD集成登录并部署在App Service Linux环境中的实现步骤
【Azure 应用服务】NodeJS Express + MSAL 应用实现AAD集成登录并部署在App Service Linux环境中的实现步骤
|
6月前
|
Ubuntu 安全 Linux
在Linux中,编译内核的意义与步骤?
在Linux中,编译内核的意义与步骤?
|
6月前
|
Linux 网络安全 数据安全/隐私保护
在Linux中,ptables是否支持time时间控制用户行为,如有请写出具体操作步骤。
在Linux中,ptables是否支持time时间控制用户行为,如有请写出具体操作步骤。