返回博客

指南 / K6 · 格式与兼容

同一个视频,电脑能播、手机放不出来:逐层核对清单(每一层都带实测读数)

电脑放得开、手机放不开,原因通常不在画质,也不在文件坏没坏。拦住它的通常不出四层:容器、画面、声音、字幕;哪一层不对,看到的常常都是同一个结果——"打不开"。所以正确的第一步不是换一个工具再压一遍,而是读文件,判断是哪一层拦住了你。

1. 一帧画面出现之前,四层已经各自定了

这四层是分别判的,所以症状也是分别的:容器不对=根本不开;标签不对=开了不动画;声音不对=开了没声;字幕不对=片子好好的,字幕没了。把四种症状混成"这工具不行",是这一类产品最常被误判的地方。

2. 第一步是读文件,不是换工具

读一层看一层:任何能列出文件内部结构的检查工具,都会把容器、每条轨道的编码名、轨道标签、位深、像素格式、时长、字节数分开列出来。这一步花掉的是几分钟,替你做掉的是后面几个小时的反复重试。

下面所有读数来自同一台机器上的同一趟检查,环境写在第 8 节。

样本容器画面轨道标签档级/像素格式尺寸字节数
Bmp4hev1Main 10/yuv420p10le1920×108012,973,400
Cmp4hvc1Main 10/yuv420p10le1920×108012,973,400

这两枚文件来自同一段两分钟长的画面,画面一帧都没有重新编码,字节数一模一样;唯一的区别是那一枚四字符的轨道标签。

改后缀不改变上面任何一层;把画面按高码率再压一遍,也改变不了拦住你的那一层。先定位,再动手。

3. 标签这一层:同一段画面,两种写法

在 MP4 这一族容器里,HEVC 会被声明成 hvc1 或 hev1。区别在于解码配置写在哪:hvc1 把它写进轨道的样本描述,读取方在碰到第一帧之前就能把解码器配好;hev1 允许这份数据随流一起传。需要在开工前拿到配置的读取方,不会等它半路出现。

这一层不需要重压一帧画面:把画面按复制带过去,只重写那一枚轨道标签。上面那对样本正是这么来的——同一段画面写两次,产物逐字节等长。

值得记住的是这一层的代价:它是一次复制,不是一场重压。凡是能把范围收在这一层解决的问题,都不该动用重新编码。

4. 声音这一层:画面完美也会被一条音轨拖住

画面已经被接受之后,决定"能不能播、有没有声"的就只剩声音轨。这一族的实际存量比多数人以为的宽:同一批素材里同时见过 TrueHD、E-AC3、AC-3、Opus、FLAC、MP2、MP3、DTS 与 PCM。

源容器画面声音产物声音怎么办
GmatroskaHEVC Main 10TrueHDmp4/hvc1重写为 AAC(画面未重压)
ImatroskaHEVC Main 10E-AC3mp4/hvc1原样带过(标签 ec-3)

两趟里画面都没有重新压缩,差别全在声音:一支必须改写,一支可以直接带走。还有一件事只有逐条数轨道才会发现——只检查第一条音轨的做法,产出的就是"打得开却一片安静"的文件。多语言片子里你要的那一门,常常正坐在第二条上。

5. 字幕这一层:文字与图片是两种数据

源声音字幕产物字幕的去向
K(matroska)AC-3、Opus、AACSubrip、ASSmp4两条都落成文字轨(mov_text/tx3g)
F(matroska)FLACHDMV PGS(图片)—图片没有对应的轨道位置

文字那类(SRT、ASS)搬进目标容器还是文字,字号颜色仍然归你改。图片那类——蓝光那种被压成一页页图片的字幕,以及 DVD 与电视盒录制带的那种——本质是字幕的照片。MP4 的字幕轨道按文字建,图片没有装它的位置。

可行的两条:把图片里的字认读回文字再带过去(认读是一项能力,不是一枚保证,认出来的字可能有错,交付前该核),或者不要这条字幕。画面一个像素都不会动,也不会把字烧进画面——那种做法出的是一条新的画面轨,不是你原来的片子。

问"支不支持字幕"没有意义。要问的是:这一条是文字还是图片,转换之后它还是不是同一种东西。

6. 读得出文件,读不出设备

这份清单能带你走到"知道哪一层要动"。它不替你决定某一台设备收不收:位深与档级、颜色标记、帧率、4:2:2、长 GOP 这些条件,落在具体设备上才有答案。同一批样本里同时存在 Main 10 与 Main 8,颜色标记也分带与不带——这些差别在文件里读得出来,在设备上才见分晓。

7. 照着走的核对顺序

  1. 读内部。容器、画面标签、逐条声音、逐条字幕,一趟列全。
  2. 容器这一层。文件不在目标设备肯打开的那一族里,就足以解释"根本不开",哪怕里面的画面完全没问题。
  3. 标签这一层。容器对、画面是 HEVC 却读不出配置,先按第 3 节把标签重写一遍——这是复制,不是重压。
  4. 声音这一层。列出每一条音轨,不只第一条;决定哪一门语言该排在前面,是有意的选择,不是碰运气。
  5. 字幕这一层。文字能搬,图片只能认读或放弃。
  6. 最后才考虑重压画面。标签救不了的那一类才需要重新编码,那是另一件更慢的活,有它自己的体积边界。

顺序错了,人就会在同一台设备上把同一个错误做三遍。

8. 这一页的读数从哪来,我们做什么

上面每一条读数都取自同一趟检查,样本全部是我们自制的文件。B 与 C 装的是同一段画面:复制进两枚 mp4 时一帧都没重压,只重贴了轨道标签,所以两枚的字节数完全相同(见上面那张表);G 到 L 围绕光盘时代的声音与字幕格式。本页不转发任何样本文件——上面每一族结构,你都能在自己已有的素材上重建出来。

我们做的是一款 iPhone、iPad 与 Mac 上的产品,产物只有一个容器:MP4。没有码率、编码器、分辨率这些旋钮;替你做的决定只有三选一——只换容器、换容器并改写声音、把画面重新编码。一个本来就能直接播放的文件不算一次转换:App 不为它生成第二份文件,也不计数。付费形态是一次买断(这项购买在产品里叫 Opus),它只改变之后还能转换多少次,这一件事写在这里。

常见问题

把 .mkv 改名成 .mp4 行不行?

不行,这一步从来不是捷径。后缀只是标签,改标签不重写容器内部的结构,也不改画面编码;设备打开文件时读的是里面的结构,不是文件名。改名之后"能打开"的概率不会变,而你会失去判断哪一层出问题的机会。

只重写标签,文件会变成另一回事吗?

不会。上面那对样本读回来字节数完全相同(都是 12,973,400),画面一帧都没重压。这也正是这一层的价值:一次复制就能解决的层,不该用一次重新编码去试。

我的片子有五条音轨,会不会只剩一条?

轨道要逐条判,不是整条文件一个结论。能带的按条带走,带不动的那一条走重编;真正会造成"只剩一条"的,是工作只盯着第一条音轨的那种做法。多语言片子动手前先数清楚你要的那一门坐在第几条。

图片字幕能原样放进 MP4 吗?

不能。MP4 的字幕轨道按文字建,图片那类没有对应的位置。可行的做法只有两种:认读成文字再带过去(可能有错,要核),或者放弃这条字幕。不存在既保留原来的图片字幕、又把它放进文字轨道的第三种做法。

这些读数能不能在我这台机器上复算?

读的是文件内部,任何一台机器上都能复算——你手上那枚文件里有什么,检查工具列得出来。复算不出来的只有后半段:设备那一侧收不收,只能靠一次真实播放。这一页给的是判断顺序,不是一张要你相信的表。


上海智独教育科技有限公司 — CineX

网站备案号:沪ICP备2026001245号-1 App 备案号:沪ICP备2026001245号-4A

上海智独教育科技有限公司

上海市嘉定区澄浏公路52号39幢2楼J

support@getcinex.app