windows调用ffmpeg使用n卡压缩视频命令行参数

ffmpeg -vsync 0 -hwaccel cuvid -c:v h264_cuvid -i input.mp4 -vf scale_cuda=1280:720 -c:v h264_nvenc -b:v 300k output.mp4

提示错误尝试吧scalecuda 或者 -s调整分辨率的参数删掉 cuvid改成cuda
调整码率的参数可以设置为-crl 取值0-32之间,越大画质越低,一般压缩设置在23左右即可
-c:v 表示选择的编码/解码器 给出的参数是n卡的

-i——设置输入档名。
-f——设置输出格式。
-y——若输出文件已存在时则覆盖文件。
-fs——超过指定的文件大小时则结束转换。
-t——指定输出文件的持续时间,以秒为单位。
-ss——从指定时间开始转换,以秒为单位。
-t从-ss时间开始转换(如-ss 00:00:01.00 -t 00:00:10.00即从00:00:01.00开始到00:00:11.00)。
-title——设置标题。
-timestamp——设置时间戳。
-vsync——增减Frame使影音同步。
-c——指定输出文件的编码。
-metadata——更改输出文件的元数据。
-help——查看帮助信息
-r ----帧率——

-vf 视频滤镜

ffmpeg -vsync 0 -hwaccel cuvid -c:v h264_cuvid -i input.mp4 -c:v h264_nvenc -b:v 2048k -s 1920x1080 output.mp4

-hwaccel cuvid:使用cuvid进行硬件加速
-c:v h264_cuvid:使用h264_cuvid进行解码
-c:v h264_nvenc:使用h264_nvenc进行编码(nvidia硬件加速x265)
-b:v 2000k:比特率,值越大约清晰。
-s 1920x1080:分辨率
-b:v 3500K :视频平均比特率为 3500K
-bufsize 6000K:缓存区大小 6000K,建议设定为 当前码率帧率5,也许这里的2pass是针对缓冲区的,缓存未来5s
-maxrate 5000K:最大码率为 5000K,每帧的最高码率不超过这个数值
-preset slow:预设方案是 slow,slow已经是最好的选项了
-pix_fmt p010le:输出的像素格式是 p010le 也就10bit,只有新的硬件支持,例如:970m不支持,1070可以支持

通过命令 ffmpeg -hwaccels 可以查询系统支持的硬件加速器。

ffmpeg -hwaccels
----------------------------------------------
cuda
dxva2
qsv
d3d11va
qsv
cuvid

–preset的参数主要调节编码速度和质量的平衡,有ultrafast(转码速度最快,视频往往也最模糊)、superfast、veryfast、faster、fast、medium、slow、slower、veryslow、placebo这10个选项,从快到慢。

–tune的参数主要配合视频类型和视觉优化的参数,或特别的情况。如果视频的内容符合其中一个可用的调整值又或者有其中需要,则可以使用此选项,否则建议不使用(如tune grain是为高比特率的编码而设计的)。

tune的值有: film: 电影、真人类型;

animation: 动画;

grain: 需要保留大量的grain时用;

stillimage: 静态图像编码时使用;

psnr: 为提高psnr做了优化的参数;

ssim: 为提高ssim做了优化的参数;

fastdecode: 可以快速解码的参数;

zerolatency:零延迟,用在需要非常低的延迟的情况下,比如电视电话会议的编码。

你可能感兴趣的:(ffmpeg,音视频)