Ubuntu上安装ffmpeg-cuda加速

前言

FFmpeg 是一个开放源代码的自由软件,可以运行音频和视频多种格式的录影、转换、流功能,包含了libavcodec——这是一个用于多个项目中音频和视频的解码器库,以及libavformat——一个音频与视频格式转换库。“FFmpeg”这个单词中的“FF”指的是“Fast Forward(快速前进)”。
在这里插入图片描述

FFmpeg基础组件:
(1)命令行应用程序

  • ffmpeg:用于对视频或音频进行处理
  • ffplay:一个简单的播放器,基于SDL与FFmpeg库
  • ffprobe:用于显示媒体文件的信息

(2)函数库

  • libavutil:包含一些工具库
  • libavcodec:包含全部FFmpeg音频/视频编解码库
  • libavformat:包含demuxers和muxer库
  • libavdevice
  • libavfilter
  • libavresample
  • libswresample
  • libpostproc:对于视频做前处理的库
  • libswscale:对于影像作缩放的库

在这里插入图片描述

安装

基础版安装

无需CUDA加速的基础版本安装可以查阅:
Ubuntu上安装ffmpeg

CUDA支持版安装

(0)提前安装并配置好CUDA环境

-------软硬件信息--------------------
操作系统:Ubuntu18.04
Nvidia 显卡:RTX 2080Ti
Nvidia 驱动版本:440.82
CUDA 版本: 10.1
Python 版本:3.6.10
-----------------------------------

(1)官网下载安装包:
在这里插入图片描述
(2)解压

tar -xvf ffmpeg_4.2.2.orig.tar.xz

(3)安装yasm

sudo apt  install -y yasm

(4)设置编译项
添加cuda和cuvid使能:

./configure --prefix=/usr/local/ffmpeg --enable-shared --disable-static --disable-doc  --enable-gpl --enable-libx264 --enable-cuda --enable-cuvid

(5)下载并编译安装 FFmpeg NVIDIA headers (“ffnvcodec”)

git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git
cd nv-codec-headers
(# 有多个分支,根据GPU驱动版本可能需要切换分支,本文采用git checkout sdk/9.1)
make
sudo make install

在这里插入图片描述

(6)编译、安装FFmpeg

make
sudo make install

(7)建立软链接

sudo ln -s /usr/local/ffmpeg/bin/ffmpeg /usr/bin/ffmpeg
sudo ln -s /usr/local/ffmpeg/bin/ffprobe /usr/bin/ffprobe

(8)配置ffmpeg依赖环境

sudo vi /etc/ld.so.conf
在其中添加路径:/usr/local/ffmpeg/lib

sudo ldconfig#更新环境变量

(9)版本查看

ffmpeg

在这里插入图片描述

检验和使用

检验

(1)列出gpu解码器:

ffmpeg -decoders | grep cuvid

在这里插入图片描述
(2)列出gpu编码器:

ffmpeg -encoders | grep nvenc

在这里插入图片描述

使用

(1)全CPU转码h264视频(CPU解码器libx264)到h264(CPU编码器libx264)

ffmpeg -i test.mp4 -c:v libx264 -y test-cpu.mp4

全CPU转码整体速度如下:

frame= 1056 fps= 21 q=-1.0 Lsize=    5509kB time=00:00:42.14 bitrate=1070.8kbits/s dup=2 drop=0 speed=0.84x

流映射关系:

Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
  Stream #0:1 -> #0:1 (aac (native) -> aac (native))

可以看到用全CPU转码,FPS在20左右。

(2)全GPU转码h264视频(GPU解码器h264_cuvid)到h264(GPU编码器h264_nvenc)

ffmpeg -hwaccel cuvid -c:v h264_cuvid -i test.mp4 -c:v h264_nvenc  -y test-gpu.mp4

全GPU转码整体速度如下:

frame= 1061 fps=847 q=18.0 Lsize=   10870kB time=00:00:42.40 bitrate=2100.1kbits/s dup=7 drop=0 speed=33.9x

流映射关系:

Stream mapping:
  Stream #0:0 -> #0:0 (h264 (h264_cuvid) -> h264 (h264_nvenc))
  Stream #0:1 -> #0:1 (aac (native) -> aac (native))

可以看到用CPU转码,FPS在850左右。
确实速度比CPU快太多,可能在帧数统计上会有些许差异。

(3)全GPU转码mpeg4(如mp4v)视频(GPU解码器mpeg4_cuvid)到h264(GPU编码器h264_nvenc)

ffmpeg -hwaccel cuvid -c:v mpeg4_cuvid -i test-mp4v.mp4 -c:v h264_nvenc  -y test-mp4v-gpu.mp4

(4)CPU解码GPU编码方式转码

ffmpeg -i test.mp4 -c:v h264_nvenc  -y test-gpu.mp4

转码整体速度如下:

frame= 1056 fps=628 q=18.0 Lsize=   10869kB time=00:00:42.20 bitrate=2110.0kbits/s dup=2 drop=0 speed=25.1x

流映射关系:

Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> h264 (h264_nvenc))
  Stream #0:1 -> #0:1 (aac (native) -> aac (native))

在这里插入图片描述

参考资料

[1] Ubuntu上安装ffmpeg
[2] FFmpeg官网
[3] Ubuntu下x264库编译安装
[4] 使用GPU硬件加速FFmpeg视频转码
[5] NVIDIA VIDEO CODEC SDK - Get Started
[6] Github FFmpeg/nv-codec-headers
[7] ERROR: cuvid requested, but not all dependencies are satisfied: cuda/ffnvcodec
[8] Using GPU hardware to speed up FFmpeg video transcoding and pit draining
[9] Ubuntu 16.04下编译ffmpeg支持CUDA下的cuvid vnenc和NPP
[10] Use FFmpeg to Decode H.264 Stream with NVIDIA GPU Acceleration
[11] NVIDIA FFmpeg Transcoding Guide
[12] H.264 Video Encoding Guide
[13] FFmpeg 维基百科
[14] FFmpeg nvenc issue: Driver does not support the required nvenc API version. Required: 9.1 Found: 9.0 - Video Technologies / Video Codec and Optical Flow SDK - NVIDIA Developer Forums
[15] FFmpeg | NVIDIA Developer

  • 1
    点赞
  • 16
    收藏
  • 打赏
    打赏
  • 2
    评论
<p style="margin: 10px 0px 0px; max-width: 100%; box-sizing: border-box; font-family: 'Hiragino Sans GB', 'Microsoft Yahei', arial, 宋体, 'Helvetica Neue', Helvetica, STHeiTi, sans-serif; font-size: 14px; background-color: #ffffff; color: #3e414d; font-weight: bold;">FFmpeg+DXVA2+D3D硬件加速原理与案例实战</p> <p style="margin: 10px 0px 0px; max-width: 100%; box-sizing: border-box; font-family: 'Hiragino Sans GB', 'Microsoft Yahei', arial, 宋体, 'Helvetica Neue', Helvetica, STHeiTi, sans-serif; font-size: 14px; background-color: #ffffff; color: #666c80;">FFmpeg系列之34:<br />FFmpeg+DXVA2+D3D硬件加速原理与案例实战,带领大家一起来学习dxva与dxva2的入门知识,学习D3D开发入门实战,然后使用FFmpeg+dxva2+d3d进行硬件加速案例实战。大家在学习中需要认真观看视频,并分析知识点,然后需要动手实践。</p> <p style="margin: 10px 0px 0px; max-width: 100%; box-sizing: border-box; font-family: 'Hiragino Sans GB', 'Microsoft Yahei', arial, 宋体, 'Helvetica Neue', Helvetica, STHeiTi, sans-serif; font-size: 14px; background-color: #ffffff; color: #666c80;"> </p> <h1 style="box-sizing: border-box; margin: 0px; font-weight: 400; line-height: 1.2; font-size: 14px; font-family: 'PingFang SC', 'Hiragino Sans GB', Arial, 'Microsoft YaHei', Verdana, Roboto, Noto, 'Helvetica Neue', sans-serif; padding: 0px; color: #333333;"><span style="box-sizing: border-box; margin: 0px; padding: 0px;"><span style="box-sizing: border-box; margin: 0px; padding: 0px; max-width: 100%; color: #ff0000;">目前FFmpeg第二季【</span></span><span style="box-sizing: border-box; margin: 0px; padding: 0px;"><span style="box-sizing: border-box; margin: 0px; padding: 0px; max-width: 100%; color: #ff0000;">编解码专题</span></span><span style="box-sizing: border-box; margin: 0px; padding: 0px;"><span style="box-sizing: border-box; margin: 0px; padding: 0px; max-width: 100%; color: #ff0000;">】,主要包括以下课程:</span></span></h1> <p style="box-sizing: border-box; margin: 0px; padding: 0px; font-family: 'PingFang SC', 'Hiragino Sans GB', Arial, 'Microsoft YaHei', Verdana, Roboto, Noto, 'Helvetica Neue', sans-serif; color: #333333; font-size: 14px; max-width: 100%;"><span style="box-sizing: border-box; margin: 0px; padding: 0px; max-width: 100%; font-size: 18px;"><span style="box-sizing: border-box; margin: 0px; padding: 0px;">FFmpeg4.3系列之31:图像格式与压缩<br style="box-sizing: border-box;" />FFmpeg4.3系列之32:MPEG-1/2视频编解码<br style="box-sizing: border-box;" />FFmpeg4.3系列之33:H.264/H.265视频编码<br style="box-sizing: border-box;" />FFmpeg4.3系列之34:FFmpeg+DXVA2+D3D硬件加速<br style="box-sizing: border-box;" />FFmpeg4.3系列之35:FFmpeg+CUDA硬件加速</span></span></p>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:博客之星2020 设计师:CSDN官方博客 返回首页
评论 2

打赏作者

TracelessLe

❀点个赞加个关注再走吧❀

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值