video 使用hls时报错--Uncaught (in promise) DOMException: play() failed because the user didn‘t interact

浏览器不允许视频有声音时自动播放,所以给视频静音后即可自动播放

<video muted></video>

然后待用户在网页上有了任意触发后,再将muted去掉。或者让用户手动去打开音频。或者让controls控件的音量控件显示出来,手动调整音量大小。

### 解决浏览器中播放音频或视频因用户未与文档交互而引发的 NotAllowedError 错误 现代浏览器为了提升用户体验并减少不必要的资源消耗,实施了严格的自动播放策略。当尝试调用 `play()` 方法但在之前没有任何用户互动发生,可能会抛出 `NotAllowedError` 或者类似的异常[^1]。 #### 使用静默播放模式 一种常见的解决方案是在首次播放媒体文件不发出声音: ```javascript videoElement.muted = true; videoElement.play(); ``` 这允许视频在没有用户交互的情况下启动播放,但需要注意的是,某些浏览器仍然可能阻止这种行为取决于其具体实现和配置。 #### 请求用户交互触发播放 另一种方法是等待用户的第一次点击或其他形式的操作来初始化多媒体内容的回放过程。可以通过监听按钮或者其他可点击元素上的事件来进行处理: ```html <button id="startVideo">Start Video</button> <video id="myVideo"></video> <script type="text/javascript"> document.getElementById('startVideo').addEventListener('click', function () { const video = document.getElementById('myVideo'); video.play().catch(error => console.log(`Playback failed: ${error}`)); }); </script> ``` 这种方法确保了只有在获得明确许可之后才会执行实际的播放操作,从而避免违反浏览器的安全政策。 #### 修改服务器响应头 对于 HTTP Live Streaming (HLS) 和其他流式传输协议的支持情况,有调整 Web 服务器返回给客户端的数据包头部信息也能帮助解决问题。特别是设置正确的 MIME 类型可以改善兼容性和性能表现。 例如,在 Nginx 中添加如下配置项: ```nginx location /hls/ { types { application/vnd.apple.mpegurl m3u8; video/mp2t ts; } } ``` 不过上述措施主要针对特定类型的流媒体服务,并不直接关联到解决由缺乏初始用户动作所引起的不允许播放错误上。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值