video标签必须设置src或source才能播放,否则不加载内容;controls启用原生控件;autoplay需配合muted和playsinline才可能生效;poster仅显示静态封面且依赖服务端正确响应头。
src 或 source 才能播放空的 不会加载任何内容,浏览器也不会显示占位图或错误提示。常见误操作是只写标签、漏掉视频源。
src 属性直接指向一个视频地址,适合单格式场景: 子元素,按顺序尝试,浏览器选第一个能解码的:src 和 同时存在, 会被忽略加了 controls 就显示播放/暂停、进度条、音量、全屏按钮;不加就什么都没有——不会自动退化成自定义 UI,也不会保留右键菜单。
controls="false" 或 controls="0" 依然生效play()、pause() 等方法co
ntrols 时禁止自动播放,即使设置了 autoplay muted
现代移动浏览器基本禁止有声自动播放,单独设 autoplay 几乎无效;桌面端也可能被用户策略拦截。
muted 才可能触发自动播放:playsinline 防止 iOS Safari 强制全屏(尤其在 里嵌入时)video.muted = false 立即生效poster 是静态封面图,不是第一帧截图,也不是 loading 占位符。视频一旦开始加载(哪怕还没解码出画面),poster 就消失。
ffmpeg -i input.mp4 -ss 00:00:01.000 -vframes 1 poster.jpg
Accept-Ranges: bytes 会导致 Chrome 无法拖拽进度条;MIME 类型错配(如 .mp4 返回 text/plain)会让 直接跳过该条目。这些不在 HTML 标签里体现,但决定你写的代码有没有效。