如何解决浏览器音视频video/audio设置自动播放autoplay无效问题?

问题背景:

项目需要在用户初始化登录进去时,查看消息列表,有消息则需提示消息提示音,这就需要解决浏览器音视频无法设置自动播放问题。

解决方案:

1、首先造成这个问题的原因在于chrome浏览器为了防止网页广告,在2018年取消了自动播放功能,需要手动配置。

配置分新旧版本:

  • 旧版本:

        (1)在浏览器搜索框中输入:chrome://flags/        (2)在上图页面搜索框中输入 Autoplay 搜索

(3)找到  Autoplay policy 项,将默认值  Default  修改成下拉框中  No user gesture is required

 (4)点击右下角  Relaunch Now  按钮,保存设置即可。

  • 新版本:

    针对新版本,在上述第二步搜索 Autoplay 会搜索不到,如下图,

        此时,可 点击页面地址栏左侧符号,将下图  麦克风  和  声音  都改为  允许  即可,如下图

 

 2、配置了解决浏览器禁止autoplay政策后,问题并没有解决,这个时候使用 video/audio 会发现,报错如下:

 这个报错,是需要先有实质的界面上的dom操作,才可以正常播放(随便在界面上点一下,既可以正常播放,但一定要有这个点击或是其他操作了dom的动作),显然还是无法满足我们初始化播放的需求。


(分割线,下方一定要看)

在经历了上面的问题后,接下来回归正题:

(1)第一步,新建一个div容器,如下:

<div id='audioPay'></div>

注意不要设置display:none否则会无法播放声音,可以对音频设置hidden属性

(2)js中向容器中插入音频容器:

function play(src,type){
			$("<embed id='embVoice' name='embed_"+type+"' src='"+src+"' autostart=true  hidden=true muted='muted'></embed>").appendTo("#audioPay");
			var interTimePay = setInterval(function (){
				try{
					var embedVoice = document.getElementById('embVoice');
					if (!embedVoice) {
						$("<embed id='embVoice' name='embed_"+type+"' src='"+src+"' autostart=true  hidden=true muted='muted'></embed>").appendTo("#audioPay");
					}
					setTimeout(function() {
						$('#embVoice').remove();
					}, 9000)
				}catch(e){
					console.log("播放声音出现异常!", e);
				}
			},10000);
        }
		var src="video.mp3";
		var type="type";
		play(src,type);

 这里用的是 embed 媒体标签,原理是,播放的时候插入embed 标签,不需要播放的时候移除 embed 标签。

 

以上,便可以完美实现初始化播放音频了,视频同理,且测试过360浏览器极速和兼容模式,都可以完美播放哦~

@有用的话,给个小心心♥(ˆ◡ˆԅ)吧~@

  • 8
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陌盍

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值