菜姬 发表于 2021-4-25 18:37:46

Assrender:基于libass的AVS/VS字幕滤镜

本帖最后由 菜姬 于 2021-9-22 18:54 编辑

播放器用的滤镜转这里:AssFilterMod: 基于libass的DirectShow滤镜
本贴的滤镜是用来压制内嵌字幕的

VSFilter系的字幕滤镜包括(VSFilter, xy-VSFilter, VSFilterMod)都仅限于Windows平台,而且代码臃肿不堪难以维护,所以现在跨平台的播放器(mpv、VLC)基本都采用的libass
libass在发布0.15.0后可用性大大提高 大部分和VSFilter系能保持一致了
另外libass的一个显著的优点就是不再使用GDI渲染文字了,而是使用FreeType/DirectWrite,可以正常的显示竖排的思源黑体 思源宋体 不会像VSFilter系那样竖排横排大小不一致
所以现在将字幕滤镜从VSFilter系切到基于libass的滤镜是一个不错的选择

assrender是基于libass的AVS(+)滤镜,目前pinterf正在维护他的一个fork
我基于pinterf的fork把assrender移植到了Vapoursynth上
assrender 相比VSFilter系 的优点除了libass带来的有点以外 还支持了更多的视频格式(以下是Vapoursynth版的,AVS+支持的还更多一点)

[*]YUV420P8
[*]YUV420P10
[*]YUV420P12
[*]YUV420P14
[*]YUV420P16
[*]YUV422P8
[*]YUV422P10
[*]YUV422P12
[*]YUV422P14
[*]YUV422P16
[*]YUV444P8
[*]RGB24
[*]YUV444P10
[*]YUV444P12
[*]YUV444P14
[*]YUV444P16
[*]RGB48
[*]Gray8
[*]Gray16
和色彩空间

[*]Rec2020, BT.2020
[*]Rec709, BT.709
[*]Rec601, BT.601
[*]PC.709
[*]PC.601
[*]TV.fcc, PC.fcc
[*]TV.240m, PC.240m
以及支持从文件夹临时加载字体


Vapoursynth上assrender的用法为
core.assrender.TextSub(clip clip, string file, )除了移植之外我也给assrender打了两个小patch

[*]如果没有指定字幕文件的编码的话 会检测一下BOM 最后回落到UTF-8
[*]Apache553大佬给libass的PR 按需加载字体 这样就不用每次用libass都加载系统字体文件夹的所有字体了

另外我在Ubuntu20.04上、MSYS+Mingw-w64、cmake+vcpkg上也都测试过了,都可以正常编译和使用
每次发布的assrender二进制会根据libass的版本分为两个版本 一个跟进最新commit 一个为最新的release的版本 当然都打了@Apache553的patch
同时,除了提供assrender.dll外 还会提供wangqr维护的Aegisub使用的ass.dll,保证在Aegisub中预览和压制时显示效果时一致的。

2021/05/02: libass版本跟随上游更新至0.15.1 基于0.15.0修复了若干bug,以及几个和VSFilter系的兼容问题,按需加载字体的patch也被合并了,已经基本可以作为一个长期稳定版用了

2021/09/22: 又更新了几个版本,更新日志详见github
项目开源网址:https://github.com/Masaiki/assrender
原仓库:https://github.com/pinterf/assrender

孤雨独火 发表于 2021-4-25 18:46:25

pf的xy-VSFilter分支也挺活跃的{:4_688:}我基本一直用它的

菜姬 发表于 2021-4-25 18:51:03

孤雨独火 发表于 2021-4-25 18:46
pf的xy-VSFilter分支也挺活跃的我基本一直用它的

确实,最近还更新了VTT的支持

楚轩 发表于 2021-4-25 20:52:03

有没有mpcbe可用的插件

菜姬 发表于 2021-4-25 21:07:33

楚轩 发表于 2021-4-25 20:52
有没有mpcbe可用的插件

嗯… 想要让mpcbe用 要么照着vsfilter实现接口暴露出来
要么mpcbe主动适配
说实话 可能性都不大
或许到hc那里提个issue请求适配更靠谱一点(

楚轩 发表于 2021-4-26 08:53:33

菜姬 发表于 2021-4-25 21:07
嗯… 想要让mpcbe用 要么照着vsfilter实现接口暴露出来
要么mpcbe主动适配
说实话 可能性都不大


hc'和be不差不多吗 为啥hc会主动适配{:4_675:}

菜姬 发表于 2021-4-26 12:24:54

本帖最后由 菜姬 于 2021-4-29 21:38 编辑

楚轩 发表于 2021-4-26 08:53
hc'和be不差不多吗 为啥hc会主动适配
hc现在在github上维护,比较容易联系上吧

小笠原翔子 发表于 2021-4-26 13:13:34

看到yuv444p10就气.....盒子播放器播不了

lanchuyu 发表于 2021-4-26 13:18:48

这代码加到哪里不太会用

菜姬 发表于 2021-4-26 14:25:00

lanchuyu 发表于 2021-4-26 13:18
这代码加到哪里不太会用

这个是给制作字幕的人用的
页: [1] 2 3 4 5 6
查看完整版本: Assrender:基于libass的AVS/VS字幕滤镜