音视频

媒体信息查看器

看清一个视频或音频文件里到底装了什么:容器、编码格式、码率、分辨率、帧率、声道,以及文件自己携带的每一条元数据。FFmpeg 在浏览器标签页里读取文件,全程不上传。

  • 逐条列出文件里的每一路流,并解释那些决定它能不能播、能不能导入、能不能上传的数值
  • 还会查字段表看不出的东西:MP4 的索引写在哪、这台浏览器能不能解出这条音轨

把视频或音频文件拖到这里

文件留在你自己的机器上,不会上传

可读 MP4、MOV、MKV、WebM、AVI、WMV、FLV、MPEG-TS、MP3、M4A、WAV、FLAC,以及 FFmpeg 认识的大多数其他格式。

还没有选择文件

先选一个视频或音频文件。引擎在那之后才会开始下载。

查看

功能简介

一个播不了、导不进、或者大得离谱的文件,答案就写在它自己里面。这个工具把答案读出来,再告诉你它意味着什么。

  1. 01

    每一路流都列出来,不只是第一路

    视频、音频、字幕、数据轨各自单列,带上编码格式、profile、码率、语言和标记位。一个带三条语言音轨、两条字幕的下载文件会全部显示出来,想提前知道转换工具会丢掉什么,也只能这样看。

  2. 02

    大家真正要找的那几个数

    分辨率、帧率、码率、时长、采样率、声道布局、像素格式、位深和色度采样,都是从文件里读出来的,而不是照扩展名猜的。容器本身没记录每路流码率时,工具会直说,而不是编一个填上去。

  3. 03

    给的是判断,不只是字段

    旋转标记、写在 MP4 末尾的索引、彼此对不上的帧率读数、剪辑软件可能拒收的 10 位色彩——每一条都写成一句带后果的话。读懂一个文件和知道它为什么不听话,差别就在这里。

  4. 04

    不止读文件头,也读文件本身

    MP4 和 MOV 的盒子结构会被直接解析,用来判断索引排在画面数据之前还是之后——一个完全合法的 MP4 放到网页上开头就卡,通常就是因为这个。FFmpeg 不会报告它,因为那是排布方式而非流的属性。

  5. 05

    文件头只是声称,这里可以真数一遍

    有一个可选的过程会把每个数据包走一遍,一帧也不解码,然后给出实际帧数,以及画面和声音各自占用的字节数。它会把帧数和文件头的推算值并排给出;容器里没记录码率的视频轨也能由此得到实测码率。

  6. 06

    本地处理,不上传

    FFmpeg 编译成 WebAssembly 在标签页里运行。没有上传、没有排队、不用注册账号。浏览器内存决定了文件体积的实际上限,而访谈录像、客户素材、内部系统的录屏则始终留在你自己的机器上。

如何使用

从一个你拿不准的文件,到一个明确答案,四步。

  1. 01

    把视频或音频文件拖到页面上,或者用选择器挑一个。引擎会在这时开始下载,大约 31 MB,只发生一次,随后文件就地读取。

  2. 02

    先看概览。容器、时长、总码率,加上画面和声音各一行,多数问题在这里就有答案了。

  3. 03

    再看下面的判断。每一条都是针对这个文件的一句话,并且把后果一起写出来,从旋转标记到位置不对的索引都在其中。

  4. 04

    需要完整细节就打开「流」,需要整份带走就切到报告、JSON 或日志。想知道真实帧数或文件里从没写过的码率,用「统计」。

功能说明

它读什么,以及读出来之后做了什么。

  • 容器、时长、总码率、起始时间,以及全部文件级元数据标签
  • 每一路流的编码格式、profile、编码标记、语言、码率和标记
  • 视频的分辨率、旋转之后的显示分辨率、画面比例、帧率、基准帧率、像素格式、位深与色度采样
  • 音频的采样率、声道布局、采样格式和码率
  • 字幕、数据和附件流一并列出,不做忽略
  • 封面图被认成封面,而不是算作一路视频轨
  • 章节及其起止时间
  • MP4、M4A、M4B、MOV 与 3GP 的索引位置检查,直接读文件结构,而不是依赖任何 FFmpeg 输出
  • 检查此浏览器能否加载预览元数据,也会说明它是否声明支持容器里的音频编码
  • 可选的统计过程,给出真实帧数,以及画面和声音各自的真实码率
  • 同一份结果的四种视图:流的明细、纯文本报告、JSON,以及引擎原始日志
  • 任何一种视图都能复制或下载,文件名会沿用源文件
  • 全部在浏览器标签页里完成,不上传、不排队、不用账号

适合哪些场景

人们会来查媒体信息,通常是因为下面这些问题。

  1. 文件播不了,又看不出哪里不对

    扩展名写着 MP4,播放器还是不认。把文件读一遍,两种可能立刻就能分开:要么容器没问题、里面的编码是 HEVC,要么这个文件根本不是名字说的那样。不管是哪种,下一步都变成了明确动作而不是猜测。

  2. 核实视频是不是名副其实

    标着 4K 的下载可能是 1080p 拉上去的,说是高码率的文件也可能低得多。分辨率、码率和编码格式都直接来自文件,关于它的说法要么经得起数据检验,要么经不起。

  3. 网页上的 MP4 开头要卡好几秒

    卡几秒之后又一路顺畅,几乎都是索引写在了画面数据后面。这里直接读盒子顺序,告诉你手上是哪一种,一个说不清的延迟就有了明确的原因,也就知道该往哪儿改。

  4. 剪辑软件不肯导入,或者一卡一卡

    10 位色彩、4:2:2 色度、需要进一步核实的帧率读数、熟悉容器里装着少见编码——导入失败的原因全都写在文件里。看清是哪一个,才能决定是重新导出一次,还是先做一次格式转换。

  5. 手机拍的片子是横过来的

    画面按横向存储,旁边带一个旋转标记,而世上有一半软件认它、另一半不认。这里会说明标记在不在、文件本来应该长什么样,也就解释了同一段视频为什么在这个应用里是正的、换个应用就躺下了。

  6. 搞清楚视频为什么这么大

    体积远超预期,原因无非是码率、分辨率、帧率,或者用了 ProRes 这类剪辑编码——知道是哪一个才知道该改什么。先读一遍,比盲目压缩一版再看结果能不能接受要快得多。

  7. 音频文件投出去之前先自检

    播客平台和资料库通常会规定采样率、声道布局和最低码率。MP3、M4A、WAV、FLAC 的这三项连同标签都能在这里读出来,投稿前先核对,而不是被退回之后才知道。

  8. 不该上传的素材

    访谈录像、医疗影像、客户素材、内部系统的录屏,里面的东西都不适合送到一个检测网站上。这里的一切都发生在标签页内,运行时打开网络面板就能确认。

延伸阅读

知道文件里装了什么之后,改动它是另一件事:把它换成能播、能导入的格式,而且多数时候只是复制流而不重新编码,这件事交给 视频格式转换。如果这里读出来的信息解释了文件为什么这么大,而结论是它必须变小,那就从体积上限倒推,用 视频压缩。至于照片而不是录像,图片里的 EXIF、GPS 和拍摄参数由 图片元数据查看器负责读取。

这些数值到底在说什么

媒体文件里让人困惑的地方,大多集中在少数几个看起来是这个意思、实际在说另一件事的字段上。下面这几个值得先弄明白。

  1. 容器和编码格式是两回事

    MP4、MKV、WebM 是容器:装着若干路流,外加让它们保持同步的时间信息。H.264、HEVC、AAC、Opus 是编码格式:画面和声音具体怎么压缩。播放器支持这个盒子,仍然可能解不开里面的东西,所以「我的 MP4 播不了」不是自相矛盾,而是一个真实存在的问题。

  2. 码率是每秒能用多少数据,不等于画质

    码率指的是文件里每一秒允许占用多少比特。同样的分辨率和编码格式下,码率高通常更好看,但这个比较只在同一种编码格式内部成立:HEVC 的 5 Mb/s 明显好过 MPEG-2 的 5 Mb/s。总码率则是所有轨道加上容器开销一起算的。

  3. 帧率有两个数

    平均帧率是按整个文件时长算出来的结果;基准帧率则是 FFmpeg 从流里报告的另一种时间读数。它们常常相同,但回答的不是同一个问题。两者不同值得在剪辑软件或播放器异常时进一步核实,却不能单凭这一点断言文件就是可变帧率。

  4. 存下来的画幅和看到的画幅不是一回事

    手机按传感器的横向方向录制,同时在旁边写一个旋转标记。存储的画面是 1920 × 1080,你看到的画面是 1080 × 1920。认这个标记的软件把它摆正,不认的把它放倒,两边读的是同一个文件。

  5. 位深和色度采样决定兼容性

    常规视频是 8 位、4:2:0 色度,浏览器和手机都能解。10 位和 4:2:2 携带更多色彩信息,是专业摄影机和剪辑格式的产物,同时也正是浏览器、手机和老版本剪辑套件最可能直接拒收的那一类。

  6. 索引写在哪会改变播放行为

    MP4 把采样表放在一个叫 moov 的盒子里,播放器要先拿到这张表才能显示任何画面。写在前面,文件可以边下边播;写在后面,浏览器可能得多发几次范围请求去找它,服务器不支持范围请求时还会等到大半甚至整个文件下完。两种文件从本地硬盘打开毫无差别,所以这个问题只有在文件放上网站之后才会露出来。

使用建议

怎样最快拿到有用的答案。

  • 先看概览再看流列表,容器、编码格式、分辨率和码率通常就已经回答了大部分问题
  • 把「这些信息说明了什么」当成重点清单,那里列的是带后果的数值,而不是文件里恰好有的每一个字段
  • MP4 发布到网站之前先看索引位置:索引在前面能少走范围请求,也能避免服务器不支持范围请求时久等
  • 帧数要紧时跑一次统计:它会并排列出实际数据包数量和按文件头帧率推算的数量,全程不解码画面
  • MKV 和 WebM 想知道视频码率也要靠统计,这两种容器根本不记录每路流的码率,没有现成的可读
  • 发帖求助时贴「报告」那一栏,而不是凭印象描述文件;对方明确要 FFmpeg 输出时再贴「日志」
  • 尽量查原始文件而不是已经过转换的副本,你要的那些数值可能在转换途中就被改写了
  • 大文件在电脑浏览器上查,手机给标签页的内存要少得多

边界与注意事项

这个工具不做什么,以及在哪些地方会吃力。

  • 它只读文件,从不写文件。这里不做转换、压缩、截取和修复,那些是另外的活,工具在下面有链接。
  • 整个文件要先读进内存才能查看,而 WebAssembly 是 32 位的,所以超过约四分之一 GB 之后就不太可靠了。
  • 引擎首次使用约 31 MB。之后会走缓存,但在一个全新的浏览器配置里第一次运行仍然要付这份下载。
  • 数值按文件自己的记录呈现。容器没有记录每路流码率就不会有,那个空缺由统计过程而不是文件头来填。
  • 统计要把每个数据包读一遍,耗时和文件长度成正比。它一帧也不解码,因此比转换快得多,但对一段长录像也不是瞬间完成。
  • 预览检查只说明这台机器上的这个浏览器加载了文件元数据,并不是完整的解码测试;换一个浏览器、操作系统,或换了硬件解码能力的设备,结果都可能不同。
  • 索引位置检查适用于 MP4 这一族:MP4、M4A、M4B、MOV 和 3GP。Matroska、WebM 之类的排布方式不同,没有对应的属性可报。
  • 逐帧级别的信息不在范围内:没有关键帧位置清单、没有逐帧时间表,也不做与参考文件的画质比对。
  • 图片文件不在这里处理。照片的 EXIF、GPS 和拍摄参数属于下面链接的图片元数据查看器。
  • 真正损坏的文件可能完全读不出来,部分损坏的文件则可能只列出引擎还能识别的那几路流。
  • 受 DRM 保护的文件通常仍然能被描述出来,因为容器和流列表本身没有加密;但凡是需要动到实际数据的操作,包括统计过程,都可能在它上面失败。

常见问题

一个媒体文件需要解释的时候,常见的问题。

怎么查一个视频文件用的是什么编码格式?

把文件拖到页面上。概览会写明容器,以及画面和声音各自的编码格式——H.264、HEVC、VP9、AV1、AAC、Opus 等等,流列表还会补上每一路的 profile、编码标记和码率。文件不会上传:FFmpeg 在浏览器标签页里读它,运行时打开网络面板就能确认这一点。

怎么查视频的码率?

总码率在概览里,每一路流则会显示容器记录的那个值。MP4 和 MOV 通常会存每路流的码率,MKV 和 WebM 一个都不存,这时那一栏就空着,而不是填一个工具自己编的数。按一下「统计」就能得到确切结果,它会实际量出画面和声音各自到底占了多少字节。

我的文件会被上传吗?

不会。引擎是编译成 WebAssembly 的 FFmpeg,在你的浏览器标签页里运行。文件从磁盘读进标签页的内存,全过程没有任何内容经过网络。访谈录像、客户素材,或者从内部系统里录下来的画面,正是应该用本地工具来查的东西。

容器和编码格式有什么区别?

容器是文件格式本身——MP4、MKV、WebM——它装着若干路流,外加让它们能正常播放的时间和索引信息。编码格式是里面的画面和声音具体怎么压缩的,比如 H.264 或 AAC。播放器支持某个容器,仍然可能解不开里面的东西,所以一个打不开的 MP4 是很普通的问题而不是矛盾,这个工具也因此把两者分开报告。

为什么有的软件里视频是横过来的,有的又是正的?

因为文件的存储方式和它应该被显示的方式不一样。手机按传感器的横向方向录制,同时在旁边写一个旋转标记,正确的画面是把存储的画面按这个标记转过来的样子。认标记的软件把它摆正,不认的把它放倒。判断面板会说明有没有旋转标记,以及应用之后文件应该是什么样。

faststart 是什么?为什么我的 MP4 播放前要停一下?

MP4 把采样表放在一个叫 moov 的盒子里,播放器要先拿到它才能显示任何一帧。顺序写文件的编码器会把它排在画面数据后面,浏览器可能得先多发几次范围请求才能开始播;服务器不支持字节范围请求时,可能会等到大半甚至整个文件下载完,看起来就像卡住了很久。把这个盒子挪到开头,就是所谓的 faststart。这个工具直接从文件里读盒子顺序,因为没有任何 FFmpeg 输出会报告它。

两种帧率读数不一样,说明什么?

平均帧率和基准帧率描述的是不同的时间信息,因此不一致是值得继续核实的线索,而不是“可变帧率”的定论。按「统计」会补上真实的数据包帧数,并与文件头推算值对比。两者不同可能来自时长或帧率的取整,也可能来自特殊时间戳;要确认可变帧率,需要逐帧时间戳分析,这个工具不做这一项。

为什么我的 MKV 里视频轨没有码率?

因为 Matroska 不存这个值。每路流的码率是 MP4 和 MOV 的做法,MKV 和 WebM 只记录流本身,算数留给需要的人。工具会把这一栏留空,而不是拿一个猜测填上;按「统计」则会把画面实际占用的字节加起来,量出真实数值。

音频文件也能查吗,比如 MP3 的码率和采样率?

可以。MP3、M4A、AAC、WAV、FLAC、OGG 和 Opus 走同一套流程,会报告码率、采样率、声道布局、时长和标签。专辑封面会被认成封面而不是算作视频轨,别的工具坚持说一个音频文件里有视频,原因通常就在这里。

我的视频一共有多少帧?

时长乘平均帧率只能得到估算值,因为时长和帧率字段本身可能经过取整。按「统计」会把文件里每个数据包走一遍、一帧也不解码,给出实际数量,再和文件头的估算值对比。它能帮助你理解异常的时间信息,但不会假装能从一个数字断定问题。

10 位和 4:2:2 是什么意思?为什么剪辑软件不收这个文件?

位深是每个颜色值记录得有多细,色度采样是相对亮度保留了多少色彩细节。常规视频是 8 位 4:2:0,什么都解得开。专业摄影机和剪辑格式产出的是 10 位和 4:2:2,信息更多,同时也正是浏览器、手机和老版本剪辑软件最可能拒绝的。这两项都从像素格式里读出来并在这里报告。

能查多大的文件?

整个文件要先读进标签页的内存才能检查,而 WebAssembly 是 32 位的,所以实际上限大概在四分之一 GB 附近。在这个范围内,读文件头本身在任何体积下都很快;统计过程则要走遍每个数据包,耗时和文件长度成正比,不过它一帧也不解码。

更多相关工具

更多在浏览器本地运行的媒体文件工具。