HTML4不支持原生视频播放,无标签,需依赖已弃用的Flash插件;HTML5通过标签实现原生播放,须提供mp4/webm双格式、controls属性、preload="metadata",并注意移动端autoplay需muted+playsinline。

HTML4 无法原生播放视频
HTML4 没有定义任何视频相关的标签或规范, 标签完全不存在。如果在 HTML4 页面里写 ,浏览器会直接忽略该标签,或当作未知元素处理——既不渲染控件,也不加载媒体资源。想在 HTML4 环境下“播放视频”,只能依赖第三方插件(如 Flash 的 或 ),但这些方案早已被现代浏览器弃用,且存在严重安全与兼容性问题。
HTML5 标签基础用法
HTML5 引入了语义化 标签,支持原生播放,无需插件。关键点不是“能不能放”,而是“怎么放才可靠”:
- 必须提供至少一个可用的
src属性,或通过子标签声明格式兼容的资源 - 推荐同时提供
mp4(H.264+AAC)和webm(VP8/VP9+Vorbis/Opus)两种格式,覆盖主流浏览器 -
controls是布尔属性,加了就显示默认播放控件;不加则需用 JavaScript 自行控制 - 加上
preload="metadata"可减少首帧加载延迟,避免白屏等待
常见错误:只写 src 却忽略格式兼容性
很多开发者直接写 ,以为只要路径对就能播——实际 macOS 上的 .mov 文件通常含 Apple ProRes 或 HEVC 编码,绝大多数 Windows/Android 浏览器根本不识别。同样,仅提供 .avi 或 .mkv 也会失败。
- Chrome、Edge、Firefox 均支持
video/mp4(H.264 baseline/main profile + AAC) - Safari 对 H.264 支持最稳定,但对 VP9 / AV1 支持有限
- 务必用
ffprobe或在线工具检查视频编码:运行ffprobe -v quiet -show_entries stream=codec_name,codec_type -of csv=p=0 video.mp4确认是h264,video和aac,audio - 用
ffmpeg转码为通用格式:ffmpeg -i input.mov -c:v libx264 -profile:v main -c:a aac -b:a 128k output.mp4
移动端自动播放限制很严格
iOS Safari 和 Android Chrome 默认禁止自动播放带声音的视频,即使写了 autoplay 也会静音或直接拦截。这不是 bug,是策略。
立即学习“前端免费学习笔记(深入)”;
- 加
muted属性可绕过大部分限制: - 用户首次交互(如点击按钮)后,再用 JavaScript 调用
play()才可能恢复有声播放 -
playsinline必须加上,否则 iOS 会强制全屏(尤其微信内嵌 WebView) - 不要依赖
canplaythrough事件做自动播放触发,它不保证音频权限已获取










