
N_m3u8DL-RE MKV 混流失败排查指南从 mux failed 到语言标签的完整复盘【免费下载链接】N_m3u8DL-RECross-Platform, modern and powerful stream downloader for MPD/M3U8/ISM. English/简体中文/繁體中文.项目地址: https://gitcode.com/GitHub_Trending/nm3/N_m3u8DL-RE当用户 khanh666 用 N_m3u8DL-RE 下载一条带多音轨的视频时下载环节全部成功但收尾把分离的视频、音频、字幕混成 MKV 时 mkvmerge 报错工具打印出 mux failed。问题出在音频轨的语言标签上源流把音轨标记成了代码tm这不是合法的 ISO 639 语言代码mkvmerge 按 IETF BCP 47/RFC 5646 标准校验后直接拒绝执行。这是一次典型的元数据输入越界故障与下载和网络本身无关。现场还原从mux failed到定位 mkvmerge 报错khanh666 贴出的日志里所有分片下载成功解密、合并全程没有异常只在收尾处冒出一行 mux failed看不出原因初看很容易以为是混流环节本身坏了。nilaoda 看日志后很快指认了 mkvmerge 输出中的关键行... tm is not a valid IETF BCP 47/RFC 5646 language tag in --language 0:tm. Additional information from the parser: The value tm is not a valid ISO 639 language code.回查下载环节发现源流的音频轨本来就标着 tm工具把这个代码原样传进了 mkvmerge 的--language参数。拆到根因为什么tm会让整个 MKV 混流挂掉mkvmerge 的语言标签校验mkvmerge 要求--language传入的标签符合 IETF BCP 47/RFC 5646主语言子标签必须是有效的 ISO 639 代码两位或三位如vie、eng。tm根本不在 ISO 639 表里——它其实是国家/地区代码土库曼斯坦源流作者大概率把地区当成了语言。mkvmerge 在解析阶段就校验整条命令遇到非法标签直接中止整条混流命令连带所有音轨和字幕一起失败。工具侧的放行与收紧旧版 N_m3u8DL-RE 会把lang值不做校验地拼进命令现在的代码在调用 mkvmerge 前多了一层转换LanguageCodeUtil拿内建语言表查代码查不到的统一降级为und未确定而und是合法的 IETF BCP 47 标签不会再触发拒绝。因果链是源流给出非法语言代码 → 旧版工具把--language 0:tm原样传给 mkvmerge → mkvmerge 按 RFC 5646 校验拒绝 → mux failed。下次遇到类似报错先想元数据参数而不是下载本身。怎么修 怎么不再踩直接换最新构建新版在混流前统一归一化语言代码无法识别的代码自动落回und同一条命令即可跑通。暂时无法升级时手动重跑先加--log-level DEBUG打印出工具实际调用的完整 mkvmerge 命令把出事的--language 0:tm改成合法的 ISO 639 代码如越南语用vie自己执行一次即可。用--mux-import引入外部文件时顺手检查lang是否为两位或三位标准代码如eng、chi自定义值最容易越界。保持工具在较新版本语言表与混流逻辑是持续修补的位置你踩过的这类问题多半已经被修掉。【免费下载链接】N_m3u8DL-RECross-Platform, modern and powerful stream downloader for MPD/M3U8/ISM. English/简体中文/繁體中文.项目地址: https://gitcode.com/GitHub_Trending/nm3/N_m3u8DL-RE创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考