Docker版MKVtoolnix的安装及中文显示

本文是应网友 kkkhi 要求折腾的,只研究了 MKVtoolnix 的安装及中文显示,未涉及到软件的使用;

什么是 MKVtoolnix ?

MKVToolnix 是一款功能强大的多媒体处理工具,用于在 Linux、其他 Unix 系统和 Windows 上创建、修改和检查 Matroska(MKV) 文件的工具集合软件。

所有平台的下载包,都可以在这里找到:https://mkvtoolnix.download/downloads.html

本文中安装中文字体用到了两种方法:

  1. 在线安装:通过设置环境变量 ENABLE_CJK_FONT 实现在线安装,这种方式对网络有要求,如果你采用这种方式安装失败的话,可以考虑离线方式;
  2. 离线安装:从网上单独下载字库,并将字库文件拷入容器内;

安装

在群晖上以 Docker 方式安装。

在注册表中搜索 mkvtoolnix ,选择第一个 jlesage/mkvtoolnix,版本选择 latest

本文写作时, latest 版本对应为 v24.09.1

容器名称

后续还有对容器的操作,所以我们约定容器名称为 mkvtoolnix

docker 文件夹中,创建一个新文件夹 mkvtoolnix,并在其中建两个子文件夹 configdata

文件夹 装载路径 说明
docker/mkvtoolnix/config /config 存放配置、状态、日志等
docker/mkvtoolnix/data /storage 需要供应用程序访问的文件

端口

本地端口不冲突就行,不确定的话可以用命令查一下

1
2
# 查看端口占用
netstat -tunlp | grep 端口号
本地端口 容器端口 描述
5800 5800 通过 Web 界面访问应用程序 GUI 的端口
5900 5900 通过 VNC 协议访问应用程序 GUI 的端口

如果不用 VNC,建议删掉

环境

可变
TZ 默认为 Etc/UTC,改设为 Asia/Shanghai
ENABLE_CJK_FONT 默认为 0,设置为 1 时,安装开源计算机字体文泉驿正黑。该字体包含大量的中文、日文和韩文字符。

更多环境变量的说明,请参考官方文档 :https://github.com/jlesage/docker-mkvtoolnix#environment-variables

  • 修改时区设置

  • 修改字体设置

这个参数,老苏之前介绍的 RcloneBrowserFileZillafirefox 都用到了。

这种安装字体的方式最简单,正常的字体安装过程如下

但是如果你的网络不科学的话,很可能会卡在字体安装环节

导致容器无法访问

如果一直卡在这一步,建议将 ENABLE_CJK_FONT 改为默认的 0,等容器起来之后,我们再用手动的方式,加载中文字体

命令行安装

命令行方式默认没有设置 ENABLE_CJK_FONT=1,而是直接采用了方式二的离线安装方式

如果你熟悉命令行,可能用 docker cli 更快捷

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 新建文件夹 mkvtoolnix 和 子目录
mkdir -p /volume1/docker/mkvtoolnix/{config,data}

# 进入 mkvtoolnix 目录
cd /volume1/docker/mkvtoolnix

# 运行容器
docker run -d \
--restart unless-stopped \
--name mkvtoolnix \
-p 5800:5800 \
-v $(pwd)/config:/config:rw \
-v $(pwd)/data:/storage:rw \
-e TZ=Asia/Shanghai \
jlesage/mkvtoolnix

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
version: '3'

services:
mkvtoolnix:
image: jlesage/mkvtoolnix
container_name: mkvtoolnix
restart: unless-stopped
ports:
- 5800:5800
volumes:
- ./config:/config:rw
- ./data:/storage:rw
environment:
- TZ=Asia/Shanghai

然后执行下面的命令

1
2
3
4
5
6
7
8
9
10
# 新建文件夹 mkvtoolnix 和 子目录
mkdir -p /volume1/docker/mkvtoolnix/{config,data}

# 进入 mkvtoolnix 目录
cd /volume1/docker/mkvtoolnix

# 将 docker-compose.yml 放入当前目录

# 一键启动
docker-compose up -d

运行

在浏览器中输入 http://群晖IP:5800 就能看到主界面

设置中文

左上角菜单 MKVToolNix GUI –> Preferences –> GUI –> Interface language

下拉找到 Chinese(Simplifed)

如果你采用了 ENABLE_CJK_FONT=1,并且字体已经下载成功

而如果采用的 ENABLE_CJK_FONT=0,则前面的是方框,表示缺中文字体

OK

目前没有任何变化,如果字体已经下载成功,可以直接启动容器,否则的话先不着急重启容器,还需要有中文字体才行

下载字体

随便找了 2 个字体,前者较大,文件在 gitee 上。后者较小,文件在 github 上。请根据自己的网络选择下载

  • Songti.ttc 下载地址:https://portrait.gitee.com/ishelo/QQZoneMood/raw/master/Songti.ttc
  • simsun.ttc 下载地址:https://github.com/Fangyh09/font-ttf/raw/master/simsun.ttc

simsun.ttc 为例,因为要用命令行进行操作,所以需要用 SSH 客户端连接到群晖,依次执行下面的命令

1
2
3
4
5
# 进入 mkvtoolnix 目录
cd /volume1/docker/mkvtoolnix

# 在当前目录中下载字体文件
wget https://github.com/Fangyh09/font-ttf/raw/master/simsun.ttc

当然你也可以在浏览器中下载完成后,再上传到群晖的软件目录中

接下来需要把字体文件拷入容器,并进入容器进行设置

1
2
3
4
5
6
7
8
9
10
11
# 将字库从群晖拷贝到容器内
docker cp ./simsun.ttc mkvtoolnix:/usr/share/fonts/

# 进入容器
docker exec -it --user root mkvtoolnix /bin/sh

# 扫描字体目录并生成字体信息的缓存
fc-cache -vf

# 查看系统内所有中文字体及字体文件的路径
fc-list :lang=zh

接下来可以重启容器

1
2
# 重启容器
docker restart mkvtoolnix

刷新下页面,你会发现界面已经是中文了

这种离线字体安装的方法,老苏在之前的 digiKamWebtopHandBrakeLibreOffice 中都有介绍

参考文档

MKVToolNix - 维基百科,自由的百科全书
地址:https://zh.wikipedia.org/wiki/MKVToolNix

MKVToolNix news – Matroska tools for Linux/Unix and Windows
地址:https://mkvtoolnix.download/

jlesage/mkvtoolnix - Docker Image | Docker Hub
地址:https://hub.docker.com/r/jlesage/mkvtoolnix

jlesage/docker-mkvtoolnix: Docker container for MKVToolNix
地址:https://github.com/jlesage/docker-mkvtoolnix