PHP如何实现无控件自动播放且禁用缓存的后台音频播放
方案实现(自动播放+无控件+无缓存+不唤起外部播放器)
1 前端audio标签改造(解决缓存、无样式问题)
给audio标签去掉controls属性、添加hidden属性完全隐藏,同时给资源地址拼接动态时间戳参数强制禁用缓存,示例代码如下:
<audio id="bgAudio" autoplay hidden> <source type="audio/mpeg"> </audio> <script> const bgAudio = document.getElementById('bgAudio') // 传入音频地址触发播放,每次调用都会生成无缓存的新地址 function playBgAudio(url) { bgAudio.src = `${url}?t=${Date.now()}` // 兜底处理浏览器自动播放限制,部分浏览器需要用户首次交互后才能触发播放 bgAudio.play().catch(() => { document.addEventListener('click', () => bgAudio.play(), { once: true }) }) } // 调用示例,替换为你的实际音频地址或PHP接口地址 playBgAudio('sound.mp3') </script>
2 流式输出侧调整(解决唤起视频播放器问题)
如果你保留PHP流式输出方案,只需在PHP响应头中明确指定音频类型,避免浏览器误识别为视频资源:
<?php // 原有流逻辑不变,补充以下响应头配置 header('Content-Type: audio/mpeg'); // 服务端也加禁用缓存的头,双重保障 header('Cache-Control: no-cache, no-store, must-revalidate'); header('Pragma: no-cache'); header('Expires: 0'); // 输出你获取到的微软TTS MP3流即可 echo $mp3_stream_content; exit; ?>
内容的提问来源于stack exchange,提问作者Jindrich Kratochvil
相关产品推荐
相关产品推荐

