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 可以检查可用的解码器(数量有点多),包括但不限于
h264:H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10
h264_qsv:H264 video (Intel Quick Sync Video acceleration) (codec h264)
h264_cuvid:Nvidia CUVID H264 decoder (codec h264)
hevc :HEVC (High Efficiency Video Coding)
hevc_qsv :HEVC video (Intel Quick Sync Video acceleration) (codec hevc)
hevc_cuvid:Nvidia CUVID HEVC decoder (codec hevc)
vp9:Google VP9
libvpx-vp9:libvpx VP9 (codec vp9)
vp9_cuvid:Nvidia CUVID VP9 decoder (codec vp9)
vp9_qsv:VP9 video (Intel Quick Sync Video acceleration) (codec vp9)
libdav1d:dav1d AV1 decoder by VideoLAN (codec av1)
libaom-av1:libaom AV1 (codec av1)
av1 :Alliance for Open Media AV1
av1_cuvid :Nvidia CUVID AV1 decoder (codec av1)
av1_qsv: AV1 video (Intel Quick Sync Video acceleration) (codec av1)
-encoders 可以检查可用的编码器(数量有点多),包括但不限于
libx264 :libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (codec h264)
libx264rgb: libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 RGB (codec h264)
h264_amf :AMD AMF H.264 Encoder (codec h264)
h264_mf :H264 via MediaFoundation (codec h264)
h264_nvenc :NVIDIA NVENC H.264 encoder (codec h264)
h264_qsv :H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (Intel Quick Sync Video acceleration) (codec h264)
libvpx-vp9 :libvpx VP9 (codec vp9)
vp9_qsv :VP9 video (Intel Quick Sync Video acceleration) (codec vp9)
libx265 :libx265 H.265 / HEVC (codec hevc)
hevc_amf :AMD AMF HEVC encoder (codec hevc)
hevc_mf :HEVC via MediaFoundation (codec hevc)
hevc_nvenc: NVIDIA NVENC hevc encoder (codec hevc)
hevc_qsv :HEVC (Intel Quick Sync Video acceleration) (codec hevc)
libaom-av1:libaom AV1 (codec av1)
librav1e:librav1e AV1 (codec av1)
libsvtav1:SVT-AV1(Scalable Video Technology for AV1) encoder (codec av1)
av1_nvenc:NVIDIA NVENC av1 encoder (codec av1)
av1_qsv :AV1 (Intel Quick Sync Video acceleration) (codec av1)
-buildconf 检查构建配置(编译构建时的参数),我上一期教程中推荐的那一个编译版本,测出来是这样的
D:\Program Files\ffmpeg\bin>ffmpeg -buildconf
ffmpeg version 2023-01-04-git-4a80db5fc2-full_build-www.gyan.dev Copyright (c) 2000-2023 the FFmpeg developers
built with gcc 12.1.0 (Rev2, Built by MSYS2 project)
configuration: --enable-gpl --enable-version3 --enable-static --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-bzlib --enable-lzma --enable-libsnappy --enable-zlib --enable-librist --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-libbluray --enable-libcaca --enable-sdl2 --enable-libaribb24 --enable-libdav1d --enable-libdavs2 --enable-libuavs3d --enable-libzvbi --enable-librav1e --enable-libsvtav1 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libaom --enable-libjxl --enable-libopenjpeg --enable-libvpx --enable-mediafoundation --enable-libass --enable-frei0r --enable-libfreetype --enable-libfribidi --enable-liblensfun --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-ffnvcodec --enable-nvdec --enable-nvenc --enable-d3d11va --enable-dxva2 --enable-libvpl --enable-libshaderc --enable-vulkan --enable-libplacebo --enable-opencl --enable-libcdio --enable-libgme --enable-libmodplug --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libshine --enable-libtheora --enable-libtwolame --enable-libvo-amrwbenc --enable-libilbc --enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-ladspa --enable-libbs2b --enable-libflite --enable-libmysofa --enable-librubberband --enable-libsoxr --enable-chromaprint
libavutil 57. 43.100 / 57. 43.100
libavcodec 59. 56.100 / 59. 56.100
libavformat 59. 34.102 / 59. 34.102
libavdevice 59. 8.101 / 59. 8.101
libavfilter 8. 53.100 / 8. 53.100
libswscale 6. 8.112 / 6. 8.112
libswresample 4. 9.100 / 4. 9.100
libpostproc 56. 7.100 / 56. 7.100
configuration:
--enable-gpl
--enable-version3
--enable-static
--disable-w32threads
--disable-autodetect
--enable-fontconfig
--enable-iconv
--enable-gnutls
--enable-libxml2
--enable-gmp
--enable-bzlib
--enable-lzma
--enable-libsnappy
--enable-zlib
--enable-librist
--enable-libsrt
--enable-libssh
--enable-libzmq
--enable-avisynth
--enable-libbluray
--enable-libcaca
--enable-sdl2
--enable-libaribb24
--enable-libdav1d
--enable-libdavs2
--enable-libuavs3d
--enable-libzvbi
--enable-librav1e
--enable-libsvtav1
--enable-libwebp
--enable-libx264
--enable-libx265
--enable-libxavs2
--enable-libxvid
--enable-libaom
--enable-libjxl
--enable-libopenjpeg
--enable-libvpx
--enable-mediafoundation
--enable-libass
--enable-frei0r
--enable-libfreetype
--enable-libfribidi
--enable-liblensfun
--enable-libvidstab
--enable-libvmaf
--enable-libzimg
--enable-amf
--enable-cuda-llvm
--enable-cuvid
--enable-ffnvcodec
--enable-nvdec
--enable-nvenc
--enable-d3d11va
--enable-dxva2
--enable-libvpl
--enable-libshaderc
--enable-vulkan
--enable-libplacebo
--enable-opencl
--enable-libcdio
--enable-libgme
--enable-libmodplug
--enable-libopenmpt
--enable-libopencore-amrwb
--enable-libmp3lame
--enable-libshine
--enable-libtheora
--enable-libtwolame
--enable-libvo-amrwbenc
--enable-libilbc
--enable-libgsm
--enable-libopencore-amrnb
--enable-libopus
--enable-libspeex
--enable-libvorbis
--enable-ladspa
--enable-libbs2b
--enable-libflite
--enable-libmysofa
--enable-librubberband
--enable-libsoxr
--enable-chromaprint
参考文档
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
Comments NOTHING