seal 中文文档 下载 App

MKV 重封装 — v1.12.0 起为什么默认把视频合并成 MKV 容器

v1.12.0 的一个隐性变化

v1.12.0 的 CHANGELOG 里有一行不显眼的条目:

Videos are remuxed to mkv even when download subtitle is disabled

翻译过来就是:即使你没选字幕,Seal 在 v1.12.0 起也会把下载合并后的视频重封装成 MKV 容器。

之前的版本(v1.11.x 及更早)默认合并成 MP4。这个改动对普通用户几乎无感知,但背后有技术权衡。

为什么从 MP4 改成 MKV

原因一:字幕轨兼容性

MP4 容器对字幕轨(尤其是 ASS/SSA 格式)的支持有限制,部分字幕轨在 MP4 里会被丢弃或兼容性变差。MKV(Matroska)是开源容器,支持几乎所有字幕格式,多字幕轨嵌入也更灵活。

v1.12.0 起 Seal 开始把视频元数据也写入文件(之前只写音频),MKV 能同时承载视频、音频、字幕、封面、章节、元数据等所有内容在一个文件里。

原因二:多流合并更干净

当下载的视频流和音频流来自不同容器(比如视频是 WebM VP9、音频是 M4A AAC),合并时需要做一次容器转封装(remux)。转封装本身是无损操作,只是换外壳——之前的做法是强制转成 MP4,现在改成强制转成 MKV 以提升兼容。

这对用户有什么影响

影响说明
文件扩展名变了之前下载的是 .mp4,现在是 .mkv
绝大多数播放器正常播放VLC、MX Player、KMPlayer、POTPlayer 等主流播放器完美支持 MKV
少数老旧播放器可能无法识别一些老系统自带的播放器或老版本 MP4 播放器打不开 MKV
分享到某些平台可能被拒绝微信、QQ 等 IM 平台对 MKV 的支持不如 MP4,分享前需要检查
体积不变remux 是无损操作,转容器不压缩、不增加/减少体积

如果你必须要 MP4

有两个办法:

  1. 用自定义命令模板:在模板里写 ffmpeg 参数 -c copy -f mp4 强制输出 MP4(但要注意字幕兼容性可能丢失)
  2. 手动转码:下载完后用 ffmpeg 或 HandBrake 把 MKV 转成 MP4(这个操作会重编码,可能损失画质)

v1.12.1 还修了一个相关 bug:之前即使禁用字幕,视频还是会被 remux 成 MKV——这是 v1.12.0 引入的预期行为(不是 bug),CHANGELOG 里也明确记录了。

如果你遇到某些设备打不开 MKV,推荐换播放器(比如 MX Player Pro 或 VLC),比硬转 MP4 更省事。