大麦牛奶

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
GPU测试
ffmpeg -c:v h264_cuvid -rtsp_transport tcp -i rtsp://admin:Admin123@192.168.64.178/h264/1/main/av_stream -y -qscale 5 -f image2 -r 1 -t 0:5:0 /home/ffmpeg_1/%5d.jpg
 
watch -n 1 -d nvidia-smi
 
CUDA
CUDA是Nvidia出的一个GPU计算库,让程序员可以驱动Nvidia显卡的GPU进行各种工作,其中就包含了视频的编解码
安装CUDA
首先验证一下显卡驱动是否装好
nvidia-smi
 
准备工作
在$HOME下创建ffmpeg_sources目录
编译并安装依赖库
本节中的依赖库基本都是必须的,建议全部安装
nasm
汇编编译器,编译某些依赖库的时候需要
cd ~/ffmpeg_sources curl -O -L http://www.nasm.us/pub/nasm/releasebuilds/2.13.02/nasm-2.13.02.tar.bz2 tar xjvf nasm-2.13.02.tar.bz2 cd nasm-2.13.02 ./autogen.sh ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" make make install
yasm
汇编编译器,编译某些依赖库的时候需要
cd ~/ffmpeg_sources curl -O -L http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz tar xzvf yasm-1.3.0.tar.gz cd yasm-1.3.0 ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" make make install
libx264
H.264视频编码器,如果需要输出H.264编码的视频就需要此库,所以可以说是必备
cd ~/ffmpeg_sources #git clone --depth 1 http://git.videolan.org/git/x264 #cd x264 #PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-static --enable-shared
如果出现
#PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-static --enable-shared --disable-asm #make #make install
 
使用Nvidia显卡GPU进行转码
CUDA计算库
CUDA是Nvidia出的一个GPU计算库,让程序员可以驱动Nvidia显卡的GPU进行各种工作,其中就包含了视频的编解码
安装CUDA计算库
首先验证一下显卡驱动是否装好
nvidia-smi
如果驱动正常的话,此命令会输出显卡的型号、驱动版本、现存/GPU占用等信息。如何安装显卡驱动本文不描述,请参考其他资料。
到CUDA官网https://developer.nvidia.com/cuda-downloads下载对应平台的发行包,这里我选择
linux运行:
#./cuda_9.2.148_396.37_linux.run
会出现这个,不要傻等,回车一直按着
注意如果按照错误有些可以跳过不安装,simples和openGL可以不装,如果已经装好驱动Driver第一步也可以不装
 
验证安装
/usr/local/cuda-8.0/bin/nvcc -V
安装成功的话,会输出类似文本:
nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2018 NVIDIA Corporation Built on Tue_Jun_12_23:07:04_CDT_2018 Cuda compilation tools, release 9.2, V9.2.148
编译ffmpeg,需要ffmpeg3.3.9,测试发现4.0.2暂时不行。
ffmpeg-3.3.9.tar.xz
要让ffmpeg能够使用CUDA提供的GPU编解码器,必须重新编译ffmpeg,让其能够通过动态链接调用CUDA的能力
#xz -d ffmpeg-3.3.9.tar.xz
#tar -xvf ffmpeg-3.3.9.tar
首先要编译安装nv-codec-headers库
#git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git
#cd nv-codec-headers/ #make PREFIX="$HOME/ffmpeg_build" BINDDIR="$HOME/bin" #make install PREFIX="$HOME/ffmpeg_build" BINDDIR="$HOME/bin"
 
进入ffmpeg-3.3.9目录执行编译:
PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure \ --prefix="$HOME/ffmpeg_build" \ --pkg-config-flags="--static" \ --extra-cflags="-I$HOME/ffmpeg_build/include -I/usr/local/cuda/include" \ --extra-ldflags="-L$HOME/ffmpeg_build/lib -L/usr/local/cuda/lib64" \ --extra-libs=-lpthread \ --extra-libs=-lm \ --bindir="$HOME/bin" \ --enable-gpl \ --enable-libx264 \ --enable-nonfree \ --enable-cuda \ --enable-cuvid \ --enable-nvenc \ --enable-libnpp #make -j4
make时间有点久,-j提高速度,一般cpu核心数两倍为宜 #make install
 
vi /etc/profile
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-9.2/lib64:/root/ffmpeg_build/lib
 
验证安装
重新安装完ffmpeg,使用ffmpeg -hwaccels命令查看支持的硬件加速选项
Hardware acceleration methods: cuvid
可以看到多出来一种叫做cuvid的硬件加速选项,这就是CUDA提供的GPU视频编解码加速选项
 
然后查看cuvid提供的GPU编解码器ffmpeg -codecs | grep cuvid
使用GPU进行视频转码测试
ffmpeg -hwaccel cuvid -c:v h264_cuvid -rtsp_transport tcp -i "rtsp://admin:admin@192.168.57.192:554/H264?channel=1&subtype=0&unicast=true&proto=Onvif/video
" -c:v h264_nvenc -b:v 2048k -vf scale_npp=1280:-1 -y /home/2.mp4
 
-hwaccel cuvid:指定使用cuvid硬件加速
-c:v h264_cuvid:使用h264_cuvid进行视频解码
-c:v h264_nvenc:使用h264_nvenc进行视频编码
-vf scale_npp=1280:-1:指定输出视频的宽高,注意,这里和软解码时使用的-vf scale=x:x不一样
转码期间使用nvidia-smi查看显卡状态,能够看到ffmpeg确实是在使用GPU进行转码:
+-----------------------------------------------------------------------------+ | Processes: GPU Memory | | GPU PID Type Process name Usage | |=============================================================================| | 0 62543 C ffmpeg 193MiB | +-----------------------------------------------------------------------------+
向不同GPU提交转码任务
-hwaccel_device N 指定某颗GPU执行转码任务,N为数字,如:
ffmpeg -hwaccel cuvid -hwaccel_device 0
posted on 2019-08-21 11:21  大麦牛奶  阅读(19448)  评论(0编辑  收藏  举报
码云springboot2.0通用权限系统脚手架 https://gitee.com/shenxingping/XPBoot