架构师_程序员

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 161|回复: 2

Windows 下使用GPU加速ffmpeg处理任务

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-7 21:08:29
zu
ffmpeg下载

官网下载页:
https://ffmpeg.org/download.html
建议下载编译好的版本,下载页面:
https://ffmpeg.zeranoe.com/builds/
我一般比较喜欢下载最新版的(以日期命名的),当然还有个稳定版(以版本号命名的)的。



CUDA下载

CUDA是一个驱动程序,可以让GPU进行相关运算,因为我们开发应用程序一般不直接操控GPU,而是通过驱动来操作。
https://developer.nvidia.com/cuda-downloads
这里我选择版本的如下图:
当然也可以点击如下链接,直接转到我下载时的设置。
https://developer.nvidia.com/cuda-downloads?target_os=Windows&target_arch=x86_64&target_version=10&target_type=exelocal


下载完了记得安装,那就不介绍了吧,毕竟都是开发软件的。

命令

查询命令
查询所下载的ffmpeg是否支持cuda,如果不支持(我下载的是支持的),那重新下载一下或者自行编译。

  1. ffmpeg -hwaccels
复制代码



测试命令

  1. ffmpeg -hwaccel cuvid -c:v h264_cuvid -i 0.mp4 -c:v h264_nvenc -y 00.mp4
复制代码
将当前目录下的0.mp4转成00.mp4
  1. ffmpeg -hwaccel cuvid -c:v h264_cuvid -i 0.mp4 -c:v h264_nvenc -r 15 -b 500k -y 00.mp4
复制代码
将当前目录下的0.mp4转成00.mp4,并指定输出帧率为15(-r 15),比特率为500k(-b 500k)
  1. ffmpeg -hwaccel cuvid -c:v h264_cuvid -i <input> -c:v h264_nvenc -b:v 2048k -vf scale_npp=1280:-1 -y <output>
复制代码
-hwaccel cuvid:指定使用cuvid硬件加速
-c:v h264_cuvid:使用h264_cuvid进行视频解码
-c:v h264_nvenc:使用h264_nvenc进行视频编码
-vf scale_npp=1280:-1:指定输出视频的宽高,注意,这里和软解码时使用的-vf scale=x:x不一样

多颗显卡命令

GPU转码效率测试
在配有两颗Intel-E5-2630v3 CPU和两块Nvidia Tesla M4显卡的服务器上,进行h264视频转码测试,成绩如下:

GPU转码平均耗时:8s
CPU转码平均耗时:25s

并行转码时,CPU软转的效率有所提高,3个转码任务并行时32颗核心全被占满,此时的成绩

GPU转码平均耗时:8s
CPU转码平均耗时:18s

不难看出,并行时GPU的转码速度并没有提高,可见一颗GPU同时只能执行一个转码任务。那么,如果服务器上插有多块显卡,ffmpeg是否会使用多颗GPU进行并行转码呢?
很遗憾,答案是否。
ffmpeg并不具备自动向不同GPU分配转码任务的能力,但经过一番调查后,发现可以通过-hwaccel_device参数指定转码任务使用的GPU!
向不同GPU提交转码任务

显卡0


  1. ffmpeg -hwaccel cuvid -hwaccel_device 0 -c:v h264_cuvid -i <input> -c:v h264_nvenc -b:v 2048k -vf scale_npp=1280:-1 -y <output>
复制代码
显卡1

  1. ffmpeg -hwaccel cuvid -hwaccel_device 1 -c:v h264_cuvid -i <input> -c:v h264_nvenc -b:v 2048k -vf scale_npp=1280:-1 -y <output>
复制代码
说明:

-hwaccel_device N:指定某颗GPU执行转码任务,N为数字





上一篇:【实战】基于 Nginx 制作 Docker 镜像
下一篇:祝由科.秘诀奇书.乾元亨利贞版无水印
帖子永久地址: 

架构师_程序员 - 论坛版权1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关
2、本站所有主题由该帖子作者发表,该帖子作者与架构师_程序员享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和架构师_程序员的同意
4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
7、架构师_程序员管理员和版主有权不事先通知发贴者而删除本文

码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
沙发
 楼主| 发表于 2019-11-7 21:18:35
//参数说明
/*
    * -i filename(input) 源文件目录
    * -y 输出新文件,是否强制覆盖已有文件
    * -c 指定编码器
    * -fs limit_size(outinput) 设置文件大小的限制,以字节表示的。没有进一步的字节块被写入后,超过极限。输出文件的大小略大于所请求的文件大小。
    * -s 视频比例  4:3 320x240/640x480/800x600  16:9  1280x720 ,默认值 'wxh',和原视频大小相同
    * -vframes number(output) 将视频帧的数量设置为输出。别名:-frames:v
    * -dframes number (output) 将数据帧的数量设置为输出.别名:-frames:d
    * -frames[:stream_specifier] framecount (output,per-stream) 停止写入流之后帧数帧。
    * -bsf[:stream_specifier] bitstream_filters (output,per-stream)  指定输出文件流格式,
例如输出h264编码的MP4文件:ffmpeg -i h264.mp4 -c:v copy -bsf:v h264_mp4toannexb -an out.h264
    * -r 29.97 桢速率(可以改,确认非标准桢率会导致音画不同步,所以只能设定为15或者29.97)
    *
    */
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
板凳
 楼主| 发表于 2019-11-8 15:07:05
ffmpeg.exe -hwaccel_device 1 -hwaccel cuvid -i C:\Users\DELL\Desktop\VideoDemo\VideoDemo\bin\Debug\A14.mp4 -y C:\Users\DELL\Desktop\VideoDemo\VideoDemo\bin\Debug\A16.avi

https://blog.csdn.net/Tosonw/article/details/90178195


nvcc --version

CUVID是基于CUDA的视频解码库,利用CUVID进行解码


Failed to create Direct3D device
Device creation failed: -1313558101.

ffmpeg版本必须对应同期显卡驱动才能正确启用硬件加速。


查看nvidia硬件加速编解码器:

.\ffmpeg.exe -codecs | sls nvenc
.\ffmpeg.exe -codecs | sls cuvid

其中前缀含义如下:

前缀含义
D….. = Decoding supported
.E…. = Encoding supported
..V… = Video codec
..A… = Audio codec
..S… = Subtitle codec
…I.. = Intra frame-only codec
….L. = Lossy compression
…..S = Lossless compression



ffmpeg.exe -hwaccel_device 1 -hwaccel cuvid -c:v h264_cuvid -i C:\Users\DELL\Desktop\VideoDemo\VideoDemo\bin\Debug\A14.mp4 -c:v h264_nvenc -y C:\Users\DELL\Desktop\VideoDemo\VideoDemo\bin\Debug\A16.avi

ffmpeg.exe -hwaccel cuvid -c:v h264_cuvid -i C:\Users\DELL\Desktop\VideoDemo\VideoDemo\bin\Debug\A14.mp4 -c:v h264_nvenc -y C:\Users\DELL\Desktop\VideoDemo\VideoDemo\bin\Debug\A16.avi


https://developer.nvidia.com/ffmpeg
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|Archiver|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2019-12-15 06:12

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表
即时比分新浪