开源一套视频处理工具链

25 天前
 Lychee0

基本概念

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

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

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

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

import vapoursynth as vs
from vapoursynth import core

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

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

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

超分辨率

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

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

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

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

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 模型了,它有完整的类型提示

容器化

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

vs-playground 提供了打包好的环境,以及提供了基于 Juptyer 的 Web IDE

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

分布式

不过,单机压制速度还是太慢了,所以我们构建了一个并行压制的最小实现 FinalRip

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

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

全自动追番

构建了上面的工具链,老二刺螈初心还是不能忘,所以我们还开源了一个全自动追番工具 AnimePipeline

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

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

我们开源了一个简单的 LLM 动漫翻译字幕工具 yuisub ,它提供了自动生成双语 ASS 特效字幕的 API ,也可以作为 cli 使用

结语

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

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

下面是所有提及的仓库:

4516 次点击
所在节点    程序员
42 条回复
jalena
25 天前
我其实更关心哪里能搞到片源
Lychee0
25 天前
@jalena 加入 pt 大家庭)需求不大的话看看 bt 就好
1423
24 天前
太专业了, 门槛有点高
SVFITeam
24 天前
很好用的 ccrestoraton ,使我牛牛旋转
laiyibeimeishi
24 天前
看完了,还是得整个 nas 啊
GeekGao
24 天前
下载的话,bt 也可以搞到大多数蓝光片源。
假如我搞到了高清片源那:
“通过 SISR (Single Image Super-Resolution) 或者 VSR (Video Super-Resolution) 技术,我们可以轻松 Enhance 视频”

的目的是啥?
importmeta
24 天前
希望未来能对标小丸工具箱和夏娜编码器
Lychee0
24 天前
@GeekGao
- 新电影/电视剧真 4K 比较多。bt 拿到 4K BD 或者流媒体源难度也很低,这时候确实没必要 SR ,是一个纯粹的压制问题了
- 老片的 4K BD 很可能是后发行 BD 随意 upscale 上的,也就是所谓的假 4K
- 对于动漫,现在的原生分辨率(等效)甚至可能没有 1080p ,普遍 720p-880p

SR 在这里只是扮演一个滤镜的角色,你也可以顺便干点别的 low level vision 任务,比如补帧
Lychee0
24 天前
@importmeta hhh 谢谢,不过小丸夏娜是一个图形化的 ffmpeg 封装,这里更关注 ffmpeg 之外的事情
GeekGao
24 天前
@Lychee0 soga
kiduu
24 天前
请教一下这个字幕对于日语番剧的翻译准确度怎么样,而且我看还有 bangumi 的相关设置,是不是已经做好了角色名称固定为 bangumi 的 wiki 。纯粹好奇,以前用的 AI 翻译很多时候牛头不对马嘴的。
Lychee0
24 天前
@kiduu
是的,会爬取 bangumi 的角色中日罗马音,和内容简介,具体可以看生成的 prompt
最近用它完整看过两季番剧,人名方面没啥大问题,但因为是英字翻过去的--英字本来就翻译的不太行
所以我是主要看英字,瞟着看人名
ysc3839
24 天前
@jalena 动画的话 dmhy.org
不过基本只有 WEB-DL ,没有蓝光原盘。蓝光原盘估计得去 PT 站。
Lychee0
24 天前
@ysc3839
进了_2 后其实也发现看圆盘太麻烦,不如看压制组的(
更多时候当素材站拿圆盘了
k9982874
24 天前
压制普通用户用菠萝就足够了
xzg1993
24 天前
事实上作为 pter ,我们可以很轻松获取到原盘以及各大压制组压制的视频,但是对于普通用户来说,这个问题就比较棘手了。
--------------------------------------------------------------------------
小白不懂,请问 pter 是啥职位,为啥能接触到原盘嘞?
ohoh
24 天前
@xzg1993 PT er, “种马”
cs328
24 天前
古老的玩家
Lychee0
24 天前
@xzg1993
盗版小团体(雾
自行搜索 private tracker 或者某贴吧
chesha1
24 天前
看到标题吓我一跳,我还以为有大神做了个非编软件或者 ffmpeg 之类的东西

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1084071

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX