|
本帖最后由 菜姬 于 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, [string vfr, int hinting, float scale, float line_spacing, float dar, float sar, int top, int bottom, int left, int right, string charset, int debuglevel, string fontdir, string srt_font, string colorspace])
复制代码 除了移植之外我也给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
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
评分
-
查看全部评分
|