压制玄学2020 - 编码器压制速度作弊与反作弊
前言:
本文称为玄学是因为没有做严格证明,数据上缺乏基础支持,但实践能轻松再现此原理。
初始现象:x264 crf模式录屏,在不同环境下的cpu占用完全不一样,例如r5 2600 4Ghz,3200mhz CL15 2x8G下:
- x264录制Windows桌面占用6%,
- x264录制下图占用就达到12%,
- 57~60fps录制高动态高细节的占用达到了35%
- 考虑到视频压缩通常会占据100%的cpu算力,所以被迫降低的自然就是压制速度(fps)了
- 不同视频的压缩难度不一样,复杂度决定了压制速度
- 复杂度一般分为时域,空域两个复杂度,但根据简单与复杂的面积比例,所以应当在分出前景,背景两种范围
- 网络数据不能当做到了自己手上的实际压制速度,因为不知道测试用了什么视频,什么复杂度,GOP多长,分辨率,压制同时用了什么滤镜/渲染
- 使用复杂度低的视频得出编码占用/速度,对比其他复杂度高视频得出的编码占用/速度,最后只在表格上写1440p,1080p,720p,忽略掉没用的信息,就能得到显著的数据提升
- 使用草率处理背景的编码器,对比通用的编码器,喂背景简单的视频,得出手机能录4k 60fps,画质一样好的可再现结论
- 综合上地,将视频编码难度标准划分为简单,普通,困难;以下是例子,但建议评测业界或视频编码业界自己制定
- 将Closed GOP作为标准帧序列,规定I,i,P,B和b五种帧简单,普通,困难的使用方式:
简单--keyint <3xfps> --min-keyint <=keyint> --b-adapt 1 --bframes 5
普通--keyint <3xfps> --min-keyint <=kynt÷2> --b-adapt 2 --bframes 12
困难--keyint <4xfps> --min-keyint 1 --b-adapt 2 --bframes 16
- 将压缩难度划分为前景时域,前景空域,背景时域和背景空域四个复杂度,排列出简单,普通和困难的视频:
!简单 | 前景 | 背景 | !普通 | 前景 | 背景 | !困难 | 前景 | 背景 |
---|---|---|---|---|---|---|---|---|
空间复杂度 | 复杂 | 一般 | - | 复杂 | 复杂 | - | 一般 | 一般 |
时间复杂度 | 一般 | 一般 | - | 一般 | 一般 | - | 复杂 | 复杂 |
- 具体的计算强度应有跑分做指标,如cinebench,handbrake跑分
- 不应该刻意增加复杂度,因为大多数视频编码可能连普通都达不到
- 由于Netflix提供Sol_Levante的原盘在时域空域复杂度极高,而且还有4k 4:4:4的色彩空间。用它测量实际的编码速度和算法质量可以有效试水。还解决了低成本动漫的画面总因为容易压缩而看不出区别的漏洞,给这些地方截图和源作对比是看不出来区别的
那么就这样($^%&^)*_#=)(&%&(