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

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

1

主题

9

回帖

0

VC币

中级会员

Rank: 3Rank: 3

积分
3564
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, 下载次数: 211

适用于intel芯片的苹果电脑

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

752.79 KB, 下载次数: 208

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

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

772.77 KB, 下载次数: 211

font_loader-nochardet-v0.5.1.tar.gz

11.79 KB, 下载次数: 203

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

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

1.11 MB, 下载次数: 223

font_loader.conf.zip

208 Bytes, 下载次数: 223

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

743.75 KB, 下载次数: 208

allowCreateSymbolicLink.ps1.zip

998 Bytes, 下载次数: 202

评分

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

查看全部评分

回复

使用道具 举报

1

主题

9

回帖

0

VC币

中级会员

Rank: 3Rank: 3

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

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

使用道具 举报

3

主题

406

回帖

42

VC币

至尊会员

Rank: 16Rank: 16Rank: 16Rank: 16

积分
205625

活跃达人

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脚本高一些,不需要解析字幕
回复

使用道具 举报

2

主题

54

回帖

0

VC币

高级会员

新手

Rank: 4

积分
20868
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等更新不要下载别的依赖的版本
天命成君
回复

使用道具 举报

0

主题

2

回帖

0

VC币

中级会员

Rank: 3Rank: 3

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

使用道具 举报

0

主题

10

回帖

0

VC币

中级会员

Rank: 3Rank: 3

积分
2461
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 哪个更好用
回复

使用道具 举报

2

主题

54

回帖

0

VC币

高级会员

新手

Rank: 4

积分
20868
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
复制代码
天命成君
回复

使用道具 举报

2

主题

54

回帖

0

VC币

高级会员

新手

Rank: 4

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

使用道具 举报

1

主题

8

回帖

0

VC币

白金会员

Rank: 12Rank: 12Rank: 12

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

使用道具 举报

0

主题

2

回帖

0

VC币

中级会员

Rank: 3Rank: 3

积分
19595
漂律 发表于 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里的更简短一些。
回复

使用道具 举报

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

本版积分规则

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