🎞 字幕文件批量改名工具
A Tool for Batch Rename Subtitle Files to Match Video Names with One Click.
(Read this in other languages: English)
原因? 如果视频和字幕文件名一致,任何视频播放器都可以自动载入字幕。
目的? 重命名外挂字幕文件名,使之与视频文件名对应。
SubRenamer 专注于字幕文件改名,简单易用。
对于大多数视频与字幕文件,您仅需将其拖入程序,即可被自动精准地识别,一键改名,省去了普通改名软件较为繁杂的设置操作。
点击以下链接下载最新版本:
Windows (x86) | macOS (M1) | Linux (x86) |
可在 Release 页面找到历史版本和更新日志。
- 自动匹配:自动识别算法,一键匹配
- 拖拽导入:拖拽快速导入文件及文件夹
- 多语言匹配:支持视频字幕多语言匹配(一对多映射)
- 多语言筛选:导入前自动检测并筛选指定语言的字幕
- 多匹配规则:对于复杂的文件名格式,支持手动匹配
- 手动匹配编辑器:自定义规则,支持简单通配符
- 正则表达式编辑器:包含正则表达式匹配测试工具
- 匹配微调:支持对匹配结果进行微调
- 改名命令:右键快速复制 Linux 改名命令到剪贴板
- 字幕备份:改名前自动备份字幕文件
- 追加后缀:支持在文件扩展名前添加自定义后缀
- 文件识别:通过文件扩展名自动区分视频和字幕,支持自定义
- 快捷键:支持快捷键操作,提高效率
- 夜间模式:支持夜间模式,跟随系统切换
- 窗口置顶:支持窗口置顶,方便操作
- I18n:支持多语言切换,包含中文、英文等
- 跨平台:支持 Windows、macOS、Linux
- 体积小:仅 15MB 左右
Important
重制说明:SubRenamer 第一版于 2019 年发布,当时使用 WinForm 进行开发,仅支持 Windows 平台。2024 年 SubRenamer 完成重制发布 v2.0 版本,采用全新技术栈 AvaloniaUI + .NET 8 开发,支持跨平台,可以在 Windows、macOS、Linux 上原生运行(不是 Electron.js)。
匹配编辑 | 匹配规则自定义 |
---|---|
手动匹配规则编辑器 | 正则表达式规则编辑器 |
---|---|
夜间模式 | 字幕语言筛选 |
---|---|
右键菜单 | 快捷键支持 | 设置界面 |
---|---|---|
拖拽导入文件
2024-04-13.14.56.44.webm
拖入的视频和字幕文件如果处于不同的文件夹内,执行改名只会将字幕文件复制到视频所在的文件夹中,不会改动原始字幕文件,所以无需备份。
反之,如果视频和字幕文件名处于相同的文件夹内,执行改名会直接修改字幕文件名(设置可以勾选启用备份,将原始字幕文件备份到 SubBackup 目录内)。
改名后的字幕文件名将与视频文件名一致。
自动匹配模式通过比对文件名之间的差异部分 (diff) 来确定集数 (extract),并根据集数自动关联视频文件和字幕文件 (mapping),以实现自动匹配。
为实施自动匹配,需导入至少两个文件名格式一致的视频文件和两个字幕文件。
- 算法代码:SubRenamer/Matcher(入口函数位于 Matcher.cs 文件内)
- 单元测试代码:SubRenamer.Tests
- 测试用例数据:TopLevelTests.json(其中包含了自动匹配算法的示例数据)
自动匹配模式可能在复杂的文件名格式下失效,此时可切换至手动匹配模式,手动模式允许你自定义规则(支持简单通配符和正则表达式)。程序提供一个简单的编辑器,以便你可以快速地编写匹配规则。
macOS 无法打开,提示已损坏
网上可以找到很多解决的方法,这里提供一个方法,在终端中输入以下命令:
sudo xattr -d com.apple.quarantine /Applications/SubRenamer.app
原因是没有经过苹果开发者签名,macOS 会提示已损坏,而注册开发者账号需要 99 美元/年。
在 Linux Wayland 桌面环境没有缩放?
这是一个上游问题,AvaloniaUI 在 Wayland 桌面环境下缩放比例可能不准确,导致文字很小,可以在启动时设置环境变量手动设置缩放比例。
AVALONIA_SCREEN_SCALE_FACTORS="eDP-1=2;" ./SubRenamer
- AvaloniaUI/Avalonia#9390
- https://github.com/AvaloniaUI/Avalonia/wiki/Configuring-X11-per-monitor-DPI
SubRenamer 支持多语言切换,目前支持的语言有:
- English
- 简体中文 (Simplified Chinese)
- 繁體中文 (Traditional Chinese)
- 日本語 (Japanese)
语言文件位于:SubRenamer/Assets/Lang 目录内,可以通过编辑 XAML 文件来添加或完善语言翻译。我们期待你的参与,欢迎提交 PR 添加更多语言翻译。
可在 issues 页 反馈。
建议使用 JetBrains Rider 或 Visual Studio 2022 打开项目。
Windows
- Visual Studio 2022, including .NET 8 & Desktop development with C++ workload.
- Alternatively, you can install JetBrains Rider to build the project. (Recommended).
Fedora (36+)
sudo dnf group install "C Development Tools and Libraries" "Development Tools"
sudo dnf install dotnet-sdk-8.0 libicu-devel cmake zlib-devel -y
Ubuntu (20.04+)
sudo apt-get install dotnet-sdk-8.0 libicu-dev cmake zlib1g-dev -y
macOS (12+)
# Install Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Install xcode command line tools
xcode-select --install
# Install dependencies
brew install dotnet-sdk8 icu4c cmake zlib
dotnet test SubRenamer.Tests --verbosity normal
单元测试代码位于 SubRenamer.Tests 目录内,推荐使用 Rider 内置的可视化工具执行测试和查看测试结果。
测试数据
TopLevelTests.json 文件存放了测试用例数据,包含各种各样的字幕和视频文件名列表用于测试匹配算法,欢迎提交 PR 添加更多测试用例,修改文件后执行单元测试命令即可查看测试结果。
每次代码提交将通过 GitHub Actions 自动执行单元测试,确保代码质量。
在 Win 平台,为了构建出单个包含静态链接依赖库的 exe 文件(无额外的动态链接 dll 依赖库文件),需要手动把 这几个 dll 文件 下载放到 native
目录内。然后添加环境变量 ENABLE_NATIVE_LIBS=true
再执行编译。
- https://github.com/qwqcode/SubRenamer/blob/main/.github/workflows/dotnet-desktop.yml
- AvaloniaUI/Avalonia#9503
- https://github.com/qwqcode/SubRenamer/blob/main/SubRenamer/SubRenamer.csproj
dotnet publish -r <RID> -c Release
# Build for Windows example
dotnet publish -r win-x64 -c Release
NSIS installer ~13MB size
pwsh ./publish.ps1
if you builder the installer with nsis, you can ignore upx compression, so you can get better startup performance.
- AOT 编译,单文件发布
- 多平台打包及分发
- 跨平台适配处理
- IoC 容器,依赖注入,MVVM,LINQ
- JSON 源生成器
- 多线程,纤程
- 全局异常捕获
- 错误日志反馈
- JSON 配置管理
- 版本管理,升级检查
- 用量统计
- GitHub API
- GitHub Actions CI/CD
- 单元测试
- 多语言,国际化
- HiDPI 支持
本项目采用 GPL-2.0 协议开源,详见 LICENSE 文件。