HTML5 无法直接播放 RTSP 或叠加 logo,必须在服务端转流时用 ffmpeg(-vf overlay)或 WebRTC worker 层处理;前端 CSS 叠加仅为视觉覆盖,不防篡改且投屏消失。
浏览器原生不支持 RTSP 协议,video 标签根本无法直接加载 rtsp:// 地址。所谓“HTML5 播放 RTSP”,实际是靠 WebSocket + WebRTC 或 MSE(Media Source Extensions)转封装实现的——比如用 ffmpeg + node-media-server 转成 HL

以常见方案为例:
ffmpeg 推流时加 -vf "overlay=10:10" 参数,在视频左上角 10×10 像素处叠加 logo 图片node-media-server 配合 ffmpeg 子进程转流,logo 必须提前准备好 PNG(带透明通道),路径写死或动态注入到 ffmpeg 命令中canvas 绘制帧并插入 logo,但性能开销大、延迟高,不推荐生产环境用于多路流如果后端无法改,又必须显示 logo,可考虑 CSS 层叠:
video 元素和一个 img(logo)放在同一 div 中,用 position: relative/absolute 定位 logoplaysinline 或 webkit-playsinline,iOS 上可能因 z-index 渲染异常导致 logo 被遮挡很多团队用 JPG 做 logo,结果边缘发灰或白边明显——必须用带 alpha 通道的 logo.png;同时要注意 overlay 坐标单位是像素,不是百分比,若源流分辨率动态变化(如自适应码率),需同步更新 ffmpeg overlay 坐标或改用相对定位脚本处理。
立即学习“前端免费学习笔记(深入)”;