V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xjbeta
V2EX  ›  macOS

过年写了个 app(玩具) QuickTime Player 看视频可以用外挂字幕了

  •  
  •   xjbeta · 2021-02-19 19:51:47 +08:00 · 1283 次点击
    这是一个创建于 1187 天前的主题,其中的信息可能已经有所发展或是发生改变。

    preview

    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
    1002xin
        1
    1002xin  
       2021-02-19 20:11:22 +08:00
    不错,支持一下,不过不怎么用 QuickTime 了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1184 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 18:39 · PVG 02:39 · LAX 11:39 · JFK 14:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.