视频自动播放带声音

在项目中遇到一个问题:

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

但我们的业务场景是需要在某些情况下由 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>
相关推荐
愚公搬代码2 小时前
【愚公系列】《剪映+DeepSeek+即梦:短视频制作》046-转场:短视频一气呵成的秘密(什么是转场)
人工智能·音视频
PiaoShiSun9 小时前
小米手机浏览器缓存视频如何导出
缓存·智能手机·音视频
艾为电子10 小时前
【新品发布】攻克音频切换痛点|艾为 AW35331FDR 高保真音频开关全新登场
音视频
愚公搬代码12 小时前
【愚公系列】《剪映+DeepSeek+即梦:短视频制作》047-转场:短视频一气呵成的秘密(转场类型)
人工智能·音视频
开开心心就好12 小时前
一键隐藏桌面图标任务栏的实用工具
人工智能·pdf·音视频·语音识别·媒体·测试覆盖率·威胁分析
ai大模型中转api测评13 小时前
锁定一致性与音画同步:Grok 2.0 预热释放了哪些 AI 视频商用信号?
人工智能·音视频
想你依然心痛13 小时前
HarmonyOS 5.0音视频开发实战:基于ArkMedia Kit的实时直播与AI增强处理系统
人工智能·音视频·harmonyos
AI周红伟1 天前
AI自动盯盘与定时行情分析:OpenClaw股票辅助Agent集成完整使用指南-周红伟
运维·服务器·人工智能·音视频·火山引擎
YWamy1 天前
国产视频会议核心技术解析:架构、特性与全场景落地
音视频
REDcker1 天前
WebRTC 接收端音频流畅低延迟播放:原理与源码对照(NetEQ / Opus)
音视频·webrtc