https://zhuanlan.zhihu.com/p/1913258114746122747
libx264 -crf24
= libx265 -crf 25
= libsvtav1 -crf 30~34
= h264_qsv -global_quality 24
= hevc_qsv -global_quality 23~24
= h264_nvenc -cq 28~30
= hevc_nvenc -cq 28~30
= av1_nvenc -cq 34~36
即,hevc_qsv 选 “-global_quality 24”,hevc_nvenc选 “-cq 30”。
本文适合具备基础电脑知识的读者浏览。本文适合具备基础电脑知识的读者浏览。

雪绒
只要知识水平在解压缩包以上,分得清和显卡的型号,就能看懂本文。只要知识水平在“解压缩包”以上,分得清cpu和显卡的型号,就能看懂本文。
本文接近四万字,预计需要一小时以上或者数日的阅读时间。本文接近四万字,预计需要一小时以上或者数日的阅读时间。
视频压缩不可避免的涉及一些电脑硬件知识。
如果你平时用“运行内存”和“储存内存”这样的词语来交流,不知道“内存”和“储存”,那么阅读本篇文章可能会感到重重困难。
这些属于简单的硬件常识,不在视频压缩文章的教学范畴内。
可以在其他网页学习,这并不难懂。
:CPU:
:GPU:
极速空间显卡天梯图 (2025台式显卡和笔记本显卡性能排行)
【查显卡TDP功耗、显存带宽等具体规格属性】GPU Database | TechPowerUp
本文为入门教程,不涉及高级压缩参数。不会讲苹果显卡编码“prores”。
图片极多,可适时点开大图浏览。
本文提供的部分网页链接需要翻墙,如发现点不开网页,你知道的。
翻墙:通过神秘的特殊方式访问国外网站。不便细说,请各显身手。
“安卓手机压缩视频”在专栏目录最底下。
观文指引:

电脑网页左侧目录,手机APP往上滑一下会在顶部出现可展开的目录。
最好用电脑观看本文,知乎没有富文本,只能用LaTex公式来加多色文字,这在手机APP上观看会有一些排版问题。或者手机上网页知乎,浏览器开桌面模式。
如果觉得本文较长,懒得逐一看完,想直接上手某某压缩软件,这也没有问题。
在软件中遇到陌生名词,感到困惑时,记得回到本文按ctrl+F搜索关键词,看了就明白了。
小白需要理解的陌生压缩术语,这篇文章都有解释。
ctrl+F 没有搜到的词语,本文没提到的,就是不影响视频压缩的不重要内容、或者不属于视频压缩入门阶段的高阶内容,小白不了解也无所谓。
专栏其他文章汇总:
2、视频压缩大测试结果报告:CPU编码、显卡编码、H264、H265、AV1 - 知乎
3、视频压缩大测试批处理脚本:可测CPU编码、显卡编码、CRF、CQ、preset、VMAF、H264、H265、AV1 - 知乎
4、2025.6.29 图片压缩小测试:HEIC、AVIF、JPEG-LI、JPG、WEBP - 知乎
5、最全面的 yt-dlp 批处理脚本,复制网址再双击bat脚本即可下载油管视频 - 知乎
视频压缩共识视频压缩“共识”
视频压缩共识:
一、视频压缩指的是:将视频文件体积降低的同时尽量减少画质损失,至少让肉眼看不出来画质损失的一种技术。
我个人认为,还应该至少降低一半的体积,才是成功的压缩。我个人认为,还应该至少降低一半的体积,才是“成功”的压缩。
压缩过程中会将视频的信息重新编码,也可称其为“视频转码”。
编码:“制作”视频
解码:“播放”视频
压缩的基本目的是,减少电脑硬盘存储空间的占用。

还是加硬盘罢
二、“天呐!还有这种技术?想必是很复杂吧,不看了,告辞!”…
压缩视频可以如饮水般简单:压缩视频可以如饮水般简单:
无需摸透所有门道,只需要下载四个免费压缩软件:“丸 格 刹 菠” 的其中一个。

小丸工具箱、格式工厂、“刹那编码器”、“大菠萝”
拖入视频,啥也不调,全部默认,闭眼“开始”,软件自动运行,静待片刻,压缩即成。
零基础想快速进行视频压缩的朋友,只需下载安装其中任一软件,5分钟内便可开始压缩,有时间再看本文。
小丸工具箱 :https://maruko.appinn.me/
格式工厂 :http://www.pcgeshi.com/
ShanaEncoder :https://shana.pe.kr/shanaencoder_portable
HandBrake : https://handbrake.fr/
其实只下载刹那就行了。其实只下载刹那就行了。
压缩视频也可以如解密般复杂:压缩视频也可以如解密般复杂:
遨游在FFmpeg的参数海洋中,问寻“如何速度更快、画质更好、体积更小?”
“有没有最佳压缩和最省时间的性价比预设参数?”
“什么是《DCT离散余弦变换》?”……
三、对于小白,此文是指南,看完可以助你驾驭压缩工具如鱼得水。
对于老手,此文是云梯,厘清此前陌生的术语,刷新陈旧的认识,可以助你更上一层楼。
最后还能自制简易的命令行脚本,让你使用FFmpeg如臂使指。
高频词FFmpeg:学习视频压缩的过程,就是认识FFmpeg中的各种参数的过程。
FFmpeg.exe是一个140MB左右的小文件,开源免费,是唯一指定音视频处理工具。
但是FFmpeg没有软件界面,只是一个CMD命令行工具。
(按住win键+R,输入cmd,回车,弹出的窗口就是CMD命令行)。
为了让它易于使用,有很多人为FFmpeg开发图形界面,这就诞生了市面上各种各样的压缩软件。
这就是说,基本上所有视频压缩软件的核心都是FFmpeg,他们的工作逻辑都是:
软件把你设置的参数,“告诉”内置在软件中的FFmpeg,让FFmpeg自己压。
压缩的具体计算过程,与该软件本身毫无关系,软件没有出任何力。FFmpeg有自己的官网,每年都在更新。FFmpeg也不是这些压缩软件的厂商开发的,注意不要给犄角旮旯里不知名的付费压缩软件交钱。
不存在说“各个压缩软件有专属的压缩技术”,他们只是软件界面不同。
所以说上面的四个压缩软件可以任选一个下载,参数相同结果一样。这也意味着,小白看完本篇文章知道三个常用的参数:CRF(恒定画质压缩模式 CPU压制御用参数)、CQ(N卡恒定画质压缩模式 N卡压制御用参数)、perset(速度预设),这些任何压缩软件都通用的参数,就算是入门视频压缩了,这并不复杂。
不用软件也可以写CMD命令行脚本,自己调用FFmpeg.exe,自己发参数给FFmpeg压。
后文会着重介绍并给出FFmpeg下载地址,可以点目录跳转。
老手能在本篇文章里刷新什么旧识?
比如:2025年的GPU编码(av1_nvenc)已经不差CPU编码(libsvtav1)了
难以置信?因为你GPU编码压出来总是体积很大?你知道 -cq 36± = -crf 24± 吗?
你是否在根据cpu压制时使用-crf24的经验,在显卡压制时也使用了-cq24呢?

VMAF画质测试曲线图,可双击放大图片
还是说过去你一直在截图视频,肉眼盯帧查画质,没有用软件工具测试过VMAF分数?
本文后续会一一提及这些问题。
四、希望大家不要把本篇文章当作是艰深晦涩的“技术性文章”,束之高阁。
而是当作一个人在与你交谈,分享视频压缩的“常识”,在我们之间建立相同的“共识”。
高情商:统一共识。低情商:以后和人聊压缩时不要再一知半解,胡说八道喇!高情商:统一共识。低情商:以后和人聊压缩时不要再一知半解,胡说八道喇!

五、提问:“怎么不用达芬奇、Finalcut?这些不也有显卡加速,不是说XX剪视频很厉害吗?”
达芬奇、PR(Adobe Premiere)、剪映、Finalcut,是最常见的几款视频剪辑软件。
这些软件严格来讲是渲染视频的软件,不是压缩视频的软件。
他们的工作只是把视频弄出来,体积不一定小。
这和 HandBrake、ShanaEncoder 这些视频压缩软件是不一样的。
视频剪辑软件视频压缩软件:视频剪辑软件 and 视频压缩软件:
视频剪辑软件和视频压缩软件
**剪辑软件:**达芬奇、剪映、PR、Finalcut
**核心任务:**渲染并合成视频,可能会涉及到3D特效场景。
**依赖硬件:**依赖显卡的3D图形性能(CUDA核心、流处理器),不同型号显卡(如4060与4090)的效率差异显著。
压缩软件:“丸、格、刹、菠”
**核心任务:**只负责编码视频。 还记得吗?编码制作视频还记得吗?编码=制作视频
**依赖硬件:**N卡编码(nvenc)只会调用老黄特别定制在显卡内的,除了编解码啥也干不了的nvenc硬件单元,不会用到CUDA核心。
i卡编码(QSV)和A卡编码(AMF)也一样只用到GPU内的专门编解码单元,不涉及显卡的3D图形性能。
如果你看到任务管理器的“3D”一栏动了,那只是任务管理器显示抽风。
也就是说并不是显卡性能越强,压缩视频就越快。
同代显卡的编码性能接近一致,很多时候4060=4090,因为压缩时都只调用了一个nvenc单元。
文章后半段的单元部分有更详细的说明。可以点击目录跳转。文章后半段的“nvenc单元”部分有更详细的说明。可以点击目录跳转。

老黄
显卡加速、显卡压制、显卡编码、硬件编码都是一个意思,过程相同,指的都是利用显卡内特制的硬件单元来制作视频这一回事。
这就是说,没有“CPU编码的时候能不能让显卡稍微帮忙加速一下”这种事情。
嘴上说的“显卡加速”就是显卡来编码。
要么CPU软件编码器(如“libx264”),要么GPU硬件编码器(如“h264_nvenc”)。
什么是软件编码器和硬件编码器?文章后半段会更详细解释,可以随时点目录跳转查看。
两者是分开的。还没有什么编码器可以一半代码交给CPU,一半代码交给GPU,又软又硬的运行。
CPU和GPU的编码参数不是完全相同的,中途算得不一样,如何各分一半再合起来呢。
不过,可以同时压缩两个视频,一个cpu编码,一个gpu编码,这就能 CPU 100% + GPU 100% 了。
但是CPU的性能和GPU的编码速度是正相关的,CPU越快,GPU编码速度也越快。
并不是说CPU一直划水没有用。想让cpu和gpu一起参与压缩,选择硬件编码器就可以了,cpu会出力的。
以下术语较多,如果暂时听不懂也没关系,可以跳到下一节“文章内容简述”。
与协议:FFmpeg与GPL协议:
话说到最后,剪辑软件再怎么在时间线上“渲染视频”,最后也得要把视频导出为文件,这个过程必然包含“编码”,不编码导出怎么生成视频呢。
这和压缩软件的“编码视频”有什么不一样吗?
这就是剪辑软件和压缩软件的另一个区别:商业软件不能内部集成FFmpeg。
FFmpeg的“libx264、libx265”这些功能是在 GPL 开源协议内的。
如果将这部分的 FFmpeg 源码集成进软件内,该软件将被视为 FFmpeg 的“GPL协议衍生作品”,就必须按照协议规定开源整套代码,这对商业公司不可接受。
具体来说,采用GPL协议的作品,开源免费,可以随便用。
当你把这些开源的 GPL 协议代码集成进了自己的软件里,则该软件也必须采用GPL协议,也必须要开源和免费。
这是一种“传染性”很强的开源协议。
准确来说,FFmpeg源代码本身默认以 LGPL 协议发布,但其包含部分 GPL 协议的内容,采用 GPL 协议更多的是其第三方库(如 x264、x265、svtav1等)。
FFmpeg本体和第三方库有什么区别?这部分会在下文讲“软件编码器”时会再提到。
2009年的QQ影音和暴风影音,因软件闭源 + 程序内集成 FFmpeg的GPL协议代码,形成了侵权事件。给腾讯带来不小麻烦。

逆转裁判,御剑怜侍
现在还没有讲到 libx264 和 CRF,先看看就好。
感兴趣可以搜索 MPEG4、DivX、XviD 的爱恨情仇,2002年的往事。
以前被闭源背叛过,业内有教训了,后面就要求必须遵守GPL协议开源。
所以达芬奇、PR、Finalcut都是自己写的一套编解码引擎,与FFmpeg不相同。
他们就没有办法像内置了 FFmpeg 的各种免费视频压缩软件一样。
能够使用 FFmpeg 的所有强大参数,把视频压得又小又好。
…表面上是这样的,剪辑软件官方要避嫌,导出选项只有CBR和VBR,只能设定码率。
但可以通过第三方插件比如“Voukoder”,来让达芬奇\AE\PR导出“x264 crf”编码的视频,也算是曲线实现了: https://www.bilibili.com/video/BV1Wm411C7gr/
班迪录屏(Bandicam)也没有内置FFmpeg,因为它也是收费软件。
开源免费的OBS录屏就有内置FFmpeg,可以选择用CRF模式录屏,录完都不需要再次压缩了,直接丢硬盘里放着。
OBS录屏软件官网: https://obsproject.com/
Bandicam(破解版)和OBS是电脑录屏软件中最常见的两个。
另外,如果视频压缩软件只是给 FFmpeg 做一个GUI界面。
以独立进程的形式调用 FFmpeg.exe ,两者之间仅通过命令行参数交换数据。
相当于“一个闭源程序(套壳GUI) + 一个自由软件(FFmpeg.exe)”。
这种做法最多称为“聚合体”,GUI部分的代码可以闭源,不会违规。
“聚合体”:软件的各个组成部分彼此独立,没有进行深度集成,没有形成衍生关系,可被视为多个软件的简单组合。
把FFmpeg代码编译进软件主程序内的,才叫作“衍生作品”,才需要遵守GPL协议的开源义务。
“衍生作品”:软件主程序与 FFmpeg 代码紧密集成、相互依赖,形成了一个全新的整体。
但这么说有点含糊,谁才算是“聚合体”呢?
格式工厂也曾被钉到FFmpeg“耻辱柱”上(FFmpeg官方列出的战犯名单,截止更新到2014年,网页现已无法访问。)
如果说 FFmpeg.exe 暴露在外,完全独立,用户都能自己更新的话,那只有 FFmpegFreeUI 了。

FFmpegFreeUI,github搜同名

mediainfo。可双击放大图片。

所以说为什么要和大家建立“共识”,下次不要一知半解去丢人了
文章内容简述文章内容简述
文章内容简述:
我将按时间线顺序,讲述我自己2016年使用小丸工具箱。
2019年使用格式工厂。
2021年使用ShanaEncoder。
2023年至今使用自制的批处理脚本的经历。
大菠萝HandBrake:我用得少,只会稍微截图提及。
按我本人的学习过程,从浅入深顺序讲解。边讲软件,边适时穿插名词科普:
CRF、preset、CQP、nvenc、qsv、amf、H264、H265、AV1、VMAF。
哪里提到了名词就解释,不提到的名词暂时不说。
避免让你产生这样的感觉:
我总是不知道自己是不是在浪费时间看一些用不着的功能,所以根本打不起精神去用脑理解这些陌生的概念。“我总是不知道自己是不是在浪费时间看一些用不着的功能,所以根本打不起精神去用脑理解这些陌生的概念。”
好像做不到了,文章写太长,哪里都是陌生的概念()好像做不到了,文章写太长,哪里都是陌生的概念()
不会用术语来解释术语,确保小白也能完全看懂。

小刻也能看懂的XXX入门.jpg
但也不能真小白到MB、GB、码率/比特率都不知道阿。
这缺的是电脑常识,而不是压缩知识。

真的很专业吗?
码率1000kbps,即视频每秒1000kb,这就是“码率/比特率”,很简单。
为什么叫比特率?搜bit、byte、kbyte、Gbyte。
学视频压缩,就像学习骑自行车,一开始难学,花两三天学会之后每天都在骑。
普通人只是掌握一些普通的本领,会骑车就够了,不需要深入钻研成为职业运动员。
本文所介绍的这些入门知识就像学骑车一样,一开始感到陌生,但并不难理解,看完就会了。
以下几大段术语偏多,萌新暂不想深究的可跳至第一节小丸工具箱以下几大段术语偏多,萌新暂不想深究的可跳至第一节“小丸工具箱”
暂不想深究的可跳至第一节小丸工具箱暂不想深究的可跳至第一节“小丸工具箱”
可跳至第一节小丸工具箱可跳至第一节“小丸工具箱”…
可以随时点击左侧专栏目录进行跳转。
给老手的一些科普:给老手的一些科普:
VMAF是什么?
、可以在画质、体积看齐的情况下,速度快两三倍。1、av1_nvenc 可以在画质、体积看齐 svtav1 的情况下,速度快两三倍。
默认仅用crf/cq+preset这俩参数,无其他参数的情况,av1_nvenc 大约是 svtav1 的95%水平。
具体表现可以看我的压缩大测试专栏文章。
视频压缩大测试结果报告:CPU编码、显卡编码、H264、H265、AV1 - 知乎

、不要再盯帧了!2、不要再盯帧了!
上面的结论是怎么得出来的?当然是测出来的,不是只靠“看”的。
而测试视频画质的客观标准,就叫“VMAF”。
由Netflix(网飞,国外爱奇艺)推出,全称:Video Multimethod Assessment Fusion
中文全称:“视频质量的多方法综合评价”。
VMAF是现在用得最多的视频质量评价标准。
而在2016年VMAF推出之前,就已经有两个测试视频质量的指标了,分别是 PSNR 峰值信噪比 和 SSIM 结构相似性 。
但老指标有不足之处:对画质的评估显得过于“机器视角”,而非人眼视角。
VMAF更为先进,融合多种算法更精准的模拟人眼对画质的真实感受,优于传统指标。
VMAF评分范围0~100分,分数越高,压缩后的视频和源视频的画质就越接近。
用相关软件进行测试,VMAF分能达到95分以上,即可判断为“肉眼几乎看不出和源视频的差距”,是合格的一次压缩。
VMAF的模型是一个只有20kb的json小文件,已内置到FFmpeg.exe里。可以直接用 CMD命令行脚本 + FFmpeg 来测试VMAF分值。
还可以用第三方软件 “FFmetrics”、“msu vqmt” 来测VMAF分。
运行过程就是非常简单的将两个视频拖到软件里,点开始就测出来了。没难度,有手就会。

FFmetrics
文章后半段会再细讲这三种测试VMAF的方式。内容比较长,这里就不展开了。
XPSNR:
还有一个比VMAF更加新的指标:“XPSNR 扩展感知加权峰值信噪比”。
是PSNR的升级版,准确度大约和VMAF不相上下。
XPSNR和PSNR一样是纯算法评估,不像VMAF还需要模型文件。
可以用CMD命令行+FFmpeg直接测试XPSNR,但目前也只有这种办法,还没有第三方软件可以测XPSNR, “FFmetrics”和“VQMT”都不行。
FFmpeg官方对XPSNR的说明:https://www.ffmpeg.org/ffmpeg-filters.html#xpsnr-1
ffmpeg -i 压缩前.mp4 -i 压缩后.mp4 -lavfi xpsnr="stats_file=xpsnr.log" -f null -
XPSNR分数的理论数值是0~无穷大dB,实际应用中多分布于30–50 dB,45dB以上是肉眼无损。
总之,单单截图盯静帧,然后讨论“啥编码器不如啥编码器”,是不全面的。
视频是会运动的,有些时候静态截到的“小瑕疵”,动起来看也没有太大的问题。
当然,如果差异大到能一眼发现区别,比如糊成马赛克,自然可以立判高下。
但是一时半会看不出区别的…
只用截图的办法在上百个视频之间逐帧截图,盯帧数日对比画质?那很有限,也不太对。
与他人谈“编码器”优劣,谈“A参数更好”,“B参数不好”,至少要拿出像下图一样的“VMAF/码率”测试表格。

双击大图
否则仅是“眼睛看,脑子想,嘴巴说”,很多时候交流起来会比较抽象,难以服众。
有VMAF测试做打底,也有截图做局部说明,是比较好的。
真盯帧截图,也不用那么原始,至少用个工具吧,比如英伟达官网的 ICAT : https://www.nvidia.cn/geforce/technologies/icat/

如果你的电脑看不出来图中有色彩断层,请到英伟达控制面板开启10bit模式,具体步骤百度。
可以使用 github 开源工具 video-compare 来对比画面: https://github.com/pixop/video-compare
video-compare 是一个命令行工具,比起 icat 点击即用有些麻烦。
其默认播放 8bit 格式画面,但还支持以 10bit 模式启动,能正常播放 av1 10bit 画面。
它的使用方式和 FFmpeg 差不多,你需要下载解压后,在其目录文件夹的资源管理器地址栏上输入“cmd”。或者将其目录添加至环境变量,再按 win+r ,输 cmd,打开命令行界面。
然后输入它在 github 详情页面提供给你的命令行代码,就能启动 video-compare 了。
其实真要对比画质,做出上面的VMAF曲线图只是第一步。
还要套公式做积分计算,将曲线图化为具体的数字。
比如计算得到:“BD-Rate=-25%”,才能说“Axx编码比Hxxx编码平均节省25%的码率”。
当然,这太业内了,只有VMAF曲线图也够我们说明画质问题了。

BD-rate曲线
目前市面上没有找到能用不同参数批量压缩几百个视频,并同时测试VMAF的软件。
所以我做了压缩大测试脚本,记录速度(FPS)、体积(MB)、画质(VMAF)
各位可以到我那篇文章看看。
视频压缩大测试批处理脚本:可测CPU编码、显卡编码、CRF、CQ、preset、VMAF、H264、H265、AV1 - 知乎
VMAF的局限性:
、如果目的是修复影片提高画质,而不是普通的压缩视频,那么3、如果目的是修复影片提高画质,而不是普通的压缩视频,那么…
VMAF分数的高低不等同于绝对的画质优劣,而是反映与原视频的相似度。
也就是,判断长得“像不像”原片。
因此,任何改变原视频画面结构的修复操作都可能会让VMAF分数发生变化,这里有几种情况:
- 使用AI超分辨率的情况:
如果引入原片不存在的细节(如AI超分辨率生成的高清纹理),新增的细节与原片像素无对应关系,可能会被VMAF算法判定为“失真”,然后便会出现:影片画质提高了但VMAF分数降低十几分的情况。
也就是,长得“不像”原片了。
Topaz video ai 超分,可以跳过此段继续看VMAF的话题:
插入讨论,关于与超分辨率:插入讨论,关于topaz video ai与AI超分辨率:

可双击放大

可放大
这是名气不小的视频AI放大工具:topaz video ai,本体700MB,模型几十G。
如上,左原图,右ai超分辨率,右边人脸更清晰更细,纹理更多。
超分辨率:1080p(1920x1080)的视频,超两倍分辨率就会输出4k(3840x2160)的视频。
应该不用解释什么是分辨率吧。
如果想要下载topaz video ai,建议百度破解版,你懂的。

可双击放大

图里的叶子显得proteus还有点效果,超人脸就不像iris立竿见影了


哈哈,鬼图来咯
这副鬼图是人从暗处走出,慢慢到光亮的地方,片子本身就马赛克,黑的时候更为模糊,没什么人脸信息,iris急着脑补,就生成了鬼脸。
所以说超分视频并不好玩。
要把握好“画质清晰”和“结构正确”的度,在两者间找均衡。
AI脑补力越高,重建纹理细节越激进,画质就越“清晰”,但离“正确”也越远,脑补方向出错时的人体结构也越离谱;
AI脑补力越低,越保守,越是不敢动原画面,就越能降低错误率。但保守到和原片没区别,看不出超分是干啥来的,“正确”是有了,但离“清晰”又远了,那也不用超了。
追求既画质清晰又结构正确,常常一调参数坐一天。
这中间没有评估标准帮我们均衡“清晰”与“正确”的数值。
好在视频压缩领域我们还有一个VMAF标准,可以帮我们均衡“画质”、“码率”与“时间”。
现在回到的话题现在回到VMAF的话题——
我们上面说到,任何改变画面结构的操作都会影响VMAF的评分。
AI超分视频是一种情况,下面就是另一种情况。
- 使用FFmpeg自带的各种滤镜的情况:
比如“锐化-unsharp”、“降噪-hqdn3d”、“去块-block”、“去色带-deband”等滤镜。
可以把“滤镜 Filter”这个词换成“各种各样的功能”来理解。
如果适度使用这些滤镜,在恰当的范围内去块、去色带,修复伪影,使图像更接近“原始未压缩状态”,没有引入“新的细节”,是确实可以提升画质,提高VMAF分数的。
但如果过度使用,用力过猛,把原片画面结构破坏了,还是会造成反效果,降低VMAF分数。
加糖加几勺才算“适度”?只能各位自己尝试了。
去块、去色带是什么?:认识瑕疵 | VCB-Studio 公开教程
不理解也没关系,继续看。
而像“锐化”、“对比度增强”这些滤镜,只是表面上让画面“变得好看”,并未实际修复画面线条,VMAF可能会出现误判,让评分虚高,造成“虚假的质量提升”。
锐化:给物体边缘描边加粗,像绘画勾线一样。锐化过度会让画面像贴了塑料膜一样扎眼。
对比度增强:让亮的地方更明亮,暗的地方更深邃。对比度太高会让亮的地方过曝发白、暗的地方死黑一片。
无图听着抽象?没关系,也不用理解。用到的时候在相关软件里调一调就理解了。
针对这种情况,网飞也推出了**“VMAF NEG”模型**,通过调整权重减少“美化”部分的分数,可以一定程度抑制“锐化”这类滤镜的影响,避免对评分产生干扰。
但是FFmpeg没有内置neg版模型,即vmaf_v0.6.1neg.json,只内置了普通版的vmaf_v0.6.1.json。
如果用命令行FFmpeg,需要把neg版模型文件下载到硬盘里,进行VMAF测试时再调用资源管理器里的模型,比较麻烦。可以在软件“FFmetrics”里面直接选择neg版本的模型进行VMAF测试。
你可以在VMAF的github官方页面和 FFmetrics 的软件文件夹里找到 neg模型,也是20kb的小文件。
我不用锐化不就完了(

FFmetrics
还有一种滤镜,“film-grain 胶片颗粒滤镜”,这是 svtav1 专属滤镜。
使用该滤镜能保留原片噪点,即各位老哥们很喜欢的老电影“胶片质感”,如下图。

谁还说“av1保留噪点细节不行”?
但是,明明加这个滤镜后视频观感更像原片,VMAF分数却降低了,比没加还低。
加入此滤镜后的 VMAF 评分已经不再适用了。
该滤镜更具体的说明在文章后半段“进行VMAF测试”部分再继续。
说到超分,最后再推荐群友“星忆”自制的超分二次元图片的软件:MoeSR。
比经典软件waifu2x好用,强推: https://github.com/TeamMoeAI/MoeSR
B站视频介绍:【MoeSR】耗时一个月自制+训练/优化的超分辨率软件演示_哔哩哔哩_bilibili

MoeSR
本文不会讲到什么:本文不会讲到什么:
本文不会讲到什么
本篇文章不会提及复杂滤镜参数、码流分析软件等等。本篇文章不会提及复杂滤镜参数、码流分析软件等等。
因为我在压缩大测试的时候没有加滤镜。
滤镜会大幅影响压缩速度,加“锐化”会降一半压缩速度,加“去块”再降一半速度。
两个滤镜同时加,就只有原本四分之一的速度了,100FPS变成25FPS…日常慎用。
FPS:每秒压缩多少帧。
各位可以使用我的压缩大测试脚本自行测试复杂滤镜参数。
码流分析软件,例如**“Elecard StreamEye”,**一般人用不到这么专业,不用在意。

Elecard StreamEye官网
不过“Elecard StreamEye”的官网里有好东西,有各种格式的免费测试片段可以下载:
官网免费下载页: https://www.elecard.com/videos
avs3、av1、h266、h265、h264…全都有,可以下载下来作为测试素材。
比如,下一个十几秒的“av1 1080p”视频和“av1 4k”视频。
用你的电脑和手机打开一下,就知道能否播放了。
本文也不会谈苹果的显卡编码本文也不会谈苹果的显卡编码“prores”
因为我没有mac。

“prores”虽然是苹果出的格式,但windows也可以编码,但只能软编无法硬编。
“prores”只是编码格式,“prores_kw”和“prores_aw”是它的软件编码器。

软件:FFmpegFreeUI。BV18jJLzxEKT
软件编码器只要是个cpu就可以使用,因为是纯算法,不绑定硬件型号。
所以windows可以用这两个软件编码器来压制prores格式。但是想用硬件编码(即用GPU编码)prores,只能用苹果M系列芯片的媒体引擎(Media Engine),这深度依赖macOS的驱动和macOS原生应用。
所以说windows没法用显卡编码prores格式,没法测试它的硬编画质如何。
想知道软件编码器和硬件编码器的详细区别,可以看文章后半段的千字说明。如此,prores硬编测不了。也不需要问prores软编效果如何。
因为,prores本身就是一个毫无压缩效率的格式,在本篇讲压缩,讲究减小视频体积的文章里,本就没必要去讨论。
格式的分钟可以有ProRes格式的3分钟MV可以有8GB~16GB

群友的图。可不兴多存。

工作中流程交付可以用prores,个人存储还是悠着点吧
小白看完本文大概能知道这两段参数什么意思:
ffmpeg -i 源视频.mp4 -c:v libx264 -preset medium -crf 24 -y 输出视频.mp4
以及:
ffmpeg -i 源视频.mp4 -c:v av1_nvenc -preset p1 -cq 34 -y 输出视频.mp4
这些是最基础、最简单、最直接的参数。
但从本篇文章里,你学不到这样的参数:

哇 哦
VCB动画番剧压制组的公开教程: https://guides.vcb-s.com/
无人不晓的VCB压制组,他们的教程讲了很多有价值的东西:
Rec.709标准,帧间编码与帧内编码、vs基础滤镜、隔行扫描与逐行扫描。
以及什么是 yuc 4:4:4,4:2:2,4:2:0,等等。
理论知识齐全,含金量很高。(以后给人科普视频知识就发这个网址罢)
不了解这些理论也不影响压缩,不是非要学完什么。可以当成“字典”,有需要就去查询。
但是上图中VCB的FFmpeg复杂调参,对于什么视频都压,超级一锅炖的个人用户来讲。
我们有2D和2.5D的番剧,有3D的电影,有渣画质手机摄像,有电脑录屏。
我们的视频内容复杂度各不相同,画风千奇百变,这样调参数有点…太麻烦了。
说白了,没有必要。不是所有视频都值得如此细调参数。说白了,没有必要。不是所有视频都值得如此细调参数。
2025年的svt-av1编码器已经非常智能了,不需要加入太多参数干预也可以得到高画质,ffmpeg内部都调好了。
VCB压片时会努力修复瑕疵,比起“普通人通用压缩”,这更多是“极限压片提升画质”的参数。
除了VCB,还可以看A@NAZOrip的教程,同样硬核:
iAvoe & NAZOrip 视频编码教程地图: https://iavoe.github.io/
NAZOrip 主页: https://nazorip.site/
还有70多岁老大爷写的FFmpeg使用手册:https://zhuanlan.zhihu.com/p/1917237125432214314
帧间与帧内编码
以下内容需要一些想象力,文字较多,不感兴趣可略过。
上文之所以说“prores”毫无压缩率,就是因为它是“帧内编码”的格式。
而 H264、H265、AV1 压缩率高是因为它们是“帧间编码”的格式。通俗解释:
所谓视频,就是把一张张照片排列起来,最后合成视频。
帧内编码:像“拍照存档”,每张照片完整保存,占用空间大,但无需消耗计算性能。
帧间编码:不会存每一张照片,只存关键照片,中间帧靠算法生成,节省空间但消耗计算性能。
比如,这里有5帧画面,帧内编码完全储存5帧。
帧间编码只存第1帧和第5帧,中间的三帧全是CPU参考第1帧和第5帧的画面信息再计算生成的。也就是说前帧与后帧之间存在编码算法的联系,这就叫做“帧间编码”。
“帧内编码”保留了所有帧,已经“满员”了,没有位置给算法生成中间帧,不需要两帧互相参考计算,前后帧之间没有联系。编码仅限定于单帧以内,所以叫“帧内编码”。什么叫“编码仅限定于单帧以内”?“编码”换个词就是“压缩”。
只有编码才能形成视频,只要“编码”就是“压缩”。
prores格式也不是真的“完整存照片”,也会压缩,不可能存一张“十几MB的jpg”在视频里,会把每张照片压成“x.xxMB的jpg”,最后把所有“照片”编码合成视频,便是“每秒xxMB(码率,也叫比特率)”完全不压缩的只有Raw格式视频,摄像机保留光线的所有原始数据,彻底不编码,每秒247MB,3分钟44GB。
当然,这里的Raw是工业摄影机上的真正的Raw,不是手机上的拍摄时就已经经过一层编码处理的“假Raw”。
prores格式3分钟有8GB(每秒44MB)~16GB(每秒88MB),相比raw格式已经是有所压缩了,只不过prores格式是一帧一帧彼此独立的压缩,“压缩仅限定于单帧以内”,就叫帧内编码/帧内压缩。但这种“帧内编码/帧内压缩”的体积,跟“帧间编码/帧间压缩”比还是太大了。
保留所有帧的算法,怎么样也无法和“只保留部分帧并生成中间帧”的算法比体积小。
当然,你可以头铁把“所有帧”都压得很小,体积小到比“生成中间帧”的算法更小。
可是这么做,画质得比帧间编码低多少啊?
“帧内编码”存5张画面,每张画质压到1,总体积5,够小了吧。
“帧间编码”只存2张画面,每张画质2.5,总体积5,再计算生成三张画质2.5的中间帧,不占用体积。
这怎么去较量体积呢?根本赢不了嘛。如h264可以做到1.5GB(每秒8MB),相比8GB的prores格式肉眼看不出画质损失。
不过,prores格式也不是彻底没有用处,“保留所有帧”有工作交接用途。
个人终端设备存储肯定还是用“帧间编码”的格式。“中间帧算法”越强,压缩率越高,生成的视频的体积也越小。
但代价是需要消耗的计算能力就越多,播放视频时的解码开销也越大。
这就是我上面给码流分析软件“Elecard StreamEye”官网的免费视频素材下载页的原因: https://www.elecard.com/videos
可以在各种设备上自行测试各种格式的解码开销。虽然他们的视频素材只有10多秒。
想了解更多详情原理,可以去VCB的教学网页细看。

哥们网上下载的prores格式本身就是“有损”了,想“真无损”去玩raw格式。
讲了帧间编码,大家应该知道压缩就是“如何更好的前后帧预测”了。
所以就有一件趣事:帧数更多的视频,压缩后更容易压出高画质。

可双击放大
还有一个国外的比较好的科普网页,不用翻墙,需要浏览器自带翻译功能:
https://ottverse.com/video-encoding/
或者用浏览器插件翻译,推荐**“沉浸式翻译”**,翻译后可保留英文和中文,双语对照。

正文:
以下是视频压缩正文,请准备好一边下载各种软件一边观看本文,有个互动的过程。
直勾勾看文字会很无聊,对着软件来看也比较容易理解各种压缩概念。
小丸工具箱——小丸工具箱——
Ⅰ、小丸工具箱
2016年~2018年我开始使用小丸工具箱,第一次压缩视频。
本节内容:小丸工具箱、“帧”、“处理速率”、preset速度预设

这是小丸工具箱,官网:https://maruko.appinn.me/
2016年,我对压缩视频一窍不通,看不懂压缩参数,也不知道什么是FFmpeg。
那个年头小丸工具箱非常出名,是小白最先接触到的软件。
小丸用默认设置压出来的视频乍一看没什么画质损失,但体积通常都能降低到原视频的50%以下,立竿见影,属于是年轻人的第一款压缩软件了。
小丸为什么能压这么好?下文格式工厂篇会介绍,恒定质量编码模式。小丸为什么能压这么好?下文格式工厂篇会介绍“CRF,恒定质量编码模式”。

学园偶像大师,藤田琴音
但是以2025年的眼光来看,小丸的压缩速度是非常慢的,用过的人都深有体会:
小丸不管压什么视频大都是40FPS甚至20FPS以下的速度,也就是差的时候**小丸每秒只压缩出来二十张画面…**视频个个都是24帧、30帧、60帧的,小丸的压缩时间赶上视频的播放时长了。
“FPS”:Frames 帧数 Per 每 Second 秒。10FPS就是每秒10张图。
同样的cpu压制,换别的软件至少一两百FPS。小丸压1小时,别的软件8分钟就压缩完了。
1.0x倍速和7.5x倍速,区别极大,小丸已经是时代的眼泪了。

15fps vs 113fps
噢,你说还不知道什么是帧?噢,你说还不知道什么是“帧”?…

这种程度的知识,大家都知道的吧
这也是因为人眼动态视力较弱。像猫眼动态视力强,平时看的是“100帧”的画面,说猫眼“敏锐”、猫擅长抓小昆虫。若人眼也这么强,视频就要做成100帧起步,那我们的硬盘和片方的制作经费就爆炸了…
生物的眼球严格来说不是像摄像机一样以“帧率”运作的,这里只是比喻猫要看100帧以上的视频才能感受到画面流畅。
猫的视网膜中,视杆细胞密度很高,约5倍于人类,且神经信号传递速度更快,使其动态视力远超人类。
相对的,这也使得画面在猫眼中的停留时间更短,猫的视觉暂留持续时间约 20ms,比人类约 40ms更短暂。
既然谈到帧数了,顺便说一下、、吧既然谈到帧数了,顺便说一下60hz、144hz、240hz吧

这种程度的知识,大家应该都知…
“常有的一个误解是,144hz只有打游戏才会用到。其实144hz是时刻能感受到区别的,日常拖资源管理器也能感觉鼠标光标比60hz更跟手”…
既然谈到显示器了,顺便说一下鼠标回报率吧既然谈到显示器了,顺便说一下鼠标回报率吧

BV1Ry421i7DB
“60hz显示器,鼠标500回报率到顶了,往上感受不出区别”…
“144hz显示器,1k和2k回报率到顶了,4k、8k鼠标没有用”…
不,这已经不是视频压缩了。

斯卡蒂
处理速率:“处理速率”:

小丸,out!

shana、命令行脚本、小丸
图上侧的shana,有显示**“处理速率4.5x”,这就是说“4.5倍速”。**
shana 和 FFmpeg命令行里都能看到“处理倍速”,小丸看不到,只能看到FPS。
“FPS”:还记得吗,每秒处理多少帧。
压缩耗时大概为“视频时长 / 处理倍速”。
这是按帧数算的,比如视频是24帧,压缩108FPS,就是“4.5x”倍速。
如果视频是60帧,压缩108FPS,就是“1.8x”倍速。
“倍速”是相对于视频帧率的“倍速”。
那么,压缩耗时自然就是视频播放时长除以 4.5 或 1.8 。
这让我们在压缩开始时就能预估还有多久处理完视频,不过这也无所谓。
成熟的压缩软件,比如shana和大菠萝都有显示“剩余的处理时间”。
一看就知道还有多久压缩结束,不用我们看倍速自己算时间。
这个概念理解一下就好,平时看速度直接看“FPS”就行。
以后交流讨论时看到别人说“15x倍速”、“3.7x倍速”能看得懂就可以了。
格式工厂既没有显示多少倍速,也不显示多少,更不显示剩余时间,哈哈沙壁。格式工厂既没有显示多少倍速,也不显示多少FPS,更不显示剩余时间,哈哈沙壁。
还有一个很重要的概念,“编码格式与编码器”。
这里只需要稍微知晓其分类即可,更详细的说明要花上几千字,小丸篇就不展开了。
不清楚编码格式暂时也没有关系,年的我就不知道,全部默认,该咋压咋压。不清楚编码格式暂时也没有关系,2016年的我就不知道,全部默认,该咋压咋压。

双击放大
preset 速度预设
小丸这么慢,大概是因为在年后就停止了更新。小丸这么慢,大概是因为在2016年后就停止了更新。
内置的ffmpeg版本太老太老太老了。
以及小丸用的“-preset 8”预设,即“-preset slower(缓慢)”的原因吧。
![]()
小丸
“-preset”是有关速度的预设,暂时不用深究。

光截图也许有些抽象,各位自己下载软件之后在里面切换着玩玩,会更感同身受。
ShanaEncoder官网下载: https://shana.pe.kr/shanaencoder_portable
简单来说,速度预设选越慢的,cpu就会花更久时间来压缩,以求得到更好的画质和更小的体积。
即牺牲速度换质量、换体积。
但光这么说很抽象,不同级别的速度预设,对画质和体积的影响具体有多大呢?
想深究,我的压缩大测试文章里有列出图表:
视频压缩大测试结果报告:CPU编码、显卡编码、H264、H265、AV1 - 知乎

测试结果的一部分
下文讲shana的时候也会再解释FFmpeg的速度预设。


可双击放大。

请激活windows。
蓝点网,MAS激活工具。: https://www.landiannews.com/download/107216.html

这是GIF
Pot 跨平台划词翻译和OCR识图 官网: https://pot-app.com/
OCR:光学字符识别。说白了就是把图片里的字扫出来复制。
小丸虽慢,索性2016年时没有大量压制视频的需求,数年时间也就这么过去了。
永别牢丸
题外话,附一张老图:

2025年还是没有任何动静,或许大抵应该确实是似了,永恒安息…

晚安,劳伦斯
格式工厂——格式工厂——
Ⅱ、格式工厂
2019年~2020年我开始使用格式工厂,第一次知道“CRF”。
本节内容:“视频轨道”、“容器格式”、LosslessCut、mpvnet-dw、CRF、FFmpeg、格式工厂、xnconvert
看完本节前半段,你将知道如何在视频处理(分割片段、混流)的各个方面平替掉格式工厂。
本节后半段,从“CRF”部分开始,才会讲解视频压缩的内容。
本节最后,会一边介绍最强图片压缩软件xnconvert,一边锐评格式工厂本体。

这是格式工厂,官网:http://www.pcgeshi.com/
时间推移,视频渐多,空间渐少。需要更快速的压制更多的视频…
2019年,我找到了比小丸更“高级”一些的格式工厂。
格式工厂和小丸一样,有很多视频压缩以外的功能,比如画面长宽裁剪、提取视频轨道和音频轨道、转视频格式、视频合并混流,但我90%时间还是用来压缩视频,这才是主要的。
现在看来这些视频压缩以外的功能,用别的软件如 shana 和 MKVtool、gMKVExtractGUI 都能做,要么更专业、要么UI更舒服、要么速度更快,总之都没有更新弹窗。
现在的我各种意义上我都不再需要格式工厂了,和小丸一样被平替了。
对2019年的我来说格式工厂就是一个新手大礼包。 因为当时只听说过这个。因为当时只听说过这个。
而现在我会推荐你更加好用的软件。
不过在介绍软件之前,还要讲讲**“视频轨道”、“容器格式”、“如何查看视频文件详细信息”**。
视频轨道是什么?“视频轨道”是什么?
刚才提到了“轨道”这个词语,如果你此前只看过mp4视频,字幕溶在视频画面中(叫“硬嵌字幕”),从来没有注意到“轨道”这个概念,那也很正常。
下载的影片到一定数量后,一定会接触到有多种字幕轨道的视频,我们继续看下去。
mp4视频也可以内封字幕轨道,但是多轨道视频一般用mkv,支持更多字幕格式。
简而言之,MKV视频可以封入四种轨道:
承载光影的视频轨、传递声浪的音频轨、封存文字的字幕轨、勾勒字形的字体轨。
除了某些汉化组心血来潮,偶尔把字体封进视频里,一般都没有字体轨(附件轨道)。
没有字体轨道也无所谓,上百个视频每个都塞一样的几MB字体文件,这可不怎么节约。

LosslessCut,可双击看大图
以下介绍FFmpeg的“-map参数”,用于选定轨道,萌新可暂时略过。
“-map 00”,第1个视频文件的第1个音频轨道
“-map 12”,第2个视频文件的第3个音频轨道
“-map 0:a”,第1个视频文件的所有音频轨道
0代表第1个,1代表第2个,2代表第3个,依此类推
0:v 视频轨;0:a 音频轨;0:s 字幕轨;0:t 附件轨(字体文件轨)
也可以把「轨道」称为「流」,0与1交织成的数据流,比如视频流、音频流…
你随时能在“MKV视频”这具容纳所有水流的“容器”里抽取出数据流,或者倒入新的数据流。
也就是增减音轨、字幕轨,而且不需要等待重新压缩,增减轨道的操作是可以瞬间完成的。
容器格式:“容器格式”:
“容器”很好理解,装东西的。
“视频格式”具体又分为“**容器格式”**和“**编码格式”**两种。
容器格式也可以说是封装格式,就是天天见到的视频文件拓展名:mp4、mkv、mov。
编码格式是“视频流”的格式,而不是视频的文件格式,有H.264、H.265、AV1等。
之所以不把编码格式直接当成容器格式,来一个“视频.h264”文件,是因为视频可以拥有多种轨道:视频.h264 + 音频.mp3 + 字幕.srt。只用.h264当拓展名不能代表其中的全部内容。
这不像音频格式一样flac就是flac,mp3就是mp3,直接以音频编码格式作为音频文件拓展名。
视频就需要另外的封装格式,就有了“视频.mp4”。
其实最关键的原因还是,设计H264编码标准的时候就没有让它去管音频和字幕的封装规则,只让其专心负责视频压缩,所以并没有封装的功能,无法兼职“容器格式”。
你有没有过这样的经历,两份MP4视频,一份能导入PR,另一份却无法导入,怎么回事呢?

沙壁Pr
现在你知道了,容器格式只是容器格式,不代表内部的编码格式是一样的。
查看发现,一份视频是H264(AVC),另一份视频是AV1,后者不能导入PR。
恍然大悟,全都明白了。
PR:Adobe Premiere Pro。 H264格式:2003年推出。 AV1格式:2020年推出
再然后发现,达芬奇甚至剪映都能导入AV1格式的视频,唯独这2025年最新版PR,依然无法导入AV1视频…还是卸载罢。

摆烂的adobe
认真说,PR安装第三方插件“Autokroma Influx”就可以导入AV1了,嗯…
怎么查看视频信息?怎么查看视频信息?
唯一指定软件 MediaInfo :https://mediaarea.net/zh-CN/MediaInfo/Download/Windows
这是看视频信息最方便的软件,字幕组御用工具。软件30MB,早安装早开心。

双击放大
或者,略微麻烦一些:
任意视频压缩软件:小丸、格式工厂、shana、handbrake。
任意视频播放软件:potplay、mpvnet…
任意视频处理工具:mkvtools、LosslessCut…
太多了,只要是个视频相关软件就能看视频信息吧。
就不一一截图了,应该不会有人找不到选项在哪罢。就不一一截图了,应该不会有人找不到选项在哪罢。
辅助性的视频处理工具,用什么软件比较好?辅助性的视频处理工具,用什么软件比较好?
辅助性的视频处理工具:指不涉及视频编码压缩的,纯粹的转封装格式、抽取轨道流、分割视频片段的轻量化软件。
因为不能压缩视频,所以只能是辅助用的视频工具。但也因为不会重新编码,速度很快,瞬间即可完成任务。
抽流、分段与LosslessCut:
什么情况要抽取“流”?能否再仔细说说“轨道”的作用?
可以想象这样一种情况:
某日,下载了国外ATX源的【恋爱flops】高清无码番剧,但是没有简中字幕,是生肉源。
ATX源:日本AT-X电视台放出的无圣光、无删减版TV动画。
然后下载了国内汉化组的“中日双语”熟肉版本,但是打了马赛克,有码不行。
一个无码但没字幕,看不懂;一个有字幕但打码,看个嘚。
想将汉化组的字幕抽取出来,合到ATX源的无码版本里看,要无码画面+简中字幕,怎么做呢?
当然是重新下别的汉化组的了(当然是重新下别的汉化组的了(

已经是2022年的番剧了吗… 动漫花园下载:【喵萌奶茶屋】[恋爱FLOPS/LOVE FLOPS/Renai Flops][01-12][BDRip][1080p][简日双语]_动漫花园磁力链接/电驴/迅雷下载
“抽流”和“封装”:
抽流:抽取视频流、音频流、字幕流,用 gMKVExtractGUI
封装:将抽出来的视频、音频、字幕封装到一个视频文件里,用 MKVToolNix
这是公认的两个老牌软件。
VCB教程页:
https://guides.vcb-s.com/basic-guide-03#4-mkv%E7%9A%84%E6%8A%BD%E6%B5%81

可点击放大
但其实,抽取轨道、封装混流、分割片段、转格式这四件事,可以用年轻软件:LosslessCut,全都完成,界面还挺现代的。
分割视频也和shana、mkvtools一样都可以复制流,不用重新编码,瞬间完成,基操了。
某种意义上,UI还比老牌软件更方便一些。

LosslessCut 官方链接:https://github.com/mifi/lossless-cut
如果速度慢,请自备梯子。并且知晓github的正确下载方式,否则还是随便百度下载吧。
如果你只是要合并B站视频…建议以后用 bilibili唧唧 下载,自动转为MP4,再也不需要你手动合并视频文件和音频文件了:唧唧-哔哩哔哩唧唧-bilibili视频|弹幕在线下载

bilibili-JiJi
bilibili唧唧 的历史堪比小丸,2016、2017年就在用了,相当老牌,老人应该都知道。
充电视频:没有任何软件能在你的账号充电之前下载完整的充电视频,因为B站端根本没把完整片段放出来,不管是猫抓还是BBdown,还是bilibili唧唧,都没有办法,充了电就能下载完整的了。
手头拮据的可以去找网盘资源,实在找不到的,闲鱼3块钱一堆,这就不多说了。
还有个小众需求:放大音频音量或者减小音频音量。
这涉及到重新编码,LosslessCut做不了,需要使用格式工厂和shana这类“重型软件”。
FFmpeg参数搜响度标准化,很容易解决。
上次需要这个功能是高中时期周六晚操场放电影,需要调大视频音量倍。上次需要这个功能是高中时期周六晚操场放电影,需要调大视频音量3倍。
画面裁剪
这里的画面裁剪指“1920x1080裁到1000x700”这类操作,不是指两段视频拼接。
画面裁剪(改变视频长宽尺寸),有一些门道,如下图:

LosslessCut除了无法进行画面裁剪,无法放大减小音量以外,算是比较万能的了。
以上便是在辅助性的视频处理功能上代替格式工厂的办法。以上便是在辅助性的视频处理功能上代替格式工厂的办法。
视频轨道怎么看?
打开你的potplay,按快捷键,“A”是音频轨道,“L”是字幕轨道。

点击一下即可切换着看。
什么?还在用windows自带视频播放器?还没有potplay?速速百度下载。

这就是potplay
看到这大伙也许会微微一笑:“potplay谁不知道啊,废话什么呢!”
我还真见过两三个大二大三学生,没有用过什么视频软件,还在用windows自带的播放器,这还是得提及一下的…

但是至少会解压缩包
mpvnet-dw 实时超分番剧
既然讲到了播放器,顺便推荐一个…
看番剧,能够实时“超分辨率”的播放器: mpv.net-dw

可双击放大
下载地址:
https://bbs.acgrip.com/forum.php?mod=viewthread&tid=10324&highlight=mpv.ne

双击放大能看出来区别吗?不太看得出也正常,这是最低配的超分方案
下面介绍三种超分组合,需求的电脑显卡配置由低到高:
可通过以下两个链接查看显卡排行:
第一种 低配超分方案:anime4k mode
适用GTX960以上显卡,即timespy分数大概在2000以上。
可能保守了,基本是个电脑就能跑,或许多分的也行?可能保守了,基本是个电脑就能跑,或许timespy1200多分的750ti也行?
效果如上图展示的“A4k简单超分后画面”,一般,聊胜于无。

第二种 中配超分方案:2x-AnimeJaNai V2 + A4K-DTDD
适用4060以上显卡,即timespy分数大概在10000以上。
不过在分左右的比如,应该也可以跑,吗?不过timespy在7000分左右的比如2060,应该也可以跑,吗?

双击放大
第三种 高配超分方案:HFA2kCompact + A4K-DTDD
适用3090、4070s以上显卡,即timespy分数20000以上

摇曳露营

高配置方案是真正的绝活,很吃性能,3090只是入门,谁会全程1倍速看番阿,最好准备4070tis以上显卡。
中配置方案也已经有明显的清晰度提升,选中配方案没有问题,不会差高配方案多少。90%的情况都可以选择中配置方案。
低配置方案最多只是保底选择,可以不管。
另外,这软件只能对二次元超分,对三次元没有什么效果。
以及,如果你额外喜欢动画电影中的“胶片质感/胶片噪点”,喜欢老电影的感觉。
那么 mpvnet 超分会将噪点抹除掉,这就不太适合这种场景了。
为什么会这样?道理很简单,二次元就是一堆色块嘛,超分平涂过去,噪点就没了。

我选择左边
即使不算超分的功能,mpvnet作为一款播放器也是优秀的,不比potplay差。
甚至播放HDR视频还比potplay更好一些。
详情可以到本文目录,拉到最底下看“杂谈”部分的“HDR、SDR、杜比视界”。
mpvnet完全有资格常驻在你的电脑中。
最后再贴下载地址:
https://bbs.acgrip.com/forum.php?mod=viewthread&tid=10324&highlight=mpv.ne
,讲解结束mpv.net-dw,讲解结束…
关于图片处理:关于图片处理:
讲完了视频处理,顺便分享好用的图片处理软件罢…
合长图 FastStone Capture:

可以双击放大
FastStone Capture,官网:https://www.faststone.org/
免费下载的软件,官网需要梯子。
建议随便百度一个比如在吾爱破解下载,不要在XXX中文网交钱。
国人软件pixpin 官网:https://pixpin.cn/
pixpin名气大得多。 大伙应该都有。大伙应该都有。
至于移动端合并长图的软件…

不知道安卓端有没有更好的?
不过,这些都不是压缩图片的软件。
真对标格式工厂,能取代其压缩图片的功能的,是本节最后介绍的xnconvert
如果不想让图片压缩后颜色变淡,就用xnconvert,out牢格!
不知道额外介绍这么多软件,大家会不会觉得麻烦。
我曾在评论区看到新手说:“这几天用了好多软件还是格式工厂好用”…
“装三四个软件不如装一个格式工厂”…
“shana交互不如格式工厂好”…
![]()
祝你好运
【重点】CRF
上方是本节前半段,讲解了如何在分段、抽流等功能上代替格式工厂。
下方是本节后半段,讲解视频压缩常识。
2019年,我初次使用格式工厂,打开压缩设置就发现一个词:“CRF”。
这个词在小丸工具箱里也见过。

这是…
如果您没有跳转目录,从开头一直看下来,也会见到前文屡屡提及这个重要词语:
恒定画质编码模式“CRF 恒定画质编码模式”
简单解释:

arctime(字幕编辑软件)对CRF含义的解释说明
arctime的创始人雷天音有点老瓜,劣迹斑斑,不推荐大家用这个字幕软件:https://www.zhihu.com/question/330517567
看完这瓜少说30分钟,大伙懒得看也行,总结就是网暴、骚扰、诋毁付费用户。
编辑字幕推荐用Aegisub,我就在用:Aegisub - Aegisub 高级字幕编辑器
想给字幕打轴可以用达芬奇的“时间线——从音频创建字幕”,本地GPU加速,不需要联网,支持多国语言甚至粤语识别。
或者破解会员版的剪映,高版本剪映的生成字幕功能需要会员。
达芬奇和剪映破解,可以用B站虎哥的便携包:https://www.yuque.com/inmtyc/share/davinci_resolve_studio#z6MJG
PS:夸克网盘会员 3.8元就能搞到一个月
如上图,CRF取值范围0~51,接近0好又大,接近51糊又小。

如果图片模糊 可以双击放大

可双击放大
一般不会往上调到15,这个时候的视频体积大概会比原视频都大,那为何来压缩呢。
而往下调到35、40,视频又太糊了不能看。
正常人类能选的区间其实也就是16~30这样。
调24可以兼顾画质和体积:既看不出来什么画质损失,体积又能小50%。
当然,也有人习惯选22、23、23.5,都可以,都是24左右。
有多看不出来画质损失?如下图:

可双击放大
“还有这种事情?”如果难以想象,你可以动手压制几个视频,会立刻感同身受。
这是截图盯着看的情况,动起来的时候左边 CRF10 和中间 CRF24 更无区别。
就像我在本文开头的VMAF部分说过的话:
视频毕竟是动帧,不是静帧,很多时候你暂停截图看到的“瑕疵”,动起来并没有什么大问题。
可能在实际画面中只有0.1s,一瞬间就过去,感受不到异样。截了图一直揪着不放反倒很费神。
如果你是直接从目录跳转来的,没有看过上面的部分,那么现在可以接触一些VMAF的概念了。

可双击放大
shana篇最后再细讲如何测试VMAF。
这才算是看懂了小丸的默认参数为什么是“-CRF 23.5”。

想尽量在不损失画质的情况下降低视频体积,最简单的就是设置“CRF 24”。
但由于我们只是设置数字,优先确定画质的级别,而不能亲手设定码率。
所以我们使用CRF的时候是不能知道压出来后多少码率的。
但我们其实也不需要知道,不需要设什么3000kbps、6000kbps码率,什么多的都不用填。
他自动算码率就完了,是多少就是多少,比我们人手动设置的码率好得多。
就是一个直到今天也依然在用的万金油压缩模式。“CRF”就是一个直到今天也依然在用的万金油压缩模式。
更具体的原理,下面的图解释得很清楚:

可双击放大
不能亲自设定码率大小,会有什么问题吗?“CRF”不能亲自设定码率大小,会有什么问题吗?
B站2020年有规定“6000kbps码率以下的视频不会二次压缩”。

2025年:[补档]影视飓风.mp4
6000kb = 6Mb = 0.75MB,1秒0.75MB
1分钟视频45MB,10分钟视频450MB,30分钟视频1.35GB。
只要在这之下,就不会被B站二次压缩。(没除1024,算得不严谨,差不多就是这样)
那个时候还会用到ABR这种自定义码率压缩的模式,设个6000kbps来压缩。
但是现在B站上传视频也是通通二压了。
即不管上传多少码率,B站都会帮你再压缩一遍。
那就不需要为了保证“平台不二压”,而选择“自定义码率”的压缩模式了。
所以有关“自定义码率”的名词如ABR、2pass等等,本篇文章也不会提及。

这是自定义码率模式
为什么不用ABR?
这可以想象…我们个人用户有很多很杂的视频。
有30个分辨率、内容复杂度都各不相同的视频,不可能单独调30次设置,每个视频试出最合适的它的码率再去压缩吧?
谁知道是设 2263kbps,还是设 3825kbps 最好呢?不如使用万金油的CRF 24。
PS:以上说用了CRF就不能再自定义码率,指的是 -crf 和 -b:v 参数冲突。
如果你不是要用 -b:v 固定码率,而只是想在CRF自动计算码率的同时限制一下它的码率最大值、码率最小值。
是可以加 -maxrate(最大比特率) 和 -minrate(最小比特率) 这两个参数的。

举例:
-c:v libx264 -preset medium -crf 24 -maxrate 4000k -bufsize 8000k
-c:v h264_nvenc -preset p4 -cq 30 -maxrate 4000k -bufsize 8000k
......
比如同时设置“CRF 24”和“最大码率4000k”。
在撞到“墙”时会自动降低CRF值,以保持码率在 4000k 以下。
这毫无疑问会影响最终的画面质量。一般是不设置的,毕竟都CRF了。
CRF22~28,怎么选?举例:
收藏级影片,更倾向保留画质,选CRF22。(也有人选CRF16)

推荐第三方资源管理器:onecommander
普通压缩,不知道选什么,选CRF24。
**更倾向减少体积,选CRF28。**比如几百小时未剪辑的游戏录屏,录完后几乎不会打开看。与其留着高画质150G在硬盘里,不如存个中画质100多G。
当然,以上也可以选20 21、选29 30,随意。

业内人士的随笔文,哲!

小刻
最重要的概念“CRF”讲完了。
下一个是第二个重要的概念。
【重点】FFmpeg
:FFmpeg:
“CRF”为什么这么好用,格式工厂和小丸为什么都有“CRF”的选项?

大家都有
“CRF”压缩模式是著名的命令行工具FFmpeg的预设之一。
准确来说是FFmpeg里的“libx264”和其他cpu编码库的预设,gpu编码库没有“CRF”。
就像本文开头有提到过的。
市面上的压缩软件实际上都是内置了一版FFmpeg在内的,无一例外。
记不住名字?记成 “ FF + mpeg ” ,这就是“FFmpeg” 。
MPEG:Moving Pictures Experts Group,运动图像压缩算法国际标准。
图像是一张图,运动图像是连续的好多张图,压缩算法是把这么多的图合成视频。1992年诞生了MPEG-1,1999年诞生了MPEG-4,就是今天的mp4。
MPEG-4是一个大标准,由其下的27个小标准共同组成。
即有part1~part27,27个部分,分别制定视频、音频、字幕、字体等各方面的标准。MPEG-4 part2,制定了MPEG4编码格式,这是早期格式,已被H.264代替。
MPEG-4 part10,制定了H.264编码格式。
MPEG-4 part12,制定了MP4容器封装格式。这就是MPEG在历史上的重要性。
FFmpeg全名:Fast Forward MPEG,简单理解为:“又快又好的MPEG”。
FFmpeg是github的一个非常庞大的开源项目:
https://github.com/FFmpeg/FFmpeg
有很多人参与,有很多关于视频和音频处理的“库”,老祖宗了。
做视频处理软件的或大或小都逃不开ffmpeg这个东西。
本体的ffmpeg.exe只有100~140MB左右。

可以认为人们给ffmpeg做了一个好看的界面。
所以不同的软件比如小丸、格式工厂、ShanaEncoder、handbrake、arctime、obs,还有其他的路边不知名小软件,都能看到相同的“CRF”功能选项,他们内部都使用了ffmpeg。
只要在软件里找到“CRF”,只要设的数值一样,压缩出来的结果就是一模一样。
我可以想象你第一次在不同的压缩软件设定一样的CRF24,发现压出来的视频画面和文件体积都差不多的时候的感觉。
虽然不是所有软件都能及时更新最新版本的FFmpeg,本身性能就有差距。
不同软件默认的preset预设也不同,不是真的完全一样,但都可以手动调到一样就是了。
没有CRF说明那个压缩软件不彳亍,作者居然连CRF都不知道添加。
基本不可能是它“不用ffmpeg,用别的东西处理视频,所以没有CRF”这种情况。
除非它是付费商业软件,不用/用不了FFmpeg也很正常。

本文开头也提到过
稍等,FFmpeg这么强大,为什么要用套皮软件。而不直接去官网下载使用FFmpeg呢?
什么叫“CMD命令行工具”?
你会从FFmpeg官网跳到win版本的下载页面: https://www.gyan.dev/ffmpeg/builds/


FFmpeg下载指南,双击放大
点击下载 “ffmpeg-git-full.7z”。
解压后发现只有一些文件夹,意味不明,但深处有一个文件叫“ffmpeg.exe”。

师傅你是做什么工作的?
这些文件里,只用FFmpeg.exe就足够了,其他文件删掉也不影响压缩。
但是点开exe什么反应都没有,好像它不是一个“软件”,只是一个“文件”…
它没有UI界面呀!
搜教程,说得设置环境变量,然后使用CMD输入一个最基础的ffmpeg命令:
“ffmpeg -i 输入视频.mp4 -y 输出视频.mp4”…
哦!这就是命令行工具吗,这就是没有图形界面的“软件”吗…
这可如何使用呢!难道哥们每次使用ffmpeg都得打开CMD,定位到当前文件夹。
然后每压缩一个视频就得手动输入一次名称?有100个视频我复制粘贴100次?
这不是人类干的事啊,肯定有个脚本吧。
但哥们不会编程,这光秃秃的命令行俺们小白该怎么用呢?
久仰大名,但不会用,啊,只能先用更直白的压缩软件去了。
这就是小丸工具箱、格式工厂、ShanaEncoder、HandBrake的由来。 话说三回啊三回话说三回啊三回
本文最后会做一个,直接将视频拖拽到bat文件上便能调用ffmpeg的批处理脚本。
它能保留源视频修改日期。这是绝大部分压缩软件都不在意,但我个人非常在意的事情。
这个功能并不难做,如同举手之劳。主要是资源管理器里按日期排序的人会需要用到。
软件作者本人没有这个需求自然不会特别去做。那就由我们自己实现吧。

2023年代码更少的普通脚本,和2024年代码更多的新版进度栏脚本

2025年的代码巨多的压缩大测试脚本
“bro,脚本输参数这么抽象,连个UI都没有,我为什么要用脚本,而不是打开某某软件啊?”
还真没必要用批处理脚本。还真没必要用批处理脚本。
用 ShanaEncoder 和 FFmpegFreeUI 可以实现除了“保留源文件修改日期”以外的所有功能。学习阶段使用软件是最好的,谁都是先从软件学过来的。
批处理脚本并不是什么非常必要的存在。
除非你想要一键进行编码压缩大测试除非你想要一键进行编码压缩大测试…
格式工厂与:格式工厂与xnconvert:
锐评格式工厂
说回2019年,小丸工具箱的速度难堪其用。
格式工厂虽然不显示压缩速度是多少fps,但肉眼可见的几分钟压缩完毕。
小丸工具箱20FPS时,格式工厂压同个视频,体感有一两百fps,快得多。
废话,小丸默认slower速度预设,格式工厂默认medium速度预设,能不快点吗。
且格式工厂几乎是唯一的压缩完成后保留源文件日期的软件(我不知道第二个)。
使得之后两年时间里即使我转投了shana,偶尔要保留源文件日期还会使用格式工厂。
直到2023年我自制的非常原始的ffmpeg批处理脚本出现,也能够保留源视频日期,才彻底平替掉格式工厂。
早该平替了!早该平替了!
格式工厂毛病太多了,用了两三年,积怨已久。
比如:
1、一次性拖入大量视频,任务列表过多,部分视频便无法压缩。
压三四十个视频的时候格式工厂经常会出现感叹号,要下一次任务或者再点击一次“开始”才能压缩;
2、小概率但还是会有的软件崩溃和闪退;
3、比例不同的视频,如横屏和竖屏的视频一起压缩时,有概率出现竖屏视频被拉宽,或者横屏视频被拉窄的情况。

我只遇到过五次,在那之后没有遇到过。
不是因为新版本修好了,是因为我故意挑出来分批压缩,没有放在一起压缩过了。
如果你没有遇到过也很正常,有事就是有事,没有就是没有,很抽象;
4、已经是最新版了,还是每次压缩任务完成后就跳一个更新弹窗出来。
你不知道你已经是最新版了吗你就更?不再提示到底是不是不再提示啊?你不知道你已经是最新版了吗你就更?“不再提示”到底是不是“不再提示”啊?

What can i say?FormatFactory,out!
想象一下,不是启动软件有更新弹窗,而是压完一次视频就弹窗一次。
你已更新到最新版,依然弹窗,点击“不再提示”没有作用,依然弹窗…

这是2023年的5.14版本的事情。2024年的5.17版本没有任务结束后的更新弹窗了。
但是,也不是第一次时而有弹窗,时而没有弹窗了,直接out!
讲到这,还没提挖矿工厂的事情。讲到这,还没提“挖矿工厂”的事情。

视频压缩软件,要用户的ip地址,做什么阿?
xnconvert
那么,现在不再用格式工厂压制视频,但压缩图片有什么代替吗?
隆重介绍: xnconvert
格式工厂在压完图片之后得一个个手动挑选原图删除。
xnconvert能勾选“在压缩完成后删除原图片”,也同样能保留原图片日期。
**甚至能保留原图片色彩饱和度:**格式工厂在压某些图片的时候是会更“灰”一点的。
比如粉色没那么粉了,没那么艳了,我曾以为是压缩必定会有的损失。直到用了xnconvert,勾选了**“保留颜色配置”**,无论压得多小都不会变灰变淡,颜色一模一样(下图)…

伟大

如果是xnconvert,压出来会跟左边原图一模一样
最后还有一个比较新的概念:JPEG-LI。
2024年谷歌新推出不久,也是jpg格式,但编码方式更高级。
压缩率等于webp(能比jpg小一半体积),兼容性等于jpg,是目前最好用的图片格式。
简单来说,同一张图限定到150kb体积,JPEG-LI没吃饱,画质不如webp,给个300kb 500kb就吃饱了。
更多可看:图片压缩小测试:HEIC、AVIF、JPEG-LI、JPG、WEBP - 知乎
而最新的xnconvert就可以压缩JPEG-LI格式。
xnconvert还有贴二维码、全图打马赛克等功能,我个人不太用得着,有pixpin了。
知乎上对jpegli格式的简单介绍:

塔达林仪式胜负已分,我才是真正的高阶领主!塔达林仪式胜负已分,我才是真正的高阶领主!
xnconvert官网下载: https://www.xnview.com/en/xnconvert/
对比一看,格式工厂简直是一坨矢阿!!对比一看,格式工厂简直是一坨矢阿!!
这就是我把xnconvert放最后介绍的原因。

S。
——ShanaEncoder——
Ⅲ、ShanaEncoder
2021年~2023年我开始使用ShanaEncoder,第一次尝试显卡加速:
本节内容:RSS订阅、编码格式与编码器、“-cq”、“-global_quality”、“-qp_i -qp_p”、ShanaEncoder、preset、VMAF
看完本节内容,你将知道显卡压制的一切…

ShanaEncoder官网: https://shana.pe.kr/shanaencoder_portable
韩国网站,准备梯子。或者任意百度下载

ShanaEncoder,即 Shana + Encoder
encode 编码,decode 解码,code 码…
刹那编码器,记住“shana”,名字就好记了。
shana能输入自定义参数,完成所有的FFmpeg压缩操作。 应该是所有罢。应该是所有罢。
小白可以用shana提供的选项来压缩,即F6打开“快速设置面板”。
高手可以F8打开“参数面板”,直接输入FFmpeg参数。如上图。
shana的选项很齐全,可以很好的学到各种功能对应的ffmpeg参数具体代码。
再进阶一些,可以使用另一个软件 FFmpegFreeUI: https://github.com/Lake1059/FFmpegFreeUI
作者称其为3FUI,该软件的选项比shana更加齐全,能知道更多功能对应的FFmpeg参数。
当然,生词术语也很多,这更需要你自己有一定的压缩知识。
《崛起》《shana7.4 崛起》
2025年shana7.4版本重大更新:
在2024年9月,可以说Shana比HandBrake弱两个小指头。
因为那时的 shana6.0.1.7 内置的甚至是一年多前2023年8月的FFmpeg。
彼时大菠萝内置的是最新版ffmpeg,可以压svtav1。而shana的av1压制功能则如残废。

老版本只能用“aom-av1”
2025年更新了shana7.0版本,shana终于也用上了最新版本的ffmpeg,终于也有了完整的av1编码器。已经不弱于handbrake了。
这也是压缩软件的一个侧面…用户能自己更新FFmpeg版本的压缩软件,理论拥有最强的压缩性能。比如3FUI。
也终于修好了从2021年shana5.0时代到2024年shana6.0时代都一直存在的。
GPU编码速度莫名奇妙比正常情况(命令行脚本和大菠萝)慢50~100fps的诡异问题。
不知道误导了多少人,让萌新以为显卡编码就这破样。
但仍有遗憾,shana7.4依然不能保留源文件日期,和几年前一样。
迫使我2023年自制批处理脚本,来解决这个需求…(详见本文目录,格式工厂篇的“FFmpeg”部分)
PS:此处的“日期”不是指视频内部的“元数据”,不是“视频日期”或者“时间戳”。
而是windows右键文件属性的“创建日期、修改日期、访问日期”。
仅在FFmpeg里添加命令参数(如-map_metadata)是无法保留这些信息的。
因为FFmpeg主要聚焦于媒体内容的编解码功能。
不能保留或修改操作系统层面上的文件属性。
所以,必须在视频文件压缩完成后添加其他的代码来保留。
比如,我的批处理脚本中调用了powershell,将源文件的windows日期属性复制到压缩后的文件上,以解决这个需求。只是多加了三行代码,并不复杂。
格式工厂也用了自己的办法来保留源文件日期。
而shana、handbrake的开发者也许不太在意这方面的需求,没有特意去做。
为什么要保留文件的“修改日期”?
为了在图库里按时间顺序排布所有的生活视频和照片。不怕文件改名。

大家都有图库的,对吧?
顺便推荐比 SpaceSniffer 更好用的硬盘空间占用查看工具:wiztree
https://diskanalyzer.com/?ref=wiztree
速度极快,5秒可加载完一块硬盘,比 SpaceSniffer 强很多。
有文件夹列表模式和SpaceSniffer的“饼图”查看模式,完全的上位代替。

全局搜索软件everything也是类似的方案,速度比listary快很多
回到故事主线,话说年回到故事主线,话说2021年…
2021年前后乃至更早的时间段,阿B的番剧区迎来大变革:
番剧审鹤阉割、拖四个月当期番剧都播完了才引进,天变了。
老登都知道的年月传奇番剧《无职转生》事件。老登都知道的2021年1月传奇番剧《无职转生》事件。
大伙纷纷转头磁力链下载,回到儿时的时代…
**什么是磁力链/BT种子?**说小白能听懂的就是 迅雷能下载的。
聪明的会用115和pikpak网盘。

用qb的RSS订阅每周可以自动下载 nyaa 和 mikan 上的番剧。
人在家中坐,新番自动下到你的硬盘里。
其他磁力链软件也有RSS订阅功能,比如比特彗星、xdown等等。
现在有了好多番剧,怎么更好更快的压缩呢?

大家都知道的老牌番剧网站蜜柑计划,需要梯子,https://mikanani.me/

还有人不会用RSS订阅下载番剧吗?b站随意搜教程
其实现在直接下字幕组压好的就行了,小番剧集可能就、。其实现在直接下字幕组压好的就行了,小番剧12集可能就5GB、10GB。
这么多视频,cpu压制太慢了,即使有100FPS也经常一压几小时,不够快。
cpu占用率100%,显卡占用率0%,电脑被锁住一样动弹不得,太难受了。
**到底如何才能进行显卡压制呢?**下面马上就来讲讲…“编码器”的概念吧。

分得清cpu编码器和gpu编码器,才能学会显卡压制阿
编码格式与编码器编码格式与编码器
以下是编码格式科普:

可双击放大
从1992年的MJPEG,到2020年的H.266,有十几种编码格式诞生。
现在只需要记住H.264(AVC),H.265(HEVC),AV1 这三种格式。
PS:如果您是直接跳转目录来到这里,并且不知晓容器格式(mp4)和编码格式(h264)的区别,请点目录跳到“格式工厂篇”的开头补充知识。
如果您早就认识这些编码器了,可以直接跳到目录下面的“CQ/QP”部分。
本段摘要:

本段摘要
编码器一览:
不同编码格式下属的编码器有:
**H264(AVC):**libx264、libx264rgb、h264_amf、h264_mf、h264_nvenc、h264_qsv等等。
其中 libx264 也就是我们平时称呼的 x264,是最好的。**H265(HEVC):**libx265、hevc_amf、hevc_nvenc、hevc_qsv…hevc_vulkan等等。
其中 libx265 也就是平时称呼的 x265,是最好的。**AV1:**libsvtav1、libaom-av1、librav1e、、av1_nvenc、av1_qsv、av1_amf、av1_vaapi。
其中 libsvtav1 也就是平时称呼的 svt-av1,或者叫 svtav1,是最好的。**H266(VVC):**libvvenc。vvenc之于H266,相当于x265之于H265。除非…未来两年有一个“libx266”出来代替libvvenc。
带有“lib”前缀的都是用CPU的,即软件编码器,比如“libx264”
不带“lib”前缀的都是用GPU的,即硬件编码器,比如“h264_qsv”

可双击放大。ffmpeg -codecs
编码器全称主要用于手动输入FFmpeg参数,比如“-c:v libx264”。
在软件里可能只显示“H264(x264)”,总之知道意思一样就行。
1、“编码格式”和“编码器”是什么关系?
编码格式(H.264)只是规定了一个编码标准,它本身并不能编码。编码器(libx264)才是执行者。
以H.264编码标准,对光的原始信息(原始Raw格式)重新排布、编码、计算,把人眼感知不到的信息去掉(即去除冗余信息),减小体积,形成的就是H.264格式视频。
以H.265编码标准来排布信息,形成的就是H.265格式视频。
一般而言,更新的编码标准有更强的编码算法,更高的视频压缩率(H265>H264)。
具体来说,可分为帧内编码(prores)和帧间编码(H264、H265、AV1)两大类。
这部分科普可以看文章开头的“本文不会讲到什么”部分。
“标准”不能自己编码自己,需要编码器来按这个标准排布画面信息,才能“实现”视频。
用cpu实现的叫软件编码器(libx264),用gpu实现的叫硬件编码器(h264_nvenc)。
压缩软件那么多选项,其实就是选编码器,选硬件编码器才能够用显卡来编码。
如果就不编码,就不“重新排布信息 减小视频体积”,会怎么样?

影视飓风忘了哪一期视频的截图
下面会讲两段字数不少的故事,如果不感兴趣可以跳过到“2、软件编码器”的部分。
没有好的编码器等于编码格式死,有好的编码器等于编码格式活。没有好的编码器等于编码格式死,有好的编码器等于编码格式活。
实际上,**H264格式在2003年就已经推出了,**但早年的视频仍然是RMVB格式用得多。
2003~2010年是RMVB格式的巅峰时期,H264格式一直没有得到重用。
因为它当时的编码器太拉跨了,打不过RMVB。比如 MainConcept、T264、Elecard…这些完全没听过的,被x264淘汰的编码器。
x264编码器于2003年推出,经过多年的更新和开发,一点点进步。而RMVB的编码器十年来都没有什么技术提升,“坐吃山空”。
终于,x264编码器赢得2010年的MSU世界编码器大赛的三连冠,全面超越RMVB,各大媒体平台纷纷转为使用H264。
2013年,人人影视宣布放弃RMVB,全面倒向H264和MP4。今日已经没有RMVB的一席之地了。
H265在2013年推出,直接将它的御用编码器命名为x265。
AV1于2018年确立标准(对应的编码器刚诞生,效率很慢),2020年正式进入大众视野(能高效大批量编码,出现在视频平台),2022~2024年慢慢普及开。
AV1的御用CPU编码器:libsvtav1,于2022年4月发布,同年22年9月还有40系N卡发布,首次支持av1_nvenc编码,这才大大推动av1破局。
这就是编码格式和编码器之间的关系。

老图
、的是什么意思?x264、x265的“x”是什么意思?
这有关开头略微提过的 MPEG4、DviX、XivD 1998年~2002年的往事。
完整版故事可以搜百度,这里随便贴个链接:
开源MPEG-4编码器 XviD简介_xvid mpeg codec-CSDN博客
简单来说:
1998年,开源的“DviX”编码器干掉了闭源的微软“MS MPEG4”编码器,成为英雄。
开源社区其乐融融,两年来为开源的“DviX”贡献了不少代码。
2001年,“DviX”创始人突然闭源收费,成为恶龙。
这才发现,这些骗子从一开始就留了一手,骗开源社区贡献技术让自己发展,时机成熟再钻漏洞突然闭源,企图一网打尽,他们根本不是什么英雄。
2002年,被背叛的开源社区空前愤怒,推出了“XivD”编码器,就是把DviX的名字倒过来干,针锋相对,抵制DviX闭源。
多磨激烈的豆蒸!之后是开源的胜利,DviX持续闭源,市场萎缩,逐渐被边缘化。
XivD功成身退,继任者是2003年的x264,继承开源的精神,直接以“x”开头起名。
吸取了教训,x264严格采用GPL协议开源,要求所有基于x264的衍生作品(即使用并修改了x264代码的作品)都必须同样开源全部代码,以防止重蹈DviX突然闭源收费的覆辙。
而FFmpeg的编码库中就有libx264。
商业公司的剪辑软件(达芬奇、PR)不可能接受开源,不可能集成FFmpeg在软件内。
这就导致他们最后编码导出文件的时候,没有x264和CRF模式可以选择,不能一口气导出一个压好的文件,还得导出之后我们再自己用压缩软件压缩。这就是一切的原因,开头也提过。
“MS MPEG4”、“DviX”、“XivD”,这三个编码器都是属于MPEG-4编码格式的。
如今已经被 H264格式 和 libx264编码器 代替了。
正如前文所言:


不知道各位是否觉得无聊
2、软件编码器
为什么前缀加“lib”?“lib”有什么意义?
“lib”是“library”的缩写,即“ 库”。在这里特指一个独立的**“软件库”**
例如 libx264、libx265 是纯软件编码库,用 C/C++ 从头实现了 H.264/H.265 的全套编码逻辑——像素级的运动预估(猜怎么动)、DCT 变换(把画面分割成积木拼图),码率控制策略(高码率保画质 or 低码率压体积),全靠 CPU 逐一运算。每一个压缩步骤都由软件代码驱动。
嘛,好像有点术语了,看不懂没关系,就这意思。
libx264:x264软件编码库。 libx265:x265软件编码库。 libsvtav1:svtav1软件编码库
x264编码器官网:x264, the best H.264/AVC encoder - VideoLAN
x265编码器官网:x265 HEVC Encoder / H.265 Video Codec
svtav1编码器官网:1、Alliance for Open Media
2、Alliance for Open Media / SVT-AV1 · GitLab
你可能会看到有人直接拿 x264编码器 做成了一个压缩软件,而没有使用FFmpeg。
这就是因为,x264是“外来”的编码器,并不是FFmpeg官方的人在开发。
x264 本身是一个独立的 H.264 编码器,由 VideoLAN 社区开发,代码托管在 VideoLAN GitLab 或 GitHub 镜像仓库。(即上方的链接)
作为独立工具时,其可执行文件通常命名为 x264(如命令行工具 x264.exe),直接提供视频编码功能。
所以,当 x264编码器 以“第三方软件编码库”的形态加入FFmpeg中时,就会加前缀“lib”,代表这是一个“library(库)”,完整称呼就变成了“libx264”。
libx265 和 libsvtav1 也是同理。这就是“lib”的由来。

如果你愿意,也可以从上面给的 x265、svtav1 官方页面里,自己扒拉扒拉直接做个 x265 / svtav1 压缩软件出来,而不使用FFmpeg。
话说回来,CPU他不就是个硬件吗,为什么用CPU编码的不叫硬件编码器呢?
如果将“CPU”划入进来算“硬件”,那就不好谈了。
电脑桌面上的所有软件到底该叫“硬件”还是“软件”呢?
所以就“耍赖”,CPU不算“硬件”。
这里的“硬件”,特指显卡上的专用视频编解码单元。
比如“nvenc单元”:这是英伟达显卡内部集成的专用于视频编码的电路。
nvidia显卡,编码器:nvenc系列;编码单元:nvenc。
AMD显卡,编码器:AMF系列;编码单元:VCN。
intel显卡,编码器:QSV系列;编码单元:未闻其名。
有时会看到别人称呼CPU为“通用处理单元”,GPU被称为“专用处理单元”。
这个“专用”,就专用在这里。
3、硬件编码器
“硬件编码器”(如 h264_nvenc、hevc_nvenc),更像是“传话筒”:
通过英伟达提供的API(给显卡发指令的接口)调用显卡上的nvenc单元。
把压缩任务全部交给nvenc单元,自己不做复杂的编码算法。
比如运动估计、DCT变换这些核心步骤由硬件完成。
换句话说:h264_nvenc 自身没有实现复杂的编码算法,编码器的软件代码部分主要负责“给显卡硬件发指令”、传递FFmpeg参数。
比如告诉 NVENC单元“用多高码率”,“选什么画质预设”,真正的编码运算全在显卡里完成。
所以软件部分很薄,且软件部分也确实没有进行编码,这样不叫“软件编码器”也很好理解了。
至于显卡上的编解码单元具体是怎么算的,那就交给老黄苏妈intel自己琢磨了。
4、nvenc单元
nvenc单元和 cuda 核心不同,和流处理器不同,和RT光追单元也不同。
它们别的事都不能干,只能用来视频编码。但是效率特别高,但是能控制的参数比较少。
N卡里也只有 nvenc 单元可以编码视频,其他部分都不行。
也就是说显卡的3D图形性能与它的视频编码能力完全无关。
显卡天梯图,3dmark timespy排行榜,只能反映打游戏的强弱,无法反映显卡编解码的强弱。
甚至有些不知可喜还是可叹的是:
很多时候很多时候 4090 = 4060
请看nv官网的 N卡编解码兼容表:
https://developer.nvidia.com/video-encode-and-decode-gpu-support-matrix-new

如图,4060有一个第八代nvenc单元,4090有两个第八代nvenc单元。
但FFmpeg执行单个压缩任务时,通常只调用1个nvenc单元。
甚至执行多个压缩任务时,它还是只调用1个nvenc单元。
即使调用两个单元,也常是1.5倍速度,而不是2倍速度。
常常压10个视频,有7个仅调用1个nvenc单元,完全看FFmpeg心情。
理论上,加入参数 “-split_encode_mode 2” 可以调用2个nvenc单元。但是实测,并不对所有视频有效,依然时而用1个单元,时而用2个单元。
这是NV官网对于“-split_encode_mode”的说明: 采用分帧编码和 NVIDIA Ada Lovelace 架构的 8K60 视频编码 - NVIDIA 技术博客

CMD输入“ffmpeg -h encoder=hevc_nvenc”,可看到对此参数的说明
目前测试过4070Laptop、2080ti、3090、4090、5070ti、5090,均是缘分调用。
可以在“任务管理器——GPU——encode”这栏,见到编码单元调用情况。
encode:编码——制作视频。 decode:解码——播放视频。
GPU压制有时会见到“3D”这栏也动了,利用率xx%,这不代表显卡使用了3D图形性能压制,而是代表任务管理器抽风了…
好消息:你的4060和别人的4090一样
坏消息:你的4090和别人的4060一样
如果想知道顶流配置和自己电脑的编码速度差多少。
可以上淘宝,10块钱租9950x+5090云平台一小时,传个100MB视频小测一下,15分钟不到就都明白了。你也可以测试到底什么情况才能调用5090的3个nvenc单元。
关于不同代的nvenc单元在性能、画质上的差距:
16系~30系是第七代nvnec单元,40系第八代nvenc单元,50系第九代nvenc单元。
实测这三代单元编出来的画质差别不大,差0.几分,画质这块主要还是看编码器和cq值。
而七八代编码单元速度基本一样,第九代单元速度快50~100FPS。
下文讲到shana有FPS测试图。

什么等级的显卡支持硬件编码?什么等级的显卡支持硬件编码AV1?

从上方的英伟达编解码页面中可以看到
系及以后的卡才能编码40系及以后的N卡才能编码 av1_nvenc
编解码兼容查询:Intel 编解码兼容查询:
https://en.wikipedia.org/wiki/Intel_Quick_Sync_Video
需要ultra100以后的核显和任意Arc系列独显才能编码 av1_qsv
即14代以后的intel cpu核显,不包含14代。
编解码兼容文档:AMD 编解码兼容文档:
https://github.com/GPUOpen-LibrariesAndSDKs/AMF/wiki/GPU%20and%20APU%20HW%20Features%20and%20Support
https://en.wikipedia.org/wiki/Video_Core_Next
需要7000系以后的A卡独显和700M以后的核显(如7840H的780m)才能编码 av1_amf
i卡和A卡的编解码单元数量:
A卡的好找,也是在上方的AMD编解码文档里,点进去就看到A卡有多少个VCN单元。
i卡的不好找,intel没给他们的编码单元起名字,官网就叫“多种格式编解码器引擎”,要在 intel 官网搜索显卡产品,一个一个的找来看:英特尔® 产品规格对比
PS:最新版本的FFmpeg可能不支持过老的N卡驱动。
比如2025年4月版本以后的FFmpeg只支持N卡驱动570.0以上版本。
想进行N卡压制请到英伟达官网一并更新最新的N卡驱动: NVIDIA GeForce 驱动程序 - N 卡驱动 | NVIDIA
但是,所有CPU都可以编码 libsvtav1。
这就是软件编码器和硬件编码器的另一个区别。
软编纯算法,一诞生新的软件编码器所有cpu都可以算。
硬编需要特定硬件,硬件一旦定下就无法修改,只能等新一代显卡发布来支持新的硬件编码器。
我们前面谈过历史,2020年av1格式刚出现在世人眼前,太早了。
2020年9月发布的30系N卡就没有支持av1硬编。
2022年随着av1格式的御用CPU编码器 libsvtav1 的推出,
还有2022年9月发布的40系N卡也同步支持 av1_nvenc 硬编,av1才大力普及。
这就是为什么 av1 格式这么好,还是开源免版税的,但是普及率差 h265 这么多,显卡要求还这么苛刻。因为太新了。
PS:虽然x264、x265是开源编码器,但H.264、H.265编码标准是收费的。
不过,不对个人终端收费,只会对厂商收费。普通人无需在意。

是这样的。
为什么 H.264 叫 264,而不是H251,H271,H281?

可双击放大。
题外话:
不用管shana的“openCL加速”,没有什么作用。这并不是硬件编码器。

shi!
CQ/QP
:CQP:
以上讲完了编码格式和编码器,以下就讲到显卡压制的具体参数了。
本段摘要:

本段摘要
2021年的格式工厂虽然也有N卡加速,但是是摆设。
彼时格式工厂没有任何方法能控制显卡压制的质量。
连“CQ”或者“QP”的压缩选项都没有,也不知道格式工厂怎么利用N卡压的。
在他后来有CQ模式之前,用显卡压的画面都很差很糊,不能用。

2021年用格式工厂N卡加速压了个视频,糊成马赛克

前文不是说CRF模式很好用吗?为什么不用CRF?
因为CRF模式是CPU专属的,只能用CPU核心来压。
GPU需要用CQ或QP模式。
恒定量化参数有点类似模式,“QP 恒定量化参数”有点类似CRF模式, 也是0~51的取值范围。
恒定质量是真正的显卡中的。“CQ 恒定质量”是真正的显卡中的“CRF”。

这里标的cqp,其实就是cq恒定质量和qp恒定量化参数的对比
你在有些地方会见到“cqp”这个词语,这其实有点暧昧。
“cqp”把“cq”和“qp”这两种模式混起来说了。
实际上ffmpeg命令行里只认“-cq”或者“-qp”这两种命令,没有“-cqp”这种命令。
有些人用“cqp”来表示“-qp”,有些人又用“cqp”来表示“-cq”。
像obs录屏就有一个cqp选项,下面有一个cq等级,而不是qp等级。
好似不同人说的“cqp”不是一个东西。

这是OBS 29.0版本。31.0版本改了叫“CQ”,称呼准确了。
其实,CQP的全称就是:Constant 恒定 Quantization 量化 Parameter 参数。
也就是说**“CQP”还真就是“qp”**,这是对的,意为把画面“量化”了再计算压缩。
FFmpeg的“-qp”这个参数,可以用在cpu编码上,也可以用在gpu编码上。
“量化”是通用的压缩模式。
但是在cpu编码中,CRF的“质量因子”比CQP的“量化”强得多。
“-qp”是设置一个期望的画质水平值之后,让各场景的画质水平趋于一致。
如其名“量化参数”,全部都量化管理,平均化了。
“-crf”和“-cq”是在“-qp”的基础上,以期望的画质水平值为主,还能动态调整各场景的画质水平,动态分配码率。
黑的看不见细节的地方给码率少一点,色彩细节多的地方给码率多一点。
所以你在各种科普中都能看到说不建议用“-qp”,都用“-crf”。
而在显卡编码中…哈,我们还是不会用“-qp”。
题外话,【-qmin 18 -qmax 28】:
即使设置了CRF24,各个场景也不是一直24的。
可能白的给15,黑一片的给30 40。
为了不损失黑暗画面的细节,有些人还会加“-qmin 18 -qmax 28”这样的参数,来限制CRF动态变化的最小值和最大值。
我个人不加,因为很多时候都会让视频体积都增大不少。

**【-movflags faststart】**倒是可以加一下,作用就像下图说的:“目录前置”。
能让别人在网站看你的视频,或者在线看共享网盘
等一两秒加载就可以开始观看了,不用等三四秒加载。
可以提升流媒体观看体验,理论是这么说的。
我没太感觉有什么区别(

三家显卡加速的三种压制参数:
如果您跳转目录而来,还不知道 libx264 和 h264_nvenc,请往上滑到“编码格式”篇观看。
N卡压制用的参数叫“-cq”,和CQP很像,但完全不同,CQ即刚才提到的“恒定质量”,和CRF的含义一样,这是大伙一直在用的。
i卡压制用的“icq”,即“-global_quality”。
icq是intel自己创的词语,FFmpeg里并没有“-icq”这种参数,intel也用不了N卡的“-cq”。

https://trac.ffmpeg.org/wiki/Hardware/QuickSync
我只看到大菠萝里用“ICQ”这名词,实际参数应该是“-global_quality”吧?

大菠萝
A卡压制,没有“-cq”可用,只能用“-qp_i -qp_p”,或者“-global_quality”。
如shana里A卡压制就默认使用“-global_quality”,国外博主用“-qp_i -qp_p”。


cpu -crf
nvenc -cq
qsv -global_quality
**amf -global_quality / -qp_i ** -qp_p ****
哈哈,这就是我们视频压缩领域呀…
当你第一次研究显卡压制,发现-crf不能用,得用-qp,压制一天。
用-qp压完发现有个更好的参数叫-cq,又重新压缩测试,压制一天。
压完N卡来测intel,发现-cq又不能用,压半天搞错了。
找半天才知道i卡要使用-global_quality,再压制一天。
最后压完i卡来测AMD,发现用-qp_i -qp_p。

总之,有人谈论“cqp”,问具体是 -cq 还是 -qp ,无脑用cq就好。
现在的格式工厂、shana、handbrake全都是写cq,没有使用cqp这种模糊的词

格式工厂后来有CQ选项了,但是…FormatFactory,out!

这是GIF
如图,shana的“质量”是crf/cq/global_quality,“量化器”是qp。
可以按F8打开shana的参数面板查看。
如何看FFmpeg参数?
ffmpeg -i 源视频.mp4 -c:v av1_nvenc -preset p1 -cq 34 -c:a copy -y 输出视频.mp4
-c:v 是 -codec:video 的缩写,即 -解编码器:视频流,表示你后面跟的参数名将作为视频的编码器使用。
-c:a 是 -codec:audio 的缩写,即 -解编码器:音频流,道理一样。
ffmpeg的参数以“-”开头,空格区分。普通参数不分前后顺序,可以随意填写。
与显卡压制shana与显卡压制
shana与显卡压制:
前文说过,2021~2024年的shana,即5.0~6.0版本,一直有GPU压制速度异常的问题。
大概是这种感觉:

可双击放大
这非常奇怪,GPU速度是不是有点太慢了?速度方面暂且如此,之后再说。
而在体积方面,如果你习惯性的根据CPU“crf24”的经验,在N卡压制中使用“cq24”。
而没有用VMAF测过视频画质,不知道 N卡“cq30”画质 = CPU“crf24”画质。
VMAF是视频画质客观评价标准,请到本文开头目录查看VMAF的详细说明。
不知道应该选择用“cq30”来压制才是对位的。
拿 cq24(相当于crf18)的体积去和 crf24 的体积比,自然会显得显卡压制根本小不下来。

双击放大
对显卡压制的一种常见误会:

哈哈

压缩大测试附图,双击放大
视频压缩大测试结果报告:CPU编码、显卡编码、H264、H265、AV1 - 知乎
如上图,同样的画面水平,应该是这样选:
libx264 -crf24
= libx265 -crf 25
= libsvtav1 -crf 30~34
= h264_qsv -global_quality 24
= hevc_qsv -global_quality 23~24
= h264_nvenc -cq 28~30
= hevc_nvenc -cq 28~30
= av1_nvenc -cq 34~36
即,hevc_qsv 选 “-global_quality 24”,hevc_nvenc选 “-cq 30”。
可以看到,qsv选24就行了,和cpu差不多,这和nvnec需要选28~30不太一样。
网络流传“i卡压制很好,n卡压制不行”,也许就源于此罢,毕竟人只会选24阿。

话说回来,shana的GPU压制速度到底是什么情况?
请看下图:

花50块租云平台测了一天的结果
我想说的话全在图中10点总结里了。
1、对于CPU编码器,shana的压制速度比正常的命令行脚本还快。
因为shana的cpu利用率更高,有90%以上(仅限单任务,多任务核心满载速度一样)。
往好的想,有空闲的核心,单任务电脑不会卡死。
2、对于GPU编码器,shana6.0以下版本确实莫名奇妙慢,shana7.4版本和命令行齐平。
原因不明。
这一加一减之下,就出现了上图的shana6.0 cpu 201fps,gpu 235fps的奇葩情况。
与此同时用命令行的速度是 cpu 150fps,gpu 400fps。
说点更奇葩的,2021年shana5.0,我用i7-9700k 压libx264 200FPS。
用2060 压h264_nvenc 也200FPS,五五开…蓝得盘。

3、shana默认veryfast预设。
veryfast预设会让cpu压制速度提高一大截,这才有机会出现上图中的两三百FPS的情况。
看过本文“小丸工具箱篇”应该知道,小丸如此慢就是因为其默认 -preset slower预设。
再谈-preset 速度预设:

前文贴过的图,再贴一遍
小丸篇讲过了,这里应该不用科普:**“速度预设只影响速度和体积,对画质影响较小。代表你愿意牺牲多少速度来让编码器寻求更高的压缩率,实现更小的体积”**了吧?

压缩大测试附图,可双击放大
如图,这便是 libx264 不同速度预设,对速度、画质、体积的影响。
VMAF分数在95以上可判定为肉眼看不出画质损失。
其他编码器的速度预设测试结果,这里就不贴了,可以去看压缩大测试完整文章:
视频压缩大测试结果报告:CPU编码、显卡编码、H264、H265、AV1 - 知乎
这里测的 veryfast 88分,medium 93分。差5分,有些差距。
但神奇的是,veryfast预设的编码器不想着推体积(即堆更高码率)去保画质了。
放弃治疗,画面分数跌落的同时,连带着体积也一起降低。
使得“veryfast”成为一个速度最快,体积又“近乎”最低的神秘选项。
还有更快的ultrafast,但是画质暴跌又没有更快,表里没写。veryfast是个分水岭。
“veryfast”以 186FPS 压出77MB的视频,veryslow以 21FPS 压出74MB的视频。
如果你不用软件工具来测VMAF分值,一时半会察觉不出88分和93分的差距。
又或者要压的视频没有那么高的收藏价值,只想着压快点,体积小点。
那毫无疑问,“veryfast”是非常划算的选项。
比如,不压番剧BD原盘,不压高规格的收藏级影片。
压点“门锁拍照级画质”的手机录像,本来画质就一般,选“veryfast”和“medium”可能还真不会一眼发现区别。
哦我错了,是vivo x200u、oppo find x8、小米15u、努比亚z70sU大人…
shana默认“veryfast”预设,无可厚非,可以理解。不想要,自己改就是了。

可双击放大
然而,谈论x264选 medium 还是 veryfast,还是 slower,都意义不大了。
为什么不选择既有速度又有画质又有体积的,劲霸强大的 libsvtav1 -preset 9 呢?
shana甚至给svtav1 默认 -preset 10

压缩大测试附图
想收藏就选x265或者svtav1,怎么也不会选 x264 slower来收藏。
想知道某个编码器都有哪些预设可用?

ffmpeg -h encoder=libx264

ffmpeg -h encoder=h264_qsv
这是做什么,各位从上面看下来的应该都明白了,不用说了罢。
当然,这里的列表不太全,如qsv就没有说可以用“-global_quality”。
额外科普:任务管理器显示的利用率,并不是真正的。额外科普:任务管理器显示的cpu100%利用率,并不是真正的100%。


看到这里,你已知晓了CRF、CQ、preset的概念,已经可以开始显卡压制了。
下面将会更深入的聊聊GPU压制的原理,以及如何进行VMAF测试。

双击放大。这是2021年的老图,时代变了

说的道理
简单来说:
视频结构之间是互相有依赖的,需要灵活的cpu单元来处理。
而gpu擅长并行计算,对这种需要前后比对的任务不在行。
所以gpu编码对于cpu编码存在天然的劣势。
理论如此,实际上 AV1_qsv、AV1_nvenc 表现都不错。
这大概是最新的编码标准带来的好处吧。
也不知道显卡厂商在他们显卡的编解码硬件单元里放的什么算法。
进行VMAF测试
进行测试:进行VMAF测试:
在观看这部分内容之前,如果您尚未知晓“VMAF”的含义,请点击左侧目录跳到“VMAF是什么?”补充知识。
先介绍两个软件,“FFmetrics”和“MSU VQMT”。
最后再介绍命令行FFmpeg测VMAF。
长话短说,直接上GIF。
、1、FFMetrics
FFMetrics github下载: https://github.com/fifonik/FFMetrics/releases
github怎么下,没梯子怎么办,不用说了吧。

FFmetrics简易使用方法

、2、MSU_VQMT
MSU_VQMT官网:http://compression.ru/video/quality_measure/video_measurement_tool.html#features
也要梯子

开测!

测完!

可双击放大
VQMT 也可以像上文介绍过的英伟达 icat 一样,只单纯的对比画面,你只需要在 VQMT 测试开始时立刻点击右下角“取消”,再在“show frame”查看帧,就可以 CTRL+1、CTRL+2,快速切换画面对比了。
、用命令行测试:3、用命令行测试VMAF:
普通人可以略过这段,有软件谁还用命令行测。普通人可以略过这段,有软件谁还用命令行测VMAF。
只有批量测上百个视频,记录数据出execl表的情况需要用命令行来测VMAF。
没错,说的就是我的压缩大测试脚本…
视频压缩大测试批处理脚本:可测CPU编码、显卡编码、CRF、CQ、preset、VMAF、H264、H265、AV1 - 知乎
只测十个、一个视频,不如用“FFmetrics”和“MSU VQMT”。
以下参数仅作记录:
命令行测试VMAF:
使用内置的VMAF 1080p模型测试VMAF:
ffmpeg -i 被测视频.mp4 -i 源视频.mp4 -filter_complex "[0:v][1:v]libvmaf=model=version=vmaf_v0.6.1:log_path='C\:\\temp\\vmaf_log.txt':n_threads=99" -f null -
使用内置的VMAF 4k模型测试VMAF:
ffmpeg -i 被测视频.mp4 -i 源视频.mp4 -filter_complex "[0:v][1:v]libvmaf=model=version=vmaf_4k_v0.6.1:log_path='C\:\\temp\\vmaf_log.txt':n_threads=99" -f null -
使用外置的VMAF模型测试VMAF:
ffmpeg -i 被测视频.mp4 -i 源视频.mp4 -filter_complex "[0:v][1:v]libvmaf=model_path='E\:\\路径\\vmaf_v0.6.1neg.json':log_path='C\:\\temp\\vmaf_log.txt':n_threads=99" -f null -
(这里用了neg版模型文件所以后缀是neg.json,不是说外置模型一定要neg版本)
【n_threads=99】:使用全部核心来测VMAF,默认单线程测试极为缓慢。
家用cpu设99线程已足够,服务器cpu请根据情况设999,或者9999。
、关于测试分数4、关于VMAF测试分数…
最高达不到上限的“100分”,即使当场复制一份源视频来对比,也多是98.5分。
最低也不会到下限的“0分”,哪怕故意压成马赛克画面来对比也有30,40,50分。
0.1分、1分一定是测试出错了,如帧数没对齐,拿A视频的第1000帧和B视频的第1001帧来对比。
VMAF是逐一对比每帧画面来测试的,每帧画面都有单独的vmaf分值,主要看VMAF平均分。
也不是非要等到出现1分才知道测错了。
如果平时都是95分,测到某个视频突然暴跌到70分,但画面看起来还好,没有模糊的地方,那一定是vmaf测试错误。
帧不同步导致测错,一般有两种可能:
1、CFR固定帧率视频和VFR动态帧率视频对比;
2、不同容器格式的视频对比,比如 mp4 视频和 mkv 视频对比。
第一点,什么是CFR固定帧率和VFR动态帧率?
这是一般人用 FFMetrics 和 VQMT 测试出错时,最可能遭遇的问题。

双击放大
第二点,容器格式不相同导致测错…
这是使用 命令行FFmpeg 测试出错时,可能会遭遇的问题。
这不是加了“settb=AVTB,setpts=PTS-STARTPTS”这样的参数。
试图同步时间基(time base)、归零起始时间戳就能测准的。

https://www.ffmpeg.org/ffmpeg-filters.html#libvmaf-1
如果出错,你可以尝试将压缩后的 mp4视频 转封装为 mkv格式,再和 源mkv视频 对比测试,会发现VMAF分数突然从70分跳上95分,又正常了。
命令行用普通的参数直接测VMAF是这样的,容器格式不一样就有可能出错。
但可以加参数“-r”(指定帧率),加了就能测准了。

FFMetrics也干了。
加了“-r”之后,即使前后是 mp4视频 和 mkv视频 ,也能够测出正确的VMAF分数。
那么,上面给出的“命令行测试VMAF”的代码,可以升级为:
命令行绝对不出错的测试VMAF:
ffmpeg -r 帧率 -i 被测视频.mp4 -r 帧率 -i 源视频.mp4 -filter_complex "[0:v]settb=AVTB,setpts=PTS-STARTPTS[main];[1:v]settb=AVTB,setpts=PTS-STARTPTS[ref];[main][ref]libvmaf=model=version=vmaf_v0.6.1:log_path='vmaf_log.txt':n_threads=99:eof_action=endall" -f null -
说这么多,命令行对普通人也没什么关系,反正都用FFM或者VQMT,知道一下就好了(
保留原画面的胶片颗粒噪点:
、关于胶片颗粒滤镜与评分:5、关于“胶片颗粒滤镜”与VMAF评分:
前文在“VMAF的局限性”的部分说过,“film-grain”滤镜能保留原画面的噪点。
“噪点”这玩意听上去似乎不是个好东西,哪有人喜欢“噪”呢?
其实所谓的“噪点”也分成两种:
1、自然的 好看的,电影胶卷颗粒“grain”
2、不自然的 难看的,电视信号噪声、相机电路噪声“noise”

https://iavoe.github.io/x264-web-tutorial/HTML/index.html
手机评测up主们常常说“XX手机夜晚拍照有多少噪点”,这就是要避免的“噪声”。
因为“噪声”不仅无规律,而且颜色也是驳杂的,错误的,对不上画面。
老电影的胶片颗粒就不一样了,化学反应产生的颗粒。颜色和画面一致,贴合形体。
是正确的,可以保留,比数码相机的“噪声”好看多了,这就是所说的 胶片质感。
此处无图,但我想各位应该都能想象出来。
一开始“噪点”就是指噪声 noise,胶片颗粒 grain 就叫颗粒。
现在人叫得多了,两种都叫做“噪点”,那就这么说罢(
但视频压缩很容易会把噪点抹去。x264 x265加 “-tune grain” 参数可以保留一些噪点,但视频体积会飙升,比如提高30%~50%…
svtav1的默认参数更是,抹除噪点比x265更彻底,抹得更平。

胶片颗粒感还是很受欢迎的。
一般的选择就是干脆不压了。留着吧。
而其实,svtav1有一个叫“film-grain”的滤镜,如下图:

https://iavoe.github.io/av1-web-tutorial/HTML/index.html

“film-grain”滤镜的原理是:
先将原片噪点隔离出来,对视频编码,编码完成后再把噪点重新“融回去”。
融回去的噪点,不可能每个噪点的位置都和原视频的噪点一模一样。
对 VMAF 来说,画面对不上就是有问题,这导致分数反而下降了,比不加滤镜还低。
这是一个在VMAF测试中要注意的问题,加入此滤镜后就不要使用画质评价指标了。
不管是 VMAF,还是 SSIM、PSNR 都不再准确。
详细测试分数可以点击上图给的 iavoe教程 网页链接,ctrl+F搜“胶片”。
实际上,不加滤镜反而还会模糊一点,比如下图中的第三张人脸。

这个杀手不太冷
这是因为,“噪点”还是保护画面清晰度、保护画面细节的工具。
使用 topaz video ai 超分视频的时候能发现,加噪点可以略微防止超分出鬼图。
噪点是干扰,加噪点能干扰超分模型的计算,从而在一定程度上“保护画面”。
或者说这些胶片颗粒本来就是画面细节的一部分。
但 svtav1 默认参数给噪点狠狠抹掉了,就变成了上图中最右侧的画面。
因此,很多人认为 “av1对画面噪点的保留不太行”。
其实,加个“film-grain”滤镜就完了,上方两张图就是结果,没什么好说的。
示例:
动漫: -c:v libsvtav1 -preset 7 -crf 34 -svtav1-params "tune=0:film-grain=15" -c:a copy
真人: -c:v libsvtav1 -preset 7 -crf 34 -svtav1-params "tune=0:film-grain=40" -c:a copy
嘛,如果你保留噪点要求非常高,情况特殊。像下图VCB压的原盘一样。
x264也搬出来用了,那又是和“普通压缩”不同的另一种工作了。

对,刚才我是不是提到了 topaz video ai 超分?
警惕某些AI超分的垃圾“4k电影”。
他们把老电影强行从 1080p 拉伸到4k,中途加入超级巨量噪点只是为了保护超分顺利,并不是什么“祖上胶片相机的质感”。
人为加噪点很容易的,topaz video ai 超分时在“噪点”那个选项拉满就是了…
他们往往超分技术又不行,4k超得不如1080p,还放个100G电影资源挂网站上…
随地大小便,污染环境!

大明王朝1566。图中的4k没加噪点,只是举例超分得垃圾有多油腻。
遇到密集到影响观看的噪点,AI拉伸的片子,那就没必要保留噪点了,抹掉就抹掉吧。
也没有什么铁打的“判断标准”,觉得噪点能接受就留,觉得犯密集恐惧症了,看得不舒服就不留,全凭个人。
提一个“DBD-Raws压制组”,AI拉伸4K动画,劣迹斑斑,请谨慎看待。

详情帖子:https://bbs.acgrip.com/forum.php?mod=viewthread&tid=10465&highlight=DBD

命令行脚本——命令行脚本——
Ⅳ、命令行FFmpeg简易批处理脚本

这是图片

脚本简评:脚本简评:
本篇文章讲了这么多软件,以上的批处理脚本除了保留源日期,
绝对不会崩溃闪退(因为根本没有可以闪退的GUI),
能够预估最终视频体积…
原理是简单粗暴的“当前视频体积”除以“进度百分比”,所以预估值会一直变动,越靠近结束越准确。
另外压缩软件“FFmpegFreeUI”也有预估视频最终体积的功能。应该没第二个软件有了。
还真没什么好说的,就这样罢。(
23年原始脚本:
@echo off
chcp 65001 >nul
:: 可修改输出文件夹,修改output_folder变量即可,比如 set "output_folder=%input_folder%" 改为 set "output_folder=D:\bin"
set "input_folder=%~dp1"
set "output_folder=%input_folder%"
if not "%output_folder:~-1%"=="\" (
set "output_folder=%output_folder%\"
)
set "ffmpeg=%~dp0ffmpeg.exe"
if not exist "%ffmpeg%" ( for /f "delims=" %%a in (' "where ffmpeg.exe" ') do ( set ffmpeg=%%a ) )
if not exist "%ffmpeg%" ( echo "错误:未找到ffmpeg.exe。请在当前脚本同级目录放置ffmpeg.exe(只需本体一个exe文件即可,不需要整个文件夹)。或者正确配置ffmpeg的环境变量的路径,如 D:\ffmpeg\bin,而不是 D:\ffmpeg\bin\ 或者 D:\ffmpeg\bin\ffmpeg.exe " & echo. & pause & exit /b 1 )
:process_files
if "%~1"=="" ( goto :eof )
set "input_file=%~1" & set "filename=%~n1" & set "ext=%~x1"
set "output_file=%output_folder%%filename%%ext%"
:check_file
if exist "%output_file%" ( set /a "jk+=1"
set "output_file=%output_folder%%filename%~%jk%%ext%"
goto :check_file
)
:: 可修改ffmpeg参数
"%ffmpeg%" -i "%input_file%" -c:v libx264 -preset veryfast -crf 24 -y "%output_file%"
powershell -command ^
"(Get-Item -Path '%output_file%').CreationTime = (Get-Item -Path '%input_file%').CreationTime; ^
(Get-Item -Path '%output_file%').LastWriteTime = (Get-Item -Path '%input_file%').LastWriteTime; ^
(Get-Item -Path '%output_file%').LastAccessTime = (Get-Item -Path '%input_file%').LastAccessTime"
shift
goto :process_files
24年新版进度栏脚本:
@echo off
chcp 65001 >nul
mode con: cols=220 lines=50
:: ↑设置CMD命令窗口大小,cols是横长,lines是纵长↑
:: 开始压缩后,如果进度条无法单行刷新,请加大cmd窗口长度。
:: win11下的cmd窗口被集合到“终端”里了,这行参数不起效,请右键终端标签页——设置——启动大小,在相关位置修改窗口的长宽。
:: ========= [设置视频编码参数, 只需设置中间参数,不用填写文件路径]
set "video_compression= -c:v libx264 -preset fast -crf 24 -c:a aac -b:a 320k "
:: ========= [设置输出路径]
set "input_folder=%~dp1"
set "output_folder=%input_folder%"
:: [此处已设置输出文件夹等于输入文件夹,即输出到源文件夹【%input_folder%】,如需自定义输出路径,可修改第二行代码,示例【set "output_folder=D:\CRF24输出"】 ]
:: ========= [设置拓展名,如留空则保留源文件拓展名,示例 【set "ext1="】 或【set "ext1=mp4"】]
set "ext1="
:: ================== 以下是编码器的分类和使用建议,每人习惯不同,不一定按照以下参数。
:: cpu:
:: -c:v libx264 -preset medium -crf 24
:: -c:v libx265 -preset medium -crf 24
:: -c:v libsvtav1 -preset 9 -crf 34
:: intel qsv加速:
:: -c:v hevc_qsv -preset medium -global_quality 24
:: N卡 nvenc加速:
:: -c:v hevc_nvenc -preset p4 -cq 32
:: -c:v av1_nvenc -preset p4 -cq 36
:: A卡 AMF加速:
:: -c:v hevc_amf -preset balanced -qp_i 28 -qp_p 28
:: ================== 以上是需要自行设置的全部部分,可以直接使用脚本了,下面的部分可以不看
if not "%output_folder:~-1%"=="\" (
set "output_folder=%output_folder%\"
)
:: [ffmpeg路径,从脚本当前目录或环境变量中寻找ffmpeg.exe,优先寻找脚本当前目录。如果哪里都找不到ffmpeg.exe则报错退出脚本。只需要ffmpeg.exe本体,一个文件即可,不需要一整个文件夹。]
set "ffmpeg=%~dp0ffmpeg.exe"
if not exist "%ffmpeg%" ( for /f "delims=" %%a in (' "where ffmpeg.exe" ') do ( set ffmpeg=%%a ) )
if not exist "%ffmpeg%" ( powershell -Command "Write-Host -ForegroundColor Red "喔哟,出错啦!未找到ffmpeg.exe。请在当前脚本同级目录放置ffmpeg.exe,只需要ffmpeg.exe本体,一个exe文件即可,不需要解压出来的整个ffmpeg文件夹。或者正确配置ffmpeg的环境变量的路径,也有可能需要重启电脑应用一下环境变量的变动" " & echo.
echo "这样吧,进入https://www.gyan.dev/ffmpeg/builds/,再点击下载ffmpeg-git-full.7z(git版本可理解为抢先版,full意思是完全体),解压后逐个点开,在“bin”的文件夹下面就是ffmpeg.exe,直接复制到本批处理脚本所在的文件夹里," & echo.
echo "如果想要设置环境变量,则win+i(打开windows设置),在搜索栏搜索“环境变量”,点击“编辑系统环境变量”,再点“环境变量”,在下方的“系统变量”里点击“Path”,再点“编辑”,点“新建”,把刚才解压的ffmpeg.exe的文件路径粘贴过来,比如 D:\ffmpeg\bin,粘贴到“bin”的目录就行了,不用粘贴成“D:\ffmpeg\bin\ffmpeg.exe”,再点击确定,完事了。设置完毕后如果发现没有变化,可能需要重启电脑。" & echo. & pause & goto :EOF )
:: [计算拖入文件的个数,这个变量删了也不影响压缩,只是为了方便知道拖入了多少文件。比如 “共有5个文件,这是第2个文件”]
:: [此处原本的代码也是很简单的:“for %%a in (%*) do ( set /a count+=1 )”, 但为了避免文件名里有英文括号导致出错的问题,改为了下方的四行代码。]
set all=%*
setlocal enabledelayedexpansion
for %%a in ( !all! ) do ( set /a count+=1 )
setlocal disabledelayedexpansion
:process_files
:: [循环开始的地方。如果仍有视频要处理则继续进行,如果没有,则结束脚本。 ]
if "%~1"=="" ( goto :eof )
:: [保留和源文件相同的文件名和拓展名]
set "input_file=%~1"
set "filename=%~n1"
setlocal enabledelayedexpansion
:: [拓展名处理]
set "ext=!ext1!"
if defined ext ( set "ext=!ext: =!" )
if not defined ext ( set "ext=%~x1" ) else ( set "ext=.!ext!" )
:: [设置输出文件为:自定义的输出文件夹路径+源文件名+拓展名]
set "output_file=!output_folder!!filename!!ext!"
:: [如文件名里有“&”符号,将其转义,以便后续使用]
set "input_file1=!input_file:&=^&!"
set "filename1=!filename:&=^&!"
set "output_file1=!output_file:&=^&!"
set "ffmpeg1=!ffmpeg:&=^&!"
set /a file+=1
echo.
echo [-----] 共有%count%个文件,这是第!file!个文件: !filename!!ext!
echo.
echo 开始处理......
echo.
:check_file
:: [检查是否存在同名输出文件,如果存在,则序号加1]
if exist "!output_file!" ( set /a "jk+=1" & set "output_file=!output_folder!!filename!~!jk!!ext!" & goto :check_file)
:: [获取视频时长、帧率等用于后续计算的信息]
for /f "tokens=*" %%y in (' cmd /c " "!ffmpeg1!" -i "!input_file1!" " 2^>^&1 ^| findstr /r "Duration fps"') do (
for /f "tokens=*" %%a in ('echo %%y ^| findstr /r "Duration" ^| powershell -command "$input -split ',' | Select-String 'Duration' "') do (
set "Duration=%%a" & set "Duration=!Duration:Duration: =!"
for /f %%k in ('powershell -command "[TimeSpan]::Parse('!Duration!').TotalSeconds "') do ( set "totalSeconds=%%k" ) )
for /f "tokens=*" %%a in ('echo %%y ^| findstr /r "fps" ^| powershell -command "$input -split ',' | Select-String 'fps'"') do (
set "fps_value=%%a" & set "fps_value=!fps_value:fps=!" & set "fps_value=!fps_value: =!" )
)
echo [!fps_value!] | findstr /i "23.98" >nul && set "fps_value=23.976"
for /f %%a in ('powershell -command "(!totalSeconds! * !fps_value!).ToString('F0')"') do ( set "All_frames=%%a" )
:: 获取源文件体积(以MB为单位)
for %%A in ("!input_file!") do (
for /f "usebackq" %%B in (`powershell -NoProfile -Command "Write-Output ([math]::Round((%%~zA / 1048576), 2))"`) do ( set "origin_size_mb=%%B" )
)
:: [———————————————— 以下是最重要的部分,正式开始处理视频。包括:启动ffmpeg压缩命令并将进度信息输出到powershell命令中计算、不断计算数值并显示更新我们自定义的新的进度信息栏、压缩完成之后赋予源文件的日期属性、准备处理下一个视频文件。]
:: [正式开始ffmpeg压缩视频,其中有关压缩参数的变量 video_compression 已经在开头设置过了]
:: [进度信息栏循环更新。如果这里的进度显示99.99%,但视频实际上已经处理完成了,视频文件已经压出来了,那便可以忽略,只是显示问题]
"!ffmpeg!" -i "!input_file!" !video_compression! -y "!output_file!" -progress pipe:1 -nostats | powershell -Command ^
"Start-Sleep -Milliseconds 500; ^
while ($true) { $line = [Console]::In.ReadLine(); ^
if ($null -eq $line) { break } ^
if ($line -match 'frame=(\d+)') { $frame = $matches[1] } ^
if ($line -match 'fps=(\d+\.?\d*)') { $fps = $matches[1] } ^
if ($line -match 'total_size=(\d+)') { $total_size = $matches[1] } ^
if ($line -match 'out_time=(\d+:\d+:\d+\.\d+)') { $out_time = $matches[1] } ^
if ($line -match 'bitrate=\s*(\d+\.?\d*)kbits/s') { $bitrate = $matches[1] } ^
if ($line -match 'speed=(\d+\.?\d*)x') { $speed = $matches[1] } ^
if ($frame -and $fps -and $total_size -and $out_time -and $bitrate -and $speed) { ^
$processbar = [math]::Round(([double]$frame / [double]$env:All_frames * 100),2); ^
if ( $fps -gt 1 ) { $time_left = (New-TimeSpan -Seconds (([double]$env:All_frames - [double]$frame) / [double]$fps)).ToString('c') } else { $time_left = "'∞'" }; ^
$final_size = [math]::Round((([double]$total_size * 100) / ([double]$processbar * 1024 * 1024)), 2); ^
$size_percentage = [math]::Round(($final_size / !origin_size_mb!) * 100); ^
$final_size = if ($final_size -gt 1024) { ($final_size / 1024).ToString('F2') + 'GB' } else { ($final_size).ToString('F2') + 'MB' }; ^
$out_time = $out_time.Substring(0, 8); $Duration = $env:Duration.Substring(0, 8) } ^
Write-Host -NoNewline -ForegroundColor Green \"`r[---] 进度:$processbar%% 剩余处理时间:$time_left 预估最终体积/预估为源视频的百分之几:$final_size $size_percentage%% 处理速率:($speed x / $fps fps) 码率:$bitrate kbps 视频时长:$out_time/$env:Duration 帧数:$frame/$env:All_frames \" ^
} "
:: [保留源文件的创建、修改、访问时间。注意,这里的日期属性是windows的文件特性,而不是视频的“时间戳”或者视频元数据内嵌的“日期信息”,这跟windows的文件“日期”是截然不同的,这便是为何在一些软件里选择类似“保留时间戳”、“不删除元数据”这样的选项时,会发现依然保不住源文件日期,因为就不是一回事。]
powershell -command ^
"(Get-Item -LiteralPath \"!output_file!\").CreationTime = (Get-Item -LiteralPath \"!input_file!\").CreationTime; ^
(Get-Item -LiteralPath \"!output_file!\").LastWriteTime = (Get-Item -LiteralPath \"!input_file!\").LastWriteTime; ^
(Get-Item -LiteralPath \"!output_file!\").LastAccessTime = (Get-Item -LiteralPath \"!input_file!\").LastAccessTime"
:: 如果希望脚本暂停查看红字报错讯息,而不是一闪消失,请直接在下一行加“pause”,意为暂停。可以在任意空行加暂停,加哪儿就暂停哪儿。
:: [回到开始的地方,处理下一个文件]
shift
goto :process_files
:EOF
其实只用24年的新版进度栏脚本就足够,但是字数太多了,还是给个23年原始脚本供大家学习参考。
脚本功能:脚本功能:
虽然可以输入任意自定义的FFmpeg参数,但最好还是用来压缩视频。
因为压缩都是固定的几套参数,不会总是更改。
要画面裁剪、抽流混流、片段分割,找个有GUI的视频处理工具更好。
除了画面长宽裁剪这种要重新编码的活,losslesscut全干完了。
批处理脚本连个预览框框都没有,不适合干这些事情。
使用方式运行过程:使用方式/运行过程:
**0、前期准备:**新建txt文本,复制粘贴以上代码,改后缀为bat。
并将ffmpeg.exe放置于脚本同目录,或者设置ffmpeg环境变量。
好处是放在U盘里,带个bat脚本和ffmpeg.exe就能直接在别人电脑上使用。
**1、打开文件夹:**按win键呼出磁贴或者从资源管理器的“快速访问”打开此脚本所在的文件夹。
已经…不用每次都回到桌面再打开软件了…
**2、拖入文件:**拖入视频文件到bat脚本上,可以框选多个视频一起拖入。
**3、输出文件夹:**输出到源文件夹(可自行更改输出文件夹路径)。
**4、重名文件检查:**检查目的地是否有名称重复的文件,有的就序号+1。
**5、压缩:**以设定好的ffmpeg参数开始压缩。
右键以txt方式打开bat文件,在相应位置编辑压缩参数。
多复制两三个脚本,设置几套不同的常用参数,就不用总打开文件编辑了。
**6、保留日期:**压完后调用powershell命令复制源文件的创建日期、访问日期、修改日期。
7、循环以上步骤直到所有拖入的视频都处理完毕为止。
拖入一次只有单个CMD窗口,单个视频压缩任务,会一个个排队处理。
要同时进行多个ffmpeg任务,只需要把文件分批多拖入几次就行了。
拖入四批文件,打开四个ffmpeg窗口,同时进行四组任务,保证吃满CPU线程。
由于保留了源视频日期,完全不用担心分批压缩后的“按时间排序”问题。
其他脚本:其他脚本:
另一位up主 波导终结者 做的脚本:https://www.163.com/dy/article/JD5U4O5M0550A3E3.html
echo off
for %%i in (*.mp4,*.mkv) do ( ffmpeg -i "%%i" -c:v libx264 -crf 24 -c:a copy -y "bd%%i.mp4" )
更加简单,比我的代码少了90%,可以学习参考,他的功能:
1、直接双击bat文件运行而不需要拖入视频。
2、会将脚本同级目录的所有mp4和mkv文件都视为压缩对象。
3、输出到当前文件夹,视频前缀加一个“BD”。
完了。
因为代码简单,相比我的脚本少了一些功能:
1、不能检测重名文件。不过固定加前缀,也不会有重名问题。
2、必须使用环境变量中的ffmpeg。
3、无法保留源文件日期。
各位可自己改进。 改进完了会发现和我的年原始脚本差不多一样长改进完了会发现和我的23年原始脚本差不多一样长(
以上。
保留全部字幕轨道和音频轨道:

-map 0:V -map 0:a -map 0:s
超级无敌一定能测准VMAF的小脚本:
上文介绍了“命令行绝对不出错的测试VMAF”的代码。
现在可以拓展一下,做个小脚本,用户只需填入视频名字,脚本会自动帮你填【-r】的帧率和【n_threads】的CPU线程数,可以很方便的进行测试。
这个小脚本只做了1对1测试。因为要复制粘贴视频名,就算能批量测试也很麻烦,没什么意义,所以没有做批量测试。该脚本仅供学习参考(图一乐)。
这个小脚本改几个参数名,就是测试 XPSNR 的脚本了。
大批量测试VMAF,有我的压缩大测试脚本和 FFMetrics软件,那更方便。
@echo off
chcp 65001 >nul
:: 请将该脚本和待测视频置于相同文件夹目录下。这样脚本可以直接识别同目录下的文件,可以免去填写视频文件的路径,只填视频名字就行。
:: 懒得写“识别并使用与脚本同目录的FFmpeg.exe”了,咱统一用环境变量的FFmpeg,好吧兄弟。
set "被测视频=2.mkv"
set "源视频=1.mkv"
set "跳采一半ON或不ON=on"
:: 跳采一半指:测2、4、6、8、10、12.......直到最后的偶数帧,即1、3、5、7、9......奇数帧不测,减少了一半需要测的帧数,将测试时间缩短一半。VMAF得分通常会比全程测试高0.1~0.5分。
:: ===============================以下没有需要自定义的参数了,可以不看=====================================================================================================
setlocal enabledelayedexpansion
if "!跳采一半ON或不ON!"=="on" ( set "jump1=[0:v]select='not(mod(n,2))'[0v]; [1:v]select='not(mod(n,2))'[1v]; [0v][1v]"
set "jump2=select='not(mod(n,2))',"
) else (
set "jump1=[0:v][1:v]"
set "jump2=" )
:: 获取CPU线程数
for /f %%p in ('powershell -noprofile -c "[System.Environment]::ProcessorCount"') do ( set /a CPU_threads=%%p - 1 )
:: [获取视频时长、帧率等用于后续计算的信息]
for /f "tokens=*" %%a in (' cmd /c " ffmpeg -i "!源视频!" " 2^>^&1 ^| findstr /r "fps" ^| powershell -command "$input -split ',' | Select-String 'fps'"') do (
set "fps_value=%%a" & set "fps_value=!fps_value:fps=!" & set "fps_value=!fps_value: =!" )
)
:: [“ffmpeg -i”命令显示的内容里,帧率最多显示到两位小数,会把常见的23.976帧约为23.98帧,为了计算更加准确,将检测获取到的帧率的值里是否有23.98,有就改为23.976]
echo [!fps_value!] | findstr /i "23.98" >nul && set "fps_value=23.976"
:: 自动设置VMAF模型类别。检查视频分辨率是否大于等于3840*2160,4K视频将使用4K的VMAF模型(vmaf_4k_v0.6.1.json),不是4k视频则使用1080p的VMAF模型(vmaf_v0.6.1.json)。有部分长比例的4k视频不是3840*2160,可能是3840*1500~1700,因此放低对高度的判定标准为1400。
for /f "tokens=*" %%y in (' cmd /c " ffmpeg -i "!源视频!" " 2^>^&1 ^| findstr /r "fps" ^| powershell -Command ^
" $All_matches = [regex]::Matches($input, '(\d{2,})x(\d{2,})'); foreach ($match in $All_matches) { $left = [int]$match.Groups[1].Value; $right = [int]$match.Groups[2].Value; if ( ($left -ge 3840 -and $right -ge 1400) -or ($left -ge 1400 -and $right -ge 3840) ) { Write-Output 'vmaf_4k_v0.6.1' } else { Write-Output 'vmaf_v0.6.1'} }"
') do ( set vmaf_model=%%y )
if not defined vmaf_model ( set "vmaf_model=vmaf_v0.6.1" )
ffmpeg -hide_banner -nostdin -r !fps_value! -i !被测视频! -r !fps_value! -i !源视频! -filter_complex "[0:v]!jump2!settb=AVTB,setpts=PTS-STARTPTS[main];[1:v]!jump2!settb=AVTB,setpts=PTS-STARTPTS[ref];[main][ref]libvmaf=model=version=!vmaf_model!:log_path='vmaf_log.txt':n_threads=!CPU_threads!:eof_action=endall" -f null -
echo. & echo 总结: & echo.
for /f "tokens=6" %%a in (' findstr /c:"metric name=""vmaf""" "vmaf_log.txt" ') do ( echo VMAF平均分:%%a & echo. )
echo 被测视频时间基:
ffprobe -v error -select_streams v:0 -show_entries stream=time_base -of default=noprint_wrappers=1:nokey=0 "!被测视频!"
echo.
echo 源视频时间基:
ffprobe -v error -select_streams v:0 -show_entries stream=time_base -of default=noprint_wrappers=1:nokey=0 "!源视频!"
echo.
pause
杂谈——杂谈——
以下是杂谈:
内容摘要:

关于视频缩略图:

K-Lite_Codec_Pack
https://www.codecguide.com/download_k-lite_codec_pack_basic.htm

Icaros,不仅能看视频缩略图,还能缓存图片缩略图
一、两台电脑,启动!
“两台电脑”的生产力情景示例:
**1、一台设计,一台3D渲染。**A电脑设计完了就地开始渲染,B电脑刚好渲染完空闲出来,可以接着设计,轮流倒。
2、一台日用,一台24小时压缩视频。

可双击放大
以下内容涉及DIY装机知识,这里就不讲解“如何配内存配电源配xxx…”了。
可以用两台8L平铺机箱,ITX,淘宝搜缔誓科技。
一台占地宽度85mm,两台占地宽度180mm,等于一台普通机箱的位置能放两台电脑,省空间。
至强2680v4,80元上下,cpuz 6000分,最早出现在2023年。(或者更早?)
他可以将你增添副机的成本大大降低…
甚至可以买双路主板,放两颗2680v4,160元,12000多核分…

可放大
电费问题:2680v4,满载120w。13400,满载120w。
关于新电脑如何迅速装系统…

需求的产生

可双击放大
如图,win+r,regedit,打开注册表。
HKEY_LOCAL_MACHINE\SYSTEM\HardwareConfig\Current\BootDriverFlags
此项值从0改到1c,16位。
以上的方案需要额外的硬件,也可以使用另一种方案:
VMM虚拟机装windows,装好所需软件后做成ISO镜像,丢给Ventoy多系统启动U盘。
在虚拟机上也可以动态增减需要的软件,每年更新自己的软件后,做成新的ISO镜像就可以了。
Ventoy多系统启动盘制作及虚拟机VMware配置-CSDN博客
这里应该不用科普“不要在XX之家下风林火山/ghost/精简版系统镜像”这种知识了罢。
需要下载纯净的windows原版镜像请进:MSDN, 我告诉你 - 做一个安静的工具站
二、HDR、SDR、杜比视界相关问题:
普通人下载时尽量选择名字里带有的片源(普通人)下载时尽量选择名字里带有“SDR”的片源.
你是否遇到过,影片亮度极低,或者画面一片绿色的情况?

这就是我们的“HDR-低动态色域范围”

杜比视界未正确解码

相比HDR,杜比视界的要求还没那么苛刻,potplay和mpvnet都可以正常解码杜比,放出正常画面。
HDR就不太好玩了:
一般显示器+没做好windows HDR设置的情况,看HDR的视频会一片黑暗,还不如不要HDR。
等会,你还不知道什么是“HDR”?

大家都知道的事应该不需要科普罢(
**HDR原理简单说:**给每个像素标亮度值,SDR亮度范围1~100,HDR亮度范围1~1000。
在SDR里有一个“100亮”的像素,到HDR就应该是“1000亮”,成比例的换算。
但这时候出错了,换到HDR还是标记“100亮”,这时的HDR只有“1~100亮”的像素,后面“101~1000亮”的像素全没有。
可以类比SDR只有“1~10亮”的像素,没有“11~100亮”的像素,就很黑暗了。
HDR是BT.2020(Rec.2020)色域,SDR是BT.709(Rec.709)色域,涉及到长篇色彩知识,能一口气从视频压缩聊到显示器参数,这里就不展开了,看VCB压制组的公开教程罢(
如何看HDR视频?
potplay和mpvnet都有“将HDR映射为SDR”的观看模式。
但是如下图所示,potplay启用这功能会有亮度损失,依然黑,不及SDR原片。
mpvnet的情况不错,亮度接近SDR原片,但是…这就相当于在看SDR,而不是HDR了,那为什么下载HDR片源,而不是下旁边的SDR片源,确保一定没有亮度损失呢?

是的,我们挨得很近

双击放大。可看到房梁上的暗处,还是原片比mpvnet更亮些
直接下SDR片源,好处是可以拿到任何设备上用任何软件播放,不担心“变黑变绿”。
下HDR片源,在MPV里转成SDR看,不便利的地方是绑定播放软件,好处是以后买了HDR显示器可以看HDR,战未来。
不过想正确播放HDR,不只是买一个HDR显示器就万事大吉了,还需要折腾,可以看:
【可盐可甜,软硬兼施——Win11系统级HDR校准流程分享】: https://www.bilibili.com/video/BV1F37ezREZX
你需要有一个屏幕亮度在600~1000nit以上支持HDR的显示器,并且按照B站教程正确设置windows的HDR设置,才可以看到真正的HDR画面,可能会涉及到一些“租校色仪校准”的过程。
三、安卓手机压缩视频
观看以下内容需要您知晓一些视频压缩知识,比如“CRF”、“编码器”。
话说在前,不是很推荐手机压缩,仅供娱乐。建议8gen2以上的芯片。
极客湾手机CPU排行榜: https://socpk.com/cpu/
该APP能够查看自己的安卓手机支持什么编解码器: https://github.com/Parseus/codecinfo/releases
目前有三种方案:

我们三
1、国产软件 风云格式工厂
2、国外软件 FFmpeg media encoder
3、termux运行Linux+ffmpeg
termux是一款在Android系统上运行的终端仿真器和Linux环境应用程序,其特点在于无需root权限即可运行。该应用自动安装最小化的基本系统…抄百度的。

双击放大
CPU软编:这三款软件都可以支持“-c:v libx264 -crf 24”,没问题。
GPU硬编:有风云格式工厂和termux。但前者只能固定码率压缩。
GPU硬编+“恒定画质参数”:暂时只有termux。
手机GPU硬件编码器名称:“h264_mediacodec”、“hevc_mediacodec”
如图,termux安装完ffmpeg后,输入
“ffmpeg -i /storage/emulated/0/文件夹名称/Video_1.mp4 -c:v hevc_mediacodec -global_quality 25 -y /storage/emulated/0/文件夹名称/Video_2.mp4”
也就是完整的FFmpeg参数和文件路径,即可开始压缩。
如果遇到网络问题,输入“pkg i ffmpeg”后下载速度极慢,可以先选国内镜像“termux-change-repo”、“pkg update”,termux网上教程不少,搜一下就有。
不是很熟手机压缩,“-global_quality”这个质量控制参数是我猜的()
本文结束——本文结束——

堂堂完结!…
