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 需要供应用程序访问的文件

端口

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

bash 复制代码
# 查看端口占用
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 更快捷

bash 复制代码
# 新建文件夹 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 文件

yaml 复制代码
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

然后执行下面的命令

bash 复制代码
# 新建文件夹 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 上。请根据自己的网络选择下载

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

shell 复制代码
# 进入 mkvtoolnix 目录
cd /volume1/docker/mkvtoolnix

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

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

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

shell 复制代码
# 将字库从群晖拷贝到容器内
docker cp ./simsun.ttc mkvtoolnix:/usr/share/fonts/

# 进入容器
docker exec -it --user root mkvtoolnix /bin/sh
  
# 扫描字体目录并生成字体信息的缓存  
fc-cache -vf
  
# 查看系统内所有中文字体及字体文件的路径  
fc-list :lang=zh

接下来可以重启容器

shell 复制代码
# 重启容器
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

相关推荐
杨浦老苏3 小时前
开源音乐管理软件Melody
docker·群晖·多媒体
杨浦老苏5 小时前
面向npm的实时仪表板Dashly
网络·docker·群晖·导航
JunLan~7 小时前
Docker 部署 GLPI(IT 资产管理软件系统)
运维·docker·容器
特立独行的猫a8 小时前
使用 Docker(Podman) 部署 MongoDB 数据库及使用详解
数据库·docker·podman
LUCIAZZZ10 小时前
基于Docker以KRaft模式快速部署Kafka
java·运维·spring·docker·容器·kafka
特立独行的猫a14 小时前
Golang 应用的 Docker 部署方式介绍及使用详解
开发语言·docker·golang
康世行15 小时前
Windows环境下MaxKB大模型 Docker部署图文指南
windows·docker·容器
程序员石磊1 天前
学术总结Ai Agent中firecrawl(大模型爬虫平台)的超简单的docker安装方式教程
人工智能·爬虫·docker
司江龙2 天前
centos7 配置国内镜像源安装 docker
运维·docker·容器
西木Qi2 天前
Docker之Dockerfile
docker