开源一套视频处理工具链

查看 31|回复 4
作者:Lychee0   
基本概念
前段时间,影视剧风被下架的视频,讨论了国内流媒体平台画质和码率过度压缩的问题,在站内也有不少讨论。

事实上作为 pter,我们可以很轻松获取到原盘以及各大压制组压制的视频,但是对于普通用户来说,这个问题就比较棘手了。
对于一些 VR 设备来说,我们甚至期望视频能有 4k+ 的分辨率,以获得更好的观影体验。
  • 压制也是一个小圈子,目前社区拥抱的技术栈普遍是 VapourSynth + FFmpeg(x264/x265/AV1...)
  • 这里不介绍视频编码器的参数,只涉及 VapourSynth ,你可以把他当成一个 Python library ,以下我们简称为 vs

    让我们来压制第一个视频!别担心,后面我们会提供全 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
    超分辨率
  • 超分辨率( Super-Resolution )也是 low level vision 领域的一个重要研究方向 (灌水重灾区),目前也有不少开源项目,社区模型( weights )也非常丰富

    通过 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 等,方便分享给大家
  • 这是跑完一季后的结果,当然只是一个示例,x265 8bit 显然是不合适的


    可是,新番很多都是英肉,人名看不懂咋办啊?幸好现在有 LLM ,结合 bangumi 信息,翻译质量还是不错的。
    我们开源了一个简单的 LLM 动漫翻译字幕工具 yuisub ,它提供了自动生成双语 ASS 特效字幕的 API ,也可以作为 cli 使用


    结语
    这套工具链目前还处于早期开发阶段,如果你有任何问题,欢迎提出 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

  • jalena   
    我其实更关心哪里能搞到片源
    Lychee0
    OP
      
    @jalena 加入 pt 大家庭)需求不大的话看看 bt 就好
    1423   
    太专业了, 门槛有点高
    SVFITeam   
    很好用的 ccrestoraton ,使我牛牛旋转
    您需要登录后才可以回帖 登录 | 立即注册

    返回顶部