Ubuntu下编译gstreamer nvenc,nvdec插件

Ubuntu(18.04 x64)开发环境下,有时需要采用NVIDIA显卡进行诸如H.264编解码,本文介绍采用gstreamer调用nvenc,nvdec插件并进行编解码操作。

1.下载gst-plugins-bad

 1)查询gstreamer版本

从gstreamer官网GStreamer: news我们看到nvdec是在Gstreamer1.14.0版本才添加的,所以需要确保gstreamer版本在1.14.0以上,如果不是,就需要重新安装了。

Ubuntu环境下:

gst-launch-1.0 –version

2)下载

我的gstreamer版本为:1.14.5,但是,采用

gst-inspect-1.0 nvdec

是没有的,说明gstreamer默认安装是没有的nvdec的,需要重新编译gst-plugins-bad(nvenc,nvdec存在于这个插件中)。可以从官网直接下载,我的版本是1.14.5,找到1.14.5下载gst-plugins-bad就可以了。

3)解压

tar -vxf gst-plugins-bad-1.14.5.tar.xz

2. 下载Video Codec SDK

这个是gst-plugins-bad编译过程中需要的库及头文件,需要从NVIDIA官网下载,下载地址:NVIDIA VIDEO CODEC SDK - Get Started | NVIDIA Developer我下载的版本为:12.0.16。

1)解压

unzip Video_Codec_SDK_12.0.16.zip

2)复制到相应的目录

cd Video_Codec_SDK_12.0.16
sudo cp Interface/* /usr/local/cuda/include
sudo cp Lib/linux/stubs/x86_64/* /usr/local/cuda/lib64/stubs

3.下载cuda

下载与显卡驱动相适配的地址,下载地址:CUDA Toolkit Archive | NVIDIA Developer

显卡驱动查询:

nvidia-smi

如,我的显卡驱动为:

 下载CUDA的版本不能超过11.7

4.编译gst-plugins-bad

1)生成Makefile

cd gst-plugins-bad
./autogen.sh

2)配置

NVENCODE_LIBS="-L/usr/local/cuda/lib64/stubs" \
NVENCODE_CFLAGS="-I/usr/local/cuda/include" \
./configure --enable-nvdec --enable-nvenc --enable-openh264 --with-cuda-prefix="/usr/local/cuda-10.2"

我这里的cuda版本为10.2。

3)编译与安装

//decoder
cd sys/nvdec
make -j4
sudo make install
//encoder
cd sys/nvenc
make -j4
sudo make install

 默认安装位置:/usr/local/lib/gstreamer-1.0

4)添加环境变量

echo export GST_PLUGIN_PATH="/usr/local/lib/gstreamer-1.0" >> ~/.bashrc
source ~/.bashrc

5)检查插件

gst-inspect-1.0 nvdec
gst-inspect-1.0 nvh264enc

5.测试

软解码:

gst-launch-1.0 filesrc location=test.mp4 ! qtdemux  ! queue ! h264parse ! avdec_h264 ! autovideosink

硬解码:

gst-launch-1.0 filesrc location=test.mp4 ! qtdemux ! queue ! h264parse ! nvdec ! glimagesink sync=false

可以通过

nvidia-smi

查看程序是否在其中,另外,若调用gst-launch-1.0出现错误时,可采用

GST_DEBUG=3 gst-launch-1.0 --gst-debug-level=4

进行错误追踪。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值