Visual LabINTERACTIVE LEARNING
阶段 5 · 媒体基础入门14 分钟

媒体能力体检:浏览器究竟能处理什么?

MIME、Codec、canPlayType 与渐进增强

先区分容器、编解码器与浏览器 API,再用能力检测决定播放、处理和录制方案。

LEARNING GOALS

先明确本课目标

1

区分容器格式与音视频 Codec

2

使用 canPlayType 与特性检测

3

为可选能力设计渐进增强路径

MENTAL MODEL · 再建立心智模型

媒体文件像快递包裹:容器是纸箱,音视频编码是箱内货物,浏览器 API 则是拆箱、加工和展示货物的工具。

MINIMAL EXAMPLE

一个 “probably” 能保证播放成功吗?

canPlayType() 只根据 MIME 与 codecs 字符串给出浏览器的静态把握程度;网络、文件损坏、Profile、硬件限制和 DRM 仍可能让真实播放失败。

最小例子javascript
const video = document.createElement('video');
const support = video.canPlayType(
  'video/mp4; codecs="avc1.42E01E, mp4a.40.2"'
);
console.log(support || '不支持');
  1. 写完整类型 容器 MIME 后附 codecs 参数,比只测 video/mp4 更有信息量。
  2. 读取三态结果 空字符串表示不支持,maybe/probably 仍不是运行成功保证。
  3. 保留降级路径 真实播放失败时应尝试备用 Source 或给出清晰错误。

能力检测用于排序候选方案,最终仍以真实资源加载和播放结果为准。

本课概念
OPTIONAL · 按需查阅完整术语表与概念边界

遇到陌生术语时再展开,不打断主线实验。

展开⌄
LIVE EXPERIMENT · 先获得反馈

边改边运行

浏览器加载后会激活代码编辑器、独立运行环境与实时输出。

本课挑战

做一个输入 MIME 字符串就能给出播放、录制和底层处理建议的能力诊断器。

DEEP DIVE · 实验之后

回到原理,解释刚才发生了什么

先用结果建立反馈,再按运行流程、核心原理和知识关系逐层深入。

CORE IDEA

核心讲解

01

扩展名不是完整能力描述

同为 .mp4 的文件可以封装不同视频与音频编码。浏览器是否能播放,取决于容器、Codec、Profile、Level 与设备实现的组合。

02

先检测,再选择路径

HTMLMediaElement、Web Audio、MediaRecorder 和 WebCodecs 的可用范围不同。产品应检测具体入口与配置,而不是只判断浏览器品牌。

OPTIONAL · 迁移时查阅Web 与原生实现对照

主线实验完成后,再用完整映射处理跨平台或跨 API 迁移。

展开⌄
API COMPARISON

先选择浏览器托管的媒体路径,再按需要下沉到可编程处理。

WebGL

可编程路径暴露声音节点、像素、帧或编码队列,适合分析、创作和实时处理。

WebGPU

高层媒体路径负责资源加载、解码、缓冲、同步和展示,最适合普通播放。

能由媒体元素完成的普通播放,不必一开始就选择更底层的帧处理。