这是一个创建于 1380 天前的主题,其中的信息可能已经有所发展或是发生改变。
GitHub
QuickTime-ASS
大概原理
- ScriptingBridge 获取播放时间、部分播放信息
- Accessibility 获取播放器窗口位置、大小、暂停继续、进度条移动
- libass 为视频时间生成对应的图片
- Metal 显示图片
- 最后把一个透明的窗口 覆盖在播放器上(IINA 弹幕最早期就是这么实现的)
缺陷 (部分可能无法修复)
- 字幕内容 覆盖播放器 UI
- 播放时调整视频窗口大小 字幕内容无法实时缩放
- 获取播放时间 然后生成字幕(视字幕的复杂程度) 会有一些延迟
- 限制 30fps 避免过高 CPU 占用
- 各种限制 导致动画字幕性能略差
- 尝试过使用 Metal 、Accelerate 优化字幕图片生成 一顿操作反向优化(
- libass 本体好像只支持 ass 格式字幕 其他格式的没测试过
- libass 默认使用 CoreText 加载字体 没研究出来如何编译一个通用版本但是使用 fontconfig 的 libass (在 IINA 里借了个 Universal 的 libass)
食用方式
- 打开 app 授予 Accessibility(无障碍) 权限
- QuickTime Player 打开一个视频 (保证视频窗口在第一响应)
- 点击右上角图标 “Select Subtile” 选择字幕文件
- 回到播放器就能获得一层字幕了
1 条回复 • 2021-02-19 20:11:22 +08:00
|
|
1
1002xin 2021-02-19 20:11:22 +08:00
不错,支持一下,不过不怎么用 QuickTime 了
|