视频自动播放带声音

在项目中遇到一个问题:

浏览器出于用户体验考虑,限制了视频自动播放声音,必须用户交互后才允许播放带声音的视频。

但我们的业务场景是需要在某些情况下由 JS 主动控制视频播放(带声音),这就和浏览器策略产生了冲突。

我们的解决方案是:

在用户首次点击页面时,通过 AudioContext 创建一个极短的静音音频 buffer 并播放,从而"解锁"浏览器的音频上下文权限。

一旦音频上下文被激活,后续就可以通过 JS 控制 video 正常播放声音。

最后再移除这个点击监听,避免影响页面其他逻辑。

复制代码
<!doctype html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <video class="videoDom" src="./what.mp4" style="display: none"></video>
    <script>
      let audioUnlocked = false;
      const unlockAudio = () => {
        if (audioUnlocked) return;
        // 创建 Web Audio
        const AudioContext = window.AudioContext || window.webkitAudioContext;
        const ctx = new AudioContext();
        // 创建一个极短的静音 Buffer(0.01 秒)
        const buffer = ctx.createBuffer(1, ctx.sampleRate * 0.01, ctx.sampleRate);
        const source = ctx.createBufferSource();
        source.buffer = buffer;
        // 连接输出
        source.connect(ctx.destination);
        // 播放并立即停止
        source.start(0);
        source.stop(0);
        audioUnlocked = true;
        console.log('🔓 音频通道已解锁!');
        // 不再监听
        window.removeEventListener('click', unlockAudio);

        // 这里模拟 到指定页面后,需要播放带声音的视频
        let videoDom = document.querySelector('.videoDom');
        videoDom.play();
      };
      window.addEventListener('click', unlockAudio);
    </script>
  </body>
</html>
相关推荐
码点滴19 分钟前
67000 星的开源语音引擎:用 VoiceStudio 搭建本地语音克隆与多语言配音流水线
开源·音视频
开开心心就好1 小时前
手机虚拟化学实验室,混合燃烧都能模拟
jupyter·智能手机·ffmpeg·计算机外设·电脑·音视频·visual studio
VidDown2 小时前
上线三个月后的第一次事故:一个 Django 服务的日志、监控与故障复盘
数据库·python·django·wpf·音视频·视频编解码
donk13142 小时前
React Native for OpenHarmony 实战:三方库 react-native-toast-message 的鸿蒙化适配指南
react native·react.js·音视频·harmonyos
VidDown2 小时前
用户说“卡顿“,服务器一切正常:播放质量监测与 QoE 指标
运维·服务器·ffmpeg·音视频·视频
一楼的猫3 小时前
第十一届中国教育后勤展览会杭州开幕 夏拾光影像为阿里、淘宝闪购提供云相册直播与视频服务 - 夏拾光影像
大数据·人工智能·音视频
开开心心就好3 小时前
手机电池健康怎么查?看容量温度循环次数
spring·智能手机·ffmpeg·计算机外设·电脑·maven·音视频
林墨聊AIGC6 小时前
AI短剧分镜图生成后下一步:从AI到成片的完整制作流程高效策略
大数据·人工智能·ai作画·aigc·音视频·ai写作
VidDown14 小时前
24fps 转 25fps 不只是改个数字:帧率转换、PAL/NTSC 与音频补偿
python·网络协议·音视频·视频编解码·视频
美狐美颜SDK开放平台17 小时前
直播APP如何实现美白滤镜功能?视频美颜SDK技术开发方案详解
前端·数据库·人工智能·音视频·美颜sdk·直播美颜sdk·视频美颜sdk