Skip to content

🎞 字幕文件批量改名和自动调轴工具 | Batch rename subtitle files to match video names with one-click.

License

Notifications You must be signed in to change notification settings

qwqcode/SubRenamer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

72c8024 · Jan 11, 2025
Sep 23, 2024
Jan 10, 2025
Jan 10, 2025
Jan 11, 2025
Jan 9, 2025
Mar 31, 2024
Apr 5, 2024
Jun 28, 2019
Nov 14, 2024
Jan 10, 2025
Sep 26, 2024
Mar 31, 2024
Mar 31, 2024

Repository files navigation

SubRenamer

🎞 字幕文件批量改名工具

A Tool for Batch Rename Subtitle Files to Match Video Names with One Click.

(Available languages: English、简体中文、繁體中文、日本語)

原因? 如果视频和字幕文件名一致,任何视频播放器都可以自动载入字幕。

目的? 重命名外挂字幕文件名,使之与视频文件名对应。

对比普通批量改名软件,有什么区别?

SubRenamer 专注于字幕文件改名,简单易用。

对于大多数视频与字幕文件,您仅需将其拖入程序,即可被自动精准地识别,一键改名,省去了普通改名软件较为繁杂的设置操作。

如何拥有 SubRenamer?

点击以下链接下载最新版本:

Windows (x86) macOS (M1) Linux (x86)

可在 Release 页面找到历史版本和更新日志。

如果下载速度慢,可以尝试网盘下载:蓝奏云 (密码: 233)

使用教程

【B站】「追番神器」真 · 番剧字幕一键重命名 自动化字幕文件批量改名工具程序

【小众软件】SubRenamer – 字幕批量重命名,自动匹配视频文件与字幕文件[Windows]

特性

  • 自动匹配:自动识别算法,一键匹配
  • 拖拽导入:拖拽快速导入文件及文件夹
  • 多语言匹配:支持视频字幕多语言匹配(一对多映射)
  • 多语言筛选:导入前自动检测并筛选指定语言的字幕
  • 多匹配规则:对于复杂的文件名格式,支持手动匹配
  • 手动匹配编辑器:自定义规则,支持简单通配符
  • 正则表达式编辑器:包含正则表达式匹配测试工具
  • 匹配微调:支持对匹配结果进行微调
  • 自动调轴:支持字幕时间轴和视频音频自动对齐(集成 FFsubsync + FFmpeg
  • 改名命令:右键快速复制 Linux 改名命令到剪贴板
  • 字幕备份:改名前自动备份字幕文件
  • 追加后缀:支持在文件扩展名前添加自定义后缀
  • 文件识别:通过文件扩展名自动区分视频和字幕,支持自定义
  • 快捷键:支持快捷键操作,提高效率
  • 夜间模式:支持夜间模式,跟随系统切换
  • 窗口置顶:支持窗口置顶,方便操作
  • 跨平台:支持 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 支持基于 FFsubsync + FFmpeg 的字幕时间轴自动调整功能(自动对齐字幕时间轴和视频音频)。

你需要额外下载 FFsubsync 程序,可在设置界面点击下载按钮自动安装:

image

调轴可以在改名后随即执行,勾选“调轴”选项,然后点击“一键改名”即可。

你也可以导入视频和字幕文件后,在列表中右键点击“执行字幕自动调轴程序”,只执行单独的调轴,而不改名。

image

如遇网络问题无法下载,可尝试 手动下载 并修改下载的文件名为 ffsubsync_bin.exe,然后放到 SubRenamer.exe 程序相同目录内。

你也可以通过网盘下载“智能调轴版”压缩包:蓝奏云 (密码: 233)

用户故事

请听 ABCDE 的故事(🌫️

(缩减版) 小A下载了一部新更的生肉番,又从字幕网站下载到了一套字幕文件,生肉番的 视频文件名 常常和 字幕文件名 不一致,看番时需要手动选定字幕,下次打开又得重新选定。小A拥有了 SubRenamer,从此改名交给他来做,终于可以安安心心看番啦。

(探究版) 小B今天下载了一部番剧,小B因不会他国语言从而需要找寻一套字幕。小B下载到了字幕,但因 字幕文件名 与 视频文件名 不相对应,播放器无法自动载入字幕文件,小B因每次都要手动选择字幕文件而烦恼万分。最终,小B实在受不鸟了,毅然决然决定修改文件名...... 所以问题来了,小B如何才能快速地修改字幕文件名,而不是一个一个慢慢地手动修改呢???

(激情版) 小C热爱学习,小C下载了一套100000000集的学习视频,提升自我人生价值的大好机会到了,准备今天晚上就开淦(darkbubi),可到了晚上,小C打开下载好的视频时却突然想起,自己什么也(bing)听(bu)不(xiang)懂(xue)(此刻的小C对于学习的热情瞬间熄灭)。可是突然!小C发现了 SubRenamer,下载一套字幕后,修改按钮一敲,100000000集的学习视频字幕文件顺利加载,小C对于学习的热情死(bu)灰(ke)复(neng)燃(di)

(慵懒版) 小D拥有了 SubRenamer 后,字幕文件改名的操作全交给 SubRenamer,省去了大量时间可以留给睡觉。

(蜜汁版) 小E . .o. 0。.O . 。o.

(稽智版) 小F选择重新下载内挂字幕的番剧 lol

FAQ

macOS 无法打开,提示已损坏

网上可以找到很多解决的方法,这里提供一个方法,在终端中输入以下命令:

sudo xattr -d com.apple.quarantine /Applications/SubRenamer.app

原因是没有经过苹果开发者签名,macOS 会提示已损坏,而注册开发者账号需要 99 美元/年。

在 Linux Wayland 桌面环境没有缩放?

这是一个上游问题,AvaloniaUI 在 Wayland 桌面环境下缩放比例可能不准确,导致文字很小,可以在启动时设置环境变量手动设置缩放比例。

AVALONIA_SCREEN_SCALE_FACTORS="eDP-1=2;" ./SubRenamer

多语言翻译 (I18n)

SubRenamer 支持多语言切换,目前支持的语言有:

  • English
  • 简体中文 (Simplified Chinese)
  • 繁體中文 (Traditional Chinese)
  • 日本語 (Japanese)

语言文件位于:SubRenamer/Assets/Lang 目录内,可以通过编辑 XAML 文件来添加或完善语言翻译。我们期待你的参与,欢迎提交 PR 添加更多语言翻译。

有 BUG?

可在 issues 页 反馈。

Stargazers over time

Stargazers over time

编译说明

建议使用 JetBrains Rider 或 Visual Studio 2022 打开项目。

Prerequisites

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 再执行编译。

Publish with NativeAOT

dotnet publish -r <RID> -c Release

# Build for Windows example
dotnet publish -r win-x64 -c Release

Builder the installer with NSIS

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 文件。