最简可用的video标签需提供有效src并添加controls属性,如不支持提示;注意本地file://协议受限、格式兼容性、CORS及MIME类型等问题。
直接用 标签就能嵌入本地或网络视频,但浏览器是否能播、是否自动加载、能否控制播放,全取决于你传了哪些属性和资源路径是否合法。
标签只要提供一个有效的 src(本地路径或 HTTP/HTTPS URL),再加 controls 属性,用户就能点开播放:
注意:src 必须指向真实可访问的文件。本地开发时双击 HTML 文件打开(file:// 协议)可能被 Chrome/Firefox 阻止加载本地 .mp4,此时需用本地服务器(如 python3 -m http.server)启动页面。
controls,否则默认无播放控件,用户无法操作muted 和 autoplay,否则现代浏览器会拒绝自动播放音频width 和 height 建议显式设置,避免页面布局抖动src 还是黑屏/报错?常见原因不是代码写错,而是资源本身或加载策略出问题:
movie.mp4 请求状态码和响应头 Access-Control-Allow-Origin
/pages/index.html,而视频放在 /videos/clip.mp4,则 src 应写 ../videos/clip.mp4,不能漏掉 ..
MP4 (H.264 + AAC) 最稳;WebM (VP8/VP9 + Vorbis/Opus) 是开源首选;Safari 对 HEVC 支持较好,但 MP4 仍是兼容性底线Content-Type: video/mp4,否则部分浏览器拒绝解析用 子标签代
替单个 src,浏览器按顺序尝试,遇到第一个能解码的就用:
关键点:
type 属性必须准确,比如 video/mp4 不能写成 video/mpeg4 或漏掉 上再写 src,否则会忽略所有
preload 和 autoplay 组合决定页面加载后的行为:
preload="none":完全不预加载,节省流量,适合列表页大量缩略视频preload="metadata"(默认):只加载时长、尺寸、首帧,足够显示控件和封面preload="auto":尽可能预加载全部内容——但实际是否执行由浏览器决定,移动端通常忽略autoplay 必须配合 muted 才能在多数浏览器生效;单独写 autoplay 在 Chrome 66+ 会被静音拦截loop 可循环播放,加 poster 可指定封面图(如 poster="cover.jpg")真正难的是平衡用户体验和性能:自动播放吸引眼球,但也可能消耗用户流量;预加载提升响应速度,却增加首屏负载。这些没有标准答案,得看你的场景——是产品介绍页?还是后台监控视频流?