找回密码
 立即注册
查看: 1626|回复: 26

mpv-font-loader: mpv脚本, 播放视频时自动加载字体

  • TA的每日心情
    郁闷
    2025-5-18 14:47
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    1

    主题

    9

    回帖

    0

    VC币

    中级会员

    Rank: 3Rank: 3

    积分
    3546
    wakou 发表于 2025-3-30 16:27:28 | 显示全部楼层 |阅读模式
    本帖最后由 wakou 于 2025-5-18 22:38 编辑

    这个脚本会在mpv启动时解析字幕文件并加载相关的字体, 设计来自yzwduck大佬的FontLoaderSub

    能够实现将字体放在一个文件夹下,实际观看视频时根据字幕文件按需加载

    原理是使用mpv的sub-fonts-dir参数, 为相关的字体在临时文件夹下创建一个软连接, 将sub-fonts-dir参数设置为这个文件夹


    关于在Windows下使用的特别说明

    本脚本的运行需要进行创建软链接的操作。但在Windows系统上,默认是无权限创建软链接的,因此需先取得权限。

    以下操作只在Win10上测试过,但Win11应该也可用相同步骤操作。

    ## 对于系统为家庭版,教育版等版本的

    1. 打开设置,进入【更新和安全】-【开发者选项】页面
    2. 打开开发人员模式

    ## 对于系统为专业版及以上版本的

    除了像家庭版那样开启开发人员模式外,还可选择为当前用户单独打开创建软链接权限。

    ### 通过gui操作

    1. 打开程序【本地安全策略】
    2. 在程序中进入【本地策略】-【用户权限分配】-【创建符号链接】
    3. 在【创建符号链接 属性】选项卡中,点击【添加用户或组】
    4. 输入你的账号名,点击【检查名称】,然后点击确定

    ### 通过脚本操作
    1. 下载我上传的"allowCreateSymbolicLink.ps1.zip"文件,解压后得到“allowCreateSymbolicLink.ps1”脚本
    2. 以管理员权限打开powershell, 输入"Set-ExecutionPolicy RemoteSigned"
    3. 执行"allowCreateSymbolicLink.ps1"脚本

    v0.5.1
    修复了某些情况下风格覆盖代码中解析字体错误的问题

    v0.5
    之前的版本在第一次扫描fc-subs.db文件后,会生成缓存文件,之后就不会在扫描fc-subs.db文件,因此后期新加入字体文件的话,脚本无法正确载入。
    该版本在检测到特定文件后,会重新扫描fc-subs.db文件。
    使用FontLoaderSub重新生成fc-subs.db文件后,在字体库文件夹下创建一个空的update.txt文件,脚本检测到该文件存在后会自动扫描fc-subs.db文件并更新缓存


    v0.4.2
    本次更新需要删除font-index文件重新生成
    1. 修复缺陷:字体库文件夹中存在子文件夹时,无法正常加载子文件夹中的字体


    v0.4

    1. 通过调用uchardet和libiconv实现了字幕文件编码的检测与转换, 需要根据不同系统下载不同版本
    2. 去除了对busybox的依赖, windows 现在不需要额外安装软件
    3. 优化性能, 减少解析fc-subs.db文件的耗时


    安装方法


    解压font_loader.conf.zip, 得到font_loader.conf, 修改font_loader.conf文件中fontDir配置的值为你自己字体库文件夹所在路径

    MPV
    • 找到mpv的设置文件夹, 将font_loader目录放置在scripts文件夹下
    • 将font_loader.conf文件放置在script-opts目录下, 修改font_loader.conf, 将fontDir的值改为用户存放字体文件的目录
    IINA
    IINA用户需要进入[设置]-[高级]菜单, 打开启用高级设置选项
    • 使用配置目录

      • 勾选使用配置目录, 并选择配置目录(下面以~/.config/iina/为例)
      • 在目录~/.config/iina/下新建文件夹scripts和script-opts
      • 将font_loader目录放置在scripts文件夹下, font_loader.conf文件放置在script-opts目录下
      • 修改font_loader.conf, 将fontDir的值改为用户存放字体文件的目录
    • 不使用配置目录

      • 不勾选使用配置目录, 以下操作假定脚本路径为~/mpv_script/font_loader
      • 在额外mpv选项栏中添加两个选项scripts, script-opts
      • 设置scripts选项的值为脚本所在路径, 即~/mpv_script/font_loader, 若需添加多个脚本, 则脚本路径以逗号,分割, 如~/mpv_script/font_loader,~/mpv_script/scriptA
      • 设置script-opts选项的值为font_loader-fontDir=字体目录,font_loader-fontIndexFile=customDir/font-index,font_loader-cacheDir=customDir1, 根据实际情况替换字体目录, customDir, customDir1的值


    注意事项

    1. 需要先在Windows上通过
    yzwduck大佬的FontLoaderSub程序生成fc-subs.db文件
    2. mpv最低版本需要为0.36.0, 从该版本开始mpv才支持sub-fonts-dir参数
    3. 安装完成后初次打开mpv会解析fc-subs.db的内容,会卡1-2s,之后会生成一个索引文件,再次打开就不会卡了
    4. 字幕文件中标注的字体较多时(10个以上), 字幕使用新字体时会卡一下(自测只在Windows上出现此问题, 不明白为啥)


    打开本地安全策略

    打开本地安全策略
    2.png
    3.png

    允许执行脚本

    允许执行脚本

    font_loader-darwin-amd64-v0.5.1.tar.gz

    745.92 KB, 下载次数: 7

    适用于intel芯片的苹果电脑

    font_loader-darwin-arm64-v0.5.1.tar.gz

    752.79 KB, 下载次数: 9

    适用于Apple Silicon芯片(m1-m4)芯片的苹果电脑

    font_loader-linux-amd64-v0.5.1.tar.gz

    772.77 KB, 下载次数: 9

    font_loader-nochardet-v0.5.1.tar.gz

    11.79 KB, 下载次数: 6

    纯lua实现,无编码检测转换功能

    font_loader-windows-amd64-busybox-v0.5.1.tar.gz

    1.11 MB, 下载次数: 12

    font_loader.conf.zip

    208 Bytes, 下载次数: 15

    font_loader-windows-amd64-v0.5.1.tar.gz

    743.75 KB, 下载次数: 6

    allowCreateSymbolicLink.ps1.zip

    998 Bytes, 下载次数: 5

    评分

    参与人数 3活跃度 +3221 收起 理由
    PECO菌 + 666 很给力!
    liewhong + 555 赞一个!
    shadows + 2000

    查看全部评分

    回复

    使用道具 举报

  • TA的每日心情
    郁闷
    2025-5-18 14:47
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    1

    主题

    9

    回帖

    0

    VC币

    中级会员

    Rank: 3Rank: 3

    积分
    3546
    wakou  楼主| 发表于 2025-3-30 16:31:45 | 显示全部楼层
    没办法上传附件...没法发url....

    github.com/wakou/mpv-font-loader/releases/tag/v0.2
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2022-3-6 15:37
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    2

    主题

    374

    回帖

    42

    VC币

    荣誉会员

    Rank: 14Rank: 14Rank: 14Rank: 14

    积分
    143054

    活跃达人

    shadows 发表于 2025-3-30 17:42:00 | 显示全部楼层
    本帖最后由 shadows 于 2025-3-31 18:50 编辑
    Windows用户需要额外安装busybox

    可以用mp.get_property("platform")获取平台,然后运行不同的命令呗……
    我简单看,就是link和unlink需要

    我个人觉得windwos上用 https://github.com/Apache553/SubtitleFontHelper 会更好,基本上播放器都支持,字体加载也不会有卡顿延迟。并且效率也比mpv脚本高一些,不需要解析字幕
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-5-11 14:46
  • 签到天数: 185 天

    [LV.7]常住居民III

    2

    主题

    54

    回帖

    0

    VC币

    高级会员

    新手

    Rank: 4

    积分
    20852
    liewhong 发表于 2025-3-31 18:26:59 | 显示全部楼层
    wakou 发表于 2025-3-30 16:31
    没办法上传附件...没法发url....

    github.com/wakou/mpv-font-loader/releases/tag/v0.2

    已star等更新不要下载别的依赖的版本
    天命成君
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    20 分钟前
  • 签到天数: 90 天

    [LV.6]常住居民II

    0

    主题

    2

    回帖

    0

    VC币

    中级会员

    Rank: 3Rank: 3

    积分
    5129
    漂律 发表于 2025-3-31 22:18:23 | 显示全部楼层
    用这个加载字体简单一点https://github.com/hooke007/MPV_lazy/blob/main/portable_config/scripts/auto_sub_fonts_dir.lua
    回复

    使用道具 举报

  • TA的每日心情
    开心
    3 天前
  • 签到天数: 14 天

    [LV.3]偶尔看看II

    0

    主题

    2

    回帖

    0

    VC币

    注册会员

    Rank: 2

    积分
    1329
    lisbt 发表于 2025-4-22 23:25:48 来自手机 | 显示全部楼层
    漂律 发表于 2025-3-31 22:18
    用这个加载字体简单一点https://github.com/hooke007/MPV_lazy/blob/main/portable_config/scripts/auto_su ...

    这个跟https://github.com/dyphire/mpv-config/blob/master/scripts/sub-fonts-dir-auto.lua 哪个更好用
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-5-11 14:46
  • 签到天数: 185 天

    [LV.7]常住居民III

    2

    主题

    54

    回帖

    0

    VC币

    高级会员

    新手

    Rank: 4

    积分
    20852
    liewhong 发表于 2025-5-7 02:50:04 | 显示全部楼层
    本帖最后由 liewhong 于 2025-5-7 19:57 编辑

    不确定成功了没有

    1. font loader
    2. [font loader]

    3. stack traceback:
    4. C:/MPV-lazy/portable_config/scripts/font_loader/fc. lua:12: in function 'buildIndex'
    5. C:/MPV-lazy/portable_config/scripts/font_loader/main. lua:58: in main chunk
    6. [C]: at 0x7ff6243fd9d0
    7. [C]: at 0x7ff6243fc7a0

    8. cplayer]
    9. [cplayer]

    10. [save_global_props] 正在运行 全局属性保存恢复 模式1
    11. [font_loader] create base cache dir: C:/MPV-lazy/portable_config/fontCache/
    12. Subprocess failed: init
    13. no fount index cache file, build index from fc-subs.db
    14. [font_loader] open font cache db file: fc-subs.db
    15. font_loader
    16. [font_loader]
    17. [font_loader]
    18. [font_loader]
    19. [font_loader]
    20. [font_loader]
    21. [font_loader] Lua error: C:/MPV-lazy/portable_config/scripts/font_loader/fc. lua:12: fc-subs. db: No such file or directory
    22. [cplayer] Resuming playback. This behavior can be disabled with -- no-resume-playback.
    23. (heve 1920x1080 23.976 fps) [default]
    24. (flac 2ch 48000 Hz) [default]
    25. isc.assº (ass) [external]
    26. [vd] Using hardware decoding (d3d11va-copy).
    27. [auto_profiles] Applying auto profile: vsync_auto
    28. [cplayer] A0: [wasapi] 48000Hz stereo 2ch float
    29. [cplayer] V0: [gpu-next] 1920x1080 p010

    30. O Video -- vid 1
    31. O Audio -- aid 1 -- alang jpn
    32. [cplayer] o Subs
    33. -- Sid 1 -- slang sc
    复制代码
    天命成君
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-5-11 14:46
  • 签到天数: 185 天

    [LV.7]常住居民III

    2

    主题

    54

    回帖

    0

    VC币

    高级会员

    新手

    Rank: 4

    积分
    20852
    liewhong 发表于 2025-5-7 02:53:17 | 显示全部楼层
    天命成君
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    15 小时前
  • 签到天数: 691 天

    [LV.9]以坛为家II

    1

    主题

    7

    回帖

    0

    VC币

    白金会员

    Rank: 12Rank: 12Rank: 12

    积分
    55021
    ausar 发表于 2025-5-7 09:34:33 | 显示全部楼层
    这个用处是什么? mpv.conf里面加一个sub-font-provider = fontconfig不就行了吗
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    20 分钟前
  • 签到天数: 90 天

    [LV.6]常住居民II

    0

    主题

    2

    回帖

    0

    VC币

    中级会员

    Rank: 3Rank: 3

    积分
    5129
    漂律 发表于 2025-5-10 11:23:05 | 显示全部楼层
    lisbt 发表于 2025-4-22 23:25
    这个跟https://github.com/dyphire/mpv-config/blob/master/scripts/sub-fonts-dir-auto.lua 哪个更好用 ...

    功能完全一样。MPV_lazy里的更简短一些。
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    快速回复 返回顶部 返回列表