QuickCut

Quick Cut 官方仓库https://github.com/HaujetZhao/QuickCut

直接下载发行版本即可,需要注意的是他自带的ffmpeg比较小,很明显不太完善,用入门教程中别人编译的应该更好点。

该工具可以快速上手使用FFmpeg,生成的命令也可以直接修改后,直接运行,不需要再打开CMD。

同时也有很多预设的配置,以及快速的读取路径等。对于新手比较友好。

不过需要注意的是,很多预设配置不怎么聪明,建议根据自己实际情况进行调整。

补充常见参数

-hwaccel cuda  使用硬件加速来解码匹配的流,根据官方说明,有这些选项可选(并没有提到CUDA,但是N卡官网给出的示例有CUDA)
none
不使用任何硬件加速(默认)。
auto
自动选择硬件加速方法。
vdpau
使用VDPAU(Video Decode and Presentation API for Unix)硬件加速。
dxva2
使用DXVA2(DirectX视频加速)硬件加速。
d3d11va
使用D3D11VA(DirectX视频加速)硬件加速。
vaapi
使用VAAPI(视频加速API)硬件加速。
qsv
使用英特尔QuickSync视频加速器进行视频转码。

不过“如果所选 hwaccel 不可用或所选解码器不支持,则此选项无效。请注意,大多数加速方法都用于播放,不会比现代 CPU 上的软件解码更快。此外,ffmpeg 通常需要将解码后的帧从 GPU 内存复制到系统内存中,从而导致进一步的性能损失。因此,此选项主要用于测试。”

-hide_banner   禁止打印横幅。所有 FFmpeg 工具通常都会显示版权声明、构建选项和库版本。此选项可用于禁止打印此信息。

-qscale 使用固定质量标度 (VBR)。q / qscale的含义取决于编解码器(可能导致-b无效、自动调整比特率)该设置会动态的调整比特率,可能导致画面损失、文件大小不容易控制,但是可以控制画面质量,一般取值范围,qscale的取值可以是0.01-255但实际使用超过50就很糟糕(好像0也可以,代表无损),具体效果需要实测。

-c 后接:a时代表控制音频,后接:v时代表控制视频(画面),该参数需要放在文件路径前面(比如,-c:a copy代表复制音频输出、-c:v av1_nvenc代表用N卡AV1硬编码、-c:v h264_cuvid代表使用N卡AVC硬解码)(使用文件列表时可能导致画面黑屏)

-i 输入文件,后接路径、URL

其他命令还可参考

FFmpeg + NVIDIA AV1 硬编码 视频转码压制入门教程

另外第三方给出的常用参数有(不一定可用)

-s 320x240 指定分辨率
-r 29.97 桢速率(可以改,确认非标准桢率会导致音画不同步,所以只能设定为15或者29.97)

补充常见场景

拼接2个或者多个视频

ffmpeg -y -hide_banner -vsync 0 -safe 0 -f concat -i "fileList.txt" -c copy "F:/FFOutput/output.mp4"

也可以用上CUDA加速

ffmpeg -y  -hwaccel cuda -hwaccel_output_format cuda -hide_banner -vsync 0 -safe 0 -f concat -i "fileList.txt" -c copy "F:/FFOutput/output.mp4"

-safe 0 -f concat -i "fileList.txt" 就是拼接、连接、合并视频需要的参数

这个txt文件可以放在和ffmpeg同目录中,也可以是其他路径。

里面需要填写文件信息,格式如下

file 'F:/FFOutput/Rainbow Six 2023-01-18 20-49-22.mp4'
file 'F:/FFOutput/Rainbow Six 2023-01-18 21-01-56.mp4'

需要注意一行一个,用的单引号,注意空格和路径问题

显卡工作流限制

对于N卡来说,部分显卡会受到编解码器限制,部分显卡会受到编解码任务数限制,根据官网文档 https://developer.nvidia.com/video-encode-and-decode-gpu-support-matrix-new

对于 GeForce RTX 4080 16GB Desktop、GeForce GTX 1080、GeForce GTX 980来说,有1个编码芯片(带有2个编码器),一共能同时并行执行3个编码任务;有1个解码芯片(带有1个解码器)。

对于 GeForce RTX 3090、GeForce RTX 3080、GeForce RTX 3060、GeForce RTX 2080、GeForce RTX 2060、GeForce GTX 1060来说,有1个编码芯片(带有1个编码器),一共能同时并行执行3个编码任务;有1个解码芯片(带有1个解码器)。

(另外有趣的是,N卡编码支持中3060Ti Desktop错误的标记为Mobile/Laptop,已经提交反馈,看看啥时候改)

而在专业卡方面,比如 NVIDIA RTX A4/5/6000、Quadro T2000、Quadro RTX 4/5/6/8000等都没有编码任务数量限制(也有有限制的)

工具性命令

-decoders 可以检查可用的解码器(数量有点多),包括但不限于

   解码器,打不开请刷新网页  ==>  展开 / 收缩

-encoders 可以检查可用的编码器(数量有点多),包括但不限于

   编码器,打不开请刷新网页  ==>  展开 / 收缩

-buildconf 检查构建配置(编译构建时的参数),我上一期教程中推荐的那一个编译版本,测出来是这样的

   buildconf,打不开请刷新网页  ==>  展开 / 收缩

参考文档

https://ffmpeg.org/ffmpeg.html

https://github.com/HaujetZhao/QuickCut

https://www.cnblogs.com/chen1987lei/archive/2010/12/03/1895242.html

https://www.blueskyxn.com/202301/6785.html

https://docs.nvidia.com/video-technologies/video-codec-sdk/ffmpeg-with-nvidia-gpu/

https://git.ffmpeg.org/ffmpeg.git

https://www.zhihu.com/question/300182407

https://www.bilibili.com/read/cv9562802

https://developer.nvidia.com/video-encode-and-decode-gpu-support-matrix-new