全部指南

在它到达车载屏幕之前

iPhone 和 CarPlay 的视频格式。 在手机上定下来,再放到屏幕上。

iPhone 和 CarPlay 的视频格式由手机决定,在车载屏幕参与之前就定下来了。MP4, M4V, MOV 和 M3U8 交给 iOS 的系统解码器;MKV, AVI, WebM, FLV, TS, MTS, M2TS, WMV, MPG, MPEG, VOB 和 OGV 交给 Dashow 的扩展解码路径。其余扩展名在文件打开时,按里面的实际内容决定走哪一条。

即将上线 App Store使用方法
产品示意图。使用体验取决于 App 与显示设备的兼容性。
  • 01

    iPhone 原生的视频格式是 MP4, M4V, MOV 和 M3U8,另外十二种容器走扩展解码路径。

  • 02

    扩展名决定先由哪个解码器打开,里面的编解码器决定你看到和听到什么。

  • 03

    通过 SMB 打开的视频一律走扩展解码路径,与扩展名无关。

使用方法

快速上手

  1. 01

    先看扩展名

    点号后面的几个字母,说明文件先交给哪个解码器。

  2. 02

    在表里找到它那一行

    下面的路线表把每种视频格式分进系统解码器、扩展解码路径,或打开时再决定这三行。

  3. 03

    用 Dashow 打开它

    从“文件”或“照片”导入,也可以通过 SMB 直接浏览 NAS 上的文件夹。

  4. 04

    三条轨道都看一眼

    画面、声音和文字各自解码,所以三样都要确认。

iPhone 到底能播放哪些视频格式?

同一个文件夹里的两个文件,同一部手机。一个打开就播,另一个停在一帧灰色画面上。差别很少出在手机。每部 iPhone 都内置了自己的视频解码器,这个解码器只打开一组固定的视频格式。Dashow 为它不接手的容器另开一条解码路径,再按扩展名把每个文件分过去。

Apple 那篇讲“媒体文件打不开”的支持文章,写的是一串可以依次尝试的步骤,而不是一份格式清单。这一页给出清单。下面的表就是 Dashow 实际使用的路线图,直接读自那段按扩展名分流的代码:四种扩展名交给系统解码器,十二种交给扩展解码路径。

扩展名是路线提示,不是承诺。

扩展名是一个提示。它告诉 App 先用哪个解码器打开文件,却不说明这个解码器在里面会遇到什么。容器只是一层外壳:一个 MKV 里装着一条视频轨、一条或多条音轨,常常还有字幕轨,每一条都单独编码。改文件名改的是提示,不是内容。

同一种视频格式的两个文件在同一部手机上表现不同,原因就在这里。它们各自带着不同的编解码器:画面一套,声音一套,文字轨道又是另一回事,每一样都按自己的条件解码。画面可以照常出来,而某条音轨保持安静,或者某条文字轨道停在菜单里等你去选。三条轨道,三种结果。

MP4, M4V, MOV 和 M3U8 交给系统解码器。

四种扩展名走向 iOS 内置的解码器:mp4, m4v, mov 和 m3u8。MP4 和 MOV 是近亲。MOV 是 Apple 的 QuickTime 容器,MP4 由它标准化而来,所以 iPhone 摄像头拍下的片段和从网上下载的文件,常常装着同一份 H.264 或 HEVC 视频,只是名字不同。

HEVC 属于这一行。Apple 自家相机默认使用 HEVC(也叫 H.265),iOS 用处理 H.264 的同一个系统框架解码它,所以手机拍的 4K 片段不需要额外准备。M3U8 排在这一行则是另一个原因:HLS 是 Apple 的流媒体格式,iOS 原生读取 .m3u8 清单。

另外十二种容器走扩展解码路径。

另外十二种视频格式走扩展解码路径:mkv, avi, webm, flv, ts, mts, m2ts, wmv, mpg, mpeg, vob 和 ogv。Dashow 为它们自带了一个解码器。它们多半来自下载、摄像机、电视录制或更早的存档,文件原样进来,不用先转码,也不用先开另一个 App。

有一条规则比扩展名更优先。通过 SMB 打开的视频一律走扩展解码路径,与扩展名无关,所以 NAS 上的 MP4 和它旁边的 MKV 打开方式完全一样。没有引擎要你挑。Dashow 读文件名、打开文件,发现里面的内容需要时就转到另一条路径。

少见的扩展名,打开文件时才有答案。

两行之外的视频格式,在打开时才定下来。文件自己回答。Dashow 打开它,走那条读得懂它的路径,.divx, .rmvb,以及完全没有扩展名的文件,都是这样各按各的情况处理。面对某一个具体文件,最快的答案仍然是打开它,看十秒钟。

有一个界面替你读文件。打开本地视频的“详情”,Dashow 会按需读出时长、画面尺寸、视频编码与音频编码、文件大小,以及文件自带的标题。容器在那里不再只是几个字母。扩展名选了路线,编解码器的名字才是它一直没说的那部分。

按你的文件所在那一行,接着往下看。

表格停下的地方,有四篇页面接上。其中两篇讲容器。MKV 指南打开一个 Matroska 文件,说明它装着什么,再解释为什么同样的字节在一个 App 里能开、在另一个里不能。AVI 页面列出所有走扩展解码路径的老容器,并说明传输流为什么和其余容器表现不同。

另外两篇各盯住一条轨道。有画面没声音,问题出在音轨用的编解码器,有单独一页回答。放在电影旁边的字幕文件则是命名问题:SRT 页面给出 .srt 或 .vtt 文件必须采用的确切名称,播放器才会把它和视频配成一对。从你的视频所在那一行开始。

每种扩展名走哪条路线

每种扩展名走哪条路线
路线扩展名为什么走这条
iOS 内置的解码器mp4, m4v, mov, m3u8由 iOS 内置的解码器打开文件
Dashow 的第二个解码器十二个扩展名:mkv, avi, webm, flv, ts, mts, m2ts, wmv, mpg, mpeg, vob, ogvDashow 把这些容器交给自带的解码器
打开文件时再决定其余所有扩展名App 读取文件本身,走能打开它的那条路径
任何通过 SMB 打开的视频所有扩展名,包括 mp4共享上的文件始终走扩展解码路径
Apple:媒体文件无法打开或播放时Apple 开发者文档:iOS 的媒体框架Apple:HTTP 实时流媒体(HLS)

常见问题

你可能还想了解。

iPhone 能播放 MKV 吗?

能,用一个自带第二条解码路径的 App 就行。MKV 走 Dashow 的扩展解码路径,文件原样进来。容器里装着视频、音频和字幕轨道,各自单独解码,这也是同为 MKV、两个文件表现却不一样的原因。

MOV 和 MP4 有什么区别?

MOV 是 Apple 的 QuickTime 容器,MP4 由它标准化而来,两者装的数据非常接近,也都交给系统解码器。用 iPhone 摄像头录下的片段是 MOV;同一份 H.264 或 HEVC 视频从网上下载,通常是 MP4。

扩展名决定视频能不能播放吗?

它决定先由哪个解码器打开文件。你看到和听到什么,由里面的编解码器决定:视频轨、每一条音轨和所有文字轨道都是分开编码的。改文件名改的是这个路线提示,文件里的内容一个字节都没动。

为什么同一种格式的两个文件表现不一样?

视频格式说的是容器,不是编码。扩展名相同的两个文件,可以装着不同的视频编码、不同的音频编码和不同的字幕格式。扩展名把它们送上同一条解码路径;接下来发生什么,取决于各自带着哪些轨道。