video自动播放需同时设autoplay和muted;带声播放须用户交互后调用play();黑屏优先查src路径、cors及mime类型;自适应用object-fit+height:auto;移动端内联播放需playsinline及x5-playsinline等属性。

video 标签不自动播放?检查 autoplay 和 muted 是否同时存在
现代浏览器(Chrome、Edge、Safari)默认禁止有声音的自动播放,只允许静音状态下自动播放。单独写 autoplay 属性大概率失效,必须配合 muted:
-
<video autoplay muted loop></video>✅ 可触发自动播放 -
<video autoplay></video>❌ 大概率被拦截,控制台可能报DOMException: play() failed because the user didn't interact with the document first - 若需带声播放,必须等用户首次交互(如点击按钮)后再调用
video.play(),且不能在异步回调(如setTimeout)里直接调;
视频加载失败或显示黑屏?优先排查 src 路径和 MIME 类型
黑屏但无报错,常见于资源未加载成功。不是所有格式都能跨浏览器播放,也不是所有路径都有效:
-
src必须是同源 URL 或已配置 CORS 的跨域地址;本地直接双击 HTML 打开时,file://协议下多数浏览器会拒绝加载视频(报Not allowed to load local resource),需起本地服务(如npx serve); - 推荐提供至少两种格式:MP4(H.264 + AAC)兼容性最好,WebM(VP9 + Opus)适合现代浏览器节省体积;
- 不要依赖服务器自动推断类型,显式用
<source></source>并声明type:<video controls><br><source src="video.mp4" type="video/mp4"><br><source src="video.webm" type="video/webm"><br></source></source></video>
如何让 video 自适应容器宽高而不拉伸变形?用 object-fit 而非 width/height 硬设
直接设 width: 100%; height: 300px 会导致画面挤压或留白。关键在保持原始宽高比的同时裁剪或缩放:
-
style="width: 100%; height: auto; object-fit: cover;"—— 填满容器,居中裁剪(类似背景图background-size: cover); -
object-fit: contain—— 完整显示,上下/左右留空; - 务必加
height: auto防止固定高度破坏比例;aspect-ratio(如aspect-ratio: 16/9)可辅助约束容器,但 video 元素本身不响应它;
移动端点击播放没反应?别漏掉 playsinline 和 x5-playsinline
iOS Safari 和安卓微信 WebView 默认全屏播放,且会拦截非用户手势触发的 play()。要内联播放(即在页面内播放),必须加属性:
-
playsinline是标准属性,iOS 10+ 支持; - 微信内置浏览器(X5 内核)还需额外加
x5-playsinline和x5-video-player-type="h5"; - 完整写法:
<video playsinline x5-playsinline x5-video-player-type="h5" ...></video>
- 注意:即使加了这些,某些安卓厂商 WebView(如华为、小米)仍可能强制全屏,无通用绕过方案;
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











