HTML4不支持原生视频播放,无标签,需依赖已弃用的Flash插件;HTML5通过标签实现原生播放,须提供mp4/webm双格式、controls属性、preload="metadata",并注意移动端autoplay需muted+playsinline。
L4 无法原生播放视频HTML4 没有定义任何视频相关的标签或规范, 标签完全不存在。如果在 HTML4 页面里写 ,浏览器会直接忽略该标签,或当作未知元素处理——既不渲染控件,也不加载媒体资源。想在 HTML4 环境下“播放视频”,只能依赖第三方插件(如 Flash 的 或 ),但这些方案早已被现代浏览器弃用,且存在严重安全与兼容性问题。
标签基础用法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 也会失败。
video/mp4(H.264 baseline/main profile + AAC)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 属性可绕过大部分限制:
play() 才可能恢复有声播放playsinline 必须加上,否则 iOS 会强制全屏(尤其微信内嵌 WebView)canplaythrough 事件做自动播放触发,它不保证音频权限已获取