开源一套视频处理工具链

Lychee0 · 2024-10-27 22:41:19 · 198 次点击
### 基本概念

前段时间,影视剧风被下架的视频,讨论了国内流媒体平台画质和码率过度压缩的问题,在站内也有不少讨论。

![image]( https://i.fshex.co/C78EAePF.jpeg)

事实上作为 *pter*,我们可以很轻松获取到原盘以及各大压制组压制的视频,但是对于普通用户来说,这个问题就比较棘手了。

对于一些 VR 设备来说,我们甚至期望视频能有 4k+ 的分辨率,以获得更好的观影体验。

- 压制也是一个小圈子,目前社区拥抱的技术栈普遍是 VapourSynth + FFmpeg(x264/x265/AV1...)
- 这里不介绍视频编码器的参数,只涉及 VapourSynth ,你可以把他当成一个 Python library ,以下我们简称为 vs

让我们来压制第一个视频!别担心,后面我们会提供全 Docker 化的解决方案,毕竟配环境总是令人痛苦万分的 lol

```python
import vapoursynth as vs
from vapoursynth import core

clip = core.bs.VideoSource(source="s.mkv")
clip.set_output()
```

接下来,我们用 `vspipe` 来执行这个脚本,pipe 到 ffmpeg 开始压制

```bash
vspipe script.py - | ffmpeg -i - -vcodec libx265 -crf 16 output.mkv
```

### [超分辨率]( https://github.com/TensoRaws/ccrestoration)

- 超分辨率( Super-Resolution )也是 low level vision 领域的一个重要研究方向 ~~(灌水重灾区)~~,目前也有不少开源项目,社区模型( weights )也[非常丰富]( https://openmodeldb.info/)

通过 SISR (Single Image Super-Resolution) 或者 VSR (Video Super-Resolution) 技术,我们可以轻松 Enhance 视频

不过这个方向并没有 huggingface 那种方便的 lib ,vs 社区里的一些方案也并不是那么灵活

所以我们开源了 [ccrestoration]( https://github.com/TensoRaws/ccrestoration),一个基于纯 PyTorch 的 SR 推理库,依赖干净,~~没有 MMCV~~,设计上参考了 BasicSR 和 huggingface Transformers 。通过自定义配置,可以轻松 online load 各种各样的社区模型

当然,它也支持 vs ,你可以直接在 vs 脚本里调用它

```python
import vapoursynth as vs
from vapoursynth import core

from ccrestoration import AutoModel, BaseModelInterface, ConfigType

model: BaseModelInterface = AutoModel.from_pretrained(
    pretrained_model_name=ConfigType.RealESRGAN_APISR_RRDB_GAN_generator_2x
)

clip = core.bs.VideoSource(source="s.mp4")
clip = core.resize.Bicubic(clip=clip, matrix_in_s="709", format=vs.RGBH)
clip = model.inference_video(clip)
clip = core.resize.Bicubic(clip=clip, matrix_s="709", format=vs.YUV420P16)
clip.set_output()
```

现在,我们可以自由地调用相当多的 SR 模型了,它有完整的类型提示

### [容器化]( https://github.com/TensoRaws/vs-playground)

2024 年了,不搞 Docker 怎么行呢? AMD ROCm 甚至已经支持了 WSL2 Docker ,让我们把上面的环境打包吧~

[vs-playground]( https://github.com/TensoRaws/vs-playground) 提供了打包好的环境,以及提供了基于 Juptyer 的 Web IDE

你可以直接在浏览器里写 vs 脚本,在线预览任意一帧,调整参数,开始压制

![vsplayground001]( https://raw.githubusercontent.com/TensoRaws/.github/refs/heads/main/vsplayground001.png)

### [分布式]( https://github.com/TensoRaws/FinalRip)

不过,单机压制速度还是太慢了,所以我们构建了一个并行压制的最小实现 [FinalRip]( https://github.com/TensoRaws/FinalRip)

![FinalRip]( https://raw.githubusercontent.com/TensoRaws/.github/refs/heads/main/finalrip.png)

通过简易的 Dashboard ,你可以轻松分布式执行你在 vs-playground 里写好的脚本

FinalRip 会把视频切成多个 clip ,接着送到队列里,等待 worker 消费,最后合并输出。~~当然现在还是实验阶段,API 写的也很糙~~

### [全自动追番]( https://github.com/TensoRaws/AnimePipeline)

构建了上面的工具链,老二刺螈初心还是不能忘,所以我们还开源了一个全自动追番工具 [AnimePipeline]( https://github.com/TensoRaws/AnimePipeline)

![AnimePipeline]( https://raw.githubusercontent.com/TensoRaws/.github/refs/heads/main/animepipeline.png)

配置 RSS ,自动下载任务送到 FinalRip ,然后上传到 Telegram 等,方便分享给大家

- 这是跑完一季后的结果,当然只是一个示例,x265 8bit 显然是不合适的

![animepipeline001]( https://raw.githubusercontent.com/TensoRaws/.github/refs/heads/main/animepipeline001.png)

可是,新番很多都是英肉,人名看不懂咋办啊?幸好现在有 LLM ,结合 bangumi 信息,翻译质量还是不错的。

我们开源了一个简单的 LLM 动漫翻译字幕工具 [yuisub]( https://github.com/TensoRaws/yuisub) ,它提供了自动生成双语 ASS ~~特效~~字幕的 API ,也可以作为 cli 使用

![llmsub01]( https://raw.githubusercontent.com/TensoRaws/.github/refs/heads/main/llmsub01.png)
![llmsub02]( https://raw.githubusercontent.com/TensoRaws/.github/refs/heads/main/llmsub02.png)

### 结语

这套工具链目前还处于早期开发阶段,如果你有任何问题,欢迎提出 issue

近期会完善 SR 推理库,支持更多的网络结构

下面是所有提及的仓库:
- https://github.com/TensoRaws/ccrestoration
- https://github.com/TensoRaws/vs-playground
- https://github.com/TensoRaws/FinalRip
- https://github.com/TensoRaws/AnimePipeline
- https://github.com/TensoRaws/yuisub
举报· 198 次点击
登录 注册 站外分享
9 条回复  
jalena 小成 2024-10-27 22:53:20
我其实更关心哪里能搞到片源
1423 小成 2024-10-27 23:25:43
太专业了, 门槛有点高
SVFITeam 初学 2024-10-27 23:28:59
很好用的 ccrestoraton ,使我牛牛旋转
laiyibeimeishi 小成 2024-10-28 00:18:14
看完了,还是得整个 nas 啊
GeekGao 小成 2024-10-28 01:29:45
下载的话,bt 也可以搞到大多数蓝光片源。
假如我搞到了高清片源那:
“通过 SISR (Single Image Super-Resolution) 或者 VSR (Video Super-Resolution) 技术,我们可以轻松 Enhance 视频”

的目的是啥?
importmeta 初学 2024-10-28 01:31:12
希望未来能对标小丸工具箱和夏娜编码器
kiduu 初学 2024-10-28 04:18:04
请教一下这个字幕对于日语番剧的翻译准确度怎么样,而且我看还有 bangumi 的相关设置,是不是已经做好了角色名称固定为 bangumi 的 wiki 。纯粹好奇,以前用的 AI 翻译很多时候牛头不对马嘴的。
ysc3839 小成 2024-10-28 04:51:53
@jalena 动画的话 dmhy.org
不过基本只有 WEB-DL ,没有蓝光原盘。蓝光原盘估计得去 PT 站。
k9982874 小成 2024-10-28 08:40:04
压制普通用户用菠萝就足够了
返回顶部