通常建议在 Demux & Remux 之前进行扫盘,mkvtoolnix 以及 dgdemux 都可以进行。
主要判断信息有
- 是否是肉酱盘
- 是否默认的 mpls 是正确的影片(有些盘会坑人)
- mpls 是否包含了无效的mt2s(这种会导致操作失败),这种情况,需要 dgdemux,然后勾选 "skip first/last M2TS"
部分剧集原盘 dgdemux 需要开启 "strict playlist times" mkvtoolnix 可以自动处理,useac3to 等其他软件会产生包含长时间黑屏的文件出来。(m2ts本身包含,mlps中做了切割处理)
Demux作为音轨处理的前置步骤(部分原盘只有DGDemux能正常处理),目前获取的信息是再TrueHD方面 MakeMKV >= 1.15.4 = mlp > DGDemux (具体见 mlp 的 Readme)。
或许考虑使用mlp来专门处理肉酱TrueHD盘
一些肉酱盘 mkvtoolnix,eac3to,会有 glitching 的问题见issue(并不确认eac3to最新版是否解决了问题)。
目前发现肉酱盘的PCM也会出问题,ffmpeg报' Invalid PCM packet, data has size 2 but at least a size of 4 was expected',使用 Dgdemux 之后正常转换
一些 mpls 会作为 m2ts 的 index,m2ts 本身前后会包含一些 garbage,见issue,目前 DGDemux 可以通过勾选 'strict playlist' 来正确处理。
mkvtoolnix也会进行处理,但音轨出现了一些问题。
mkvtoolnix 本身有切割和合并功能,但这一块有问题,并且不会修复(mkvmerge can only cut in front of key frames. That's an intentional limitation, not a bug.),Issue in codeberg
故有切割合并需求还是使用 ffmpeg(命令行)
DVD
对于DVD,你可能需要使用MakeMKV,目前的其他软件对DVD都支持不太好,例如mkvtoolnix认不到章节以及字幕轨
常见的Demux软件有
- UsEac3to/eac3to
- DGDemux(现在作为默认的标准软件)
- tsMuxer
- FFmpeg
- gMKVExtractGUI/mkvextract
其中UsEac3to功能非常多,内含了转码功能,但其长期未更新,在部分音轨上可能出现问题。
其中eac3to可以检测到坏帧并进行输出,故可以用来判断原盘是否有问题
1 | [v02] Extracting video track number 2... |
前3者支持BD/mpls的demux(你可以选用现成的Remux来避免原盘带来的各种问题),不过DGDemux支持原盘,tsMuxer的mkv很多轨道都不认
后3者开源免费多平台(有Linux版本)
DGDemux有Linux版本,不过没有GUI
tsMuxer拆出的turehd是包含ac3核心的,FFmpeg不认(不能拿来制作DDP)
选择正确的mpls
不像二次元原盘可能一个m2ts就一集,乱七八糟的原盘mpls可能发生各种情况。建议关注下以及观察加载 m2ts 的规律。
一般可以看获取原盘处的BDinfo。
还有个比较便捷的办法,就是stream里看最大的m2ts,记住名字,然后通过文本编辑器打开mpls看这个m2ts出现在哪。(不过在有DGDemux的情况下,直接在里面看就好了)
mkvextract
一般建议用GUI,除非你用Linux
https://mkvtoolnix.download/doc/mkvextract.html
Examples
mkvextract inpu.mkv tracks 1:audio.thd
(需要自己确定轨道ID以及后缀)
Extracting both chapters and tags in their respective XML formats at the same time:
mkvextract movie.mkv chapters movie-chapters.xml tags movie-tags.xml
Extracting a couple of tracks and their respective timestamps at the same time:
1 | mkvextract "Another Movie.mkv" tracks 0:video.h265 "1:main audio.aac" "2:director's comments.aac" timestamps_v2 "0:timestamps video.txt" "1:timestamps main audio.txt" "2:timestamps director's comments.txt" |
Extracting chapters in the Ogg/OGM format and re-encoding a text subtitle track to another character set:
mkvextract "My Movie.mkv" chapters --simple "My Chapters.txt" tracks -c MS-ANSI "2:My Subtitles.srt"
关于字幕的一些范例
1 | mkvextract -v sample.mkv tracks 2:chs.sup 3:cht.sup |
FFmpeg
如无必要,不建议使用,需要自己判断音轨深度,默认是拆16bit 其他见FFmpeg
Menu
Mediainfo 里的章节转为 Mkvtoolnix 能认的格式
https://github.com/fireattack/chapter_converter
1 | python -m chapter_converter .\menu.txt -o out.txt |
非便携版不用带-m