HTML5 词条目录
前端Wiki/HTML5/基础/多媒体

source 多格式兼容

不同浏览器支持的音视频格式不同,<source> 就是为此设计的"候选清单"机制:在一个 audio/video 里放多个 source,浏览器从上到下逐个检查,选用第一个自己支持的格式,后面的全部忽略。

两个影响成败的细节:一是 type 属性必须写对(如 video/mp4),浏览器靠它判断是否支持,不用真的下载文件试播,省流量也快;二是排序策略——把兼容性最好、体积最优的格式放前面,"第一个匹配即停止"意味着顺序就是优先级。

source 还有一个用途是配合 picture 元素做响应式图片:按屏幕宽度/media 条件选不同图片,机制与音视频一致。所有 source 都不支持时,标签内的文字内容会显示出来,这是给用户的最后提示。

本节要点多 source = 格式候选清单,浏览器选第一个支持的;type 属性帮助浏览器免下载判断支持性;顺序即优先级;兜底文字写在标签内容里。
HTML
<!-- 视频:浏览器从上往下找第一个支持的格式 -->
<video controls width="640">
  <source src="movie.webm" type="video/webm">  <!-- 体积小,优先 -->
  <source src="movie.mp4"  type="video/mp4">   <!-- 兼容性兜底 -->
  当前浏览器不支持 HTML5 视频。          <!-- 全部失败时的文字 -->
</video>

<!-- picture:source 的姊妹用法,按条件选图片 -->
<picture>
  <source media="(min-width: 800px)" srcset="big.jpg">
  <source media="(min-width: 400px)" srcset="mid.jpg">
  <img src="small.jpg" alt="响应式图片兜底">
</picture>