windows 使用 ffmpeg + cuda 进行视频压缩测试
·
参考博客:
1. 【ffmpeg入门】安装CUDA并使用gpu加速:https://blog.csdn.net/m0_62599305/article/details/140518620
首先在使用之前,你需要先检查下你的电脑是否支持 cuda 加速:
输入
ffmpeg -hwaccels
输出如下信息表示支持 cuda 加速:
Hardware acceleration methods:
cuda
dxva2
qsv
d3d11va
测试情况:
1. 使用 GPU:
ffmpeg -hwaccel_output_format cuda -c:v h264_cuvid -i fastX.mp4 -vf "scale=iw/2:-1" -b:v 500k -c:v h264_nvenc fastX_small_0001_gpu.mp4
2. 使用 CPU:
ffmpeg -c:v h264 -i fastX.mp4 -vf "scale=iw/2:-1" -b:v 500k -c:v h264 fastX_small_0001_cpu.mp4
我的电脑环境情况:
1. 显卡:NVIDIA GeForce RTX 4070 Ti
2. cpu是 13th Gen Intel(R) Core(TM) i7-13700KF 3.40 GHz
3. 内存32g
4. gpu内存27.9g( 共享gpu内存15.9g,专用gpu内存 12g)
5. cuda版本11.6
6. ffmpeg版本:ffmpeg version 6.1.1-essentials_build-www.gyan.dev Copyright (c) 2000-2023 the FFmpeg developer
7. fastX.mp4 的信息为:
时长:02:20:50
帧宽度:1920
帧高度:1080
数据速率:2997kbps
总比特率:3377kbps
帧速率:23.98 帧/秒
其他命令:
1.
ffmpeg -i input.mp4 -vf "scale=iw/2:-1" -b:v 1500k -c:v libx264 output.mp4
2.
ffmpeg -i fastX.mp4 -vf "scale=iw/2:-1" -b:v 500k -c:v libx264 fastX_small_0001.mp4
经测试发现gpu版本的 ffmpeg并为比cpu版本的 ffmpeg命令块多少,甚至更低,其实上述ffmpeg命令并未使用 cuda的全部能力,需要使用cuda的滤镜能力,完整的命令是:
ffmpeg -hwaccel cuda -hwaccel_output_format cuda -c:v h264_cuvid -i fastX.mp4 -vf "scale_npp=iw/2:-1" -c:v h264_nvenc -b:v 500k fastX_small_gpu.mp4
速度一下子干到了 30x,还有一个原因是视频的处理其实并不适合高并发提高性能,因为视频的存储并不是相当于n多张图片简单堆砌而成的,如果是这样的话,可以把视频比如切成10份,开10个线程分别处理每一份,速度很定杠杠的,但是不是这样的,如果视频是由图片简单度堆砌成的,虽然具有了前面的优点但是贼占空间,比如一个90分钟的电影就需要占几十甚至几百个G。你稍微知道一些关键帧,i帧,b帧什么的。就知道,视频需要顺序解析(可能说错了,反正是这个意思),所以后面的图片需要前面图片的结果才能推出其结果,比如第i帧图片和第i+1帧图片有很少的差异,所以第i+1帧存储的并不是完整的图片,而是其和第i帧图片的差异,所以很省空间,但是也意味着必须顺序执行,发挥不了高并发的优势
更多推荐

所有评论(0)