ubuntu 18.04 ffmpeg cuvid硬解环境搭建

由于最近要在视频流上Mask R-CNN模型,cuda硬解也要上,又要折腾一下环境搭建,在此记录一下。

这里的硬解说的是调用nvidia的video codec sdk来加速编解码,使用cuvid硬解的方式有两种,一种是调用ffmpeg已经嵌入的硬解方案,另外一种是先调用ffmpeg再调用codec sdk。
从开发难度来说,第一种要稍微简单一些,只需要指定ffmpeg的video codec就可以启用硬解。 下面是我搭建的一些记录

安装依赖

由于我的机器搭建了各种各样的开发环境,这次编译缺少的一个是yasm包,执行下面命令就可以安装。如果有缺少其它包,自行搜索一下应该可以解决。

 sudo apt-get install yasm

安装nv codec header

由于编译ffmpeg需要用到nv codec的一些header,在这里下载,由于我用的ffmpeg版本最新的master分支(commit: d6489d),所以nv_header也要用最新的9.0版本,下载地址是:
https://github.com/FFmpeg/nv-codec-headers/releases

下载之后,执行

sudo make install

就可以完成header的安装。如果要卸载, 可以执行sudo make uninstall命令

编译ffmpeg

https://git.ffmpeg.org/ffmpeg.git clone 一下ffmpeg的源码
然后配置一下

./configure --enable-cuda --enable-cuvid --enable-nvenc --enable-nonfree --enable-libnpp --extra-cflags=-I/usr/local/cuda/include --extra-ldflags=-L/usr/local/cuda/lib64
sudo make -j6 
sudo make install

到这里基本就安装成功了,下面验证一下硬解是否生效

验证一下

由于是硬解,所以要验证一下是否生效,我用本地的一个视频文件试了一下, 用time命令对比一下同一个转码任务,哪个时间更短
ffmpeg的命令参数比较多,可以自行搜索看一下:

ffmpeg -y -i jiaofu2.rmvb -t 200 -c:v h264_nvenc output2.mp4

  • -i 输入文件
  • -c:v 编解码器video codec, h264_nvenc表示使用nvidia的video codec
  • -t 目标时长
    如果不指定c:v, 就是用默认CPU软解
    使用硬解:
time ffmpeg -y -i jiaofu2.rmvb -t 200 -c:v h264_nvenc output2.mp4
ffmpeg version N-93679-gd6489ddb7a Copyright (c) 2000-2019 the FFmpeg developers
  built with gcc 7 (Ubuntu 7.3.0-27ubuntu1~18.04)
  configuration: --enable-cuda --enable-cuvid --enable-nvenc --enable-nonfree --enable-libnpp --extra-cflags=-I/usr/local/cuda/include --extra-ldflags=-L/usr/local/cuda/lib64
  libavutil      56. 26.100 / 56. 26.100
  libavcodec     58. 52.100 / 58. 52.100
  libavformat    58. 27.103 / 58. 27.103
  libavdevice    58.  7.100 / 58.  7.100
  libavfilter     7. 50.100 /  7. 50.100
  libswscale      5.  4.100 /  5.  4.100
  libswresample   3.  4.100 /  3.  4.100
[rm @ 0x555690d38040] Invalid stream index 2 for index at pos 2438339235
Input #0, rm, from 'jiaofu2.rmvb':
  Metadata:
    title           : �̸�2.The.Godfather.Part.II.1974.720p.Bluray
    author      
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值