阿里云 Aliplayer高级功能介绍(九):自动播放体验

基本介绍
经常会碰到客户询问,为什么我设置了autoplay为true,但是没有自动播放,每次都要向客户解释这个是浏览器从用户体验角度考虑做的限制,客户会继续询问那我要怎么做? 针对这个问题Aliplayer也专们做过优化,提供一些方式让客户能更好的处理这种情况。

现象描述
有声音视频无法自动播放这个在移动端上一直都是这个限制,桌面版的Safari在2017年的11版本也宣布禁掉带有声音的多媒体自动播放功能,Chrome也在2018年4月份发布的66版本也正式关掉了声音自动播放,也就是说通过H5方式播放音视频在桌面版浏览器自动播放会失效。

<audio autopaly></audio>
<video autoplay></video>
浏览器厂家为什么要禁止自动播放的呢? 移动端主要考虑的是手机的带宽以及对电池的消耗,Chrome主要基于下面的考虑:

improve the user experience
minimize incentives to install ad blockers
reduce data consumption on expensive and/or constrained networks 总之一句话,从用户角度考虑。
破解之法
只要视频没有声音或者有用户交互了就可以播放, 现在来看一下Safari和Chrome的具体政策:

Safari允许自动播放政策,具体请查看Safari Video Policy:

视频没有音轨
Video设置为muted,<video muted>
当Video元素不可见,比如CSS设置为display:none或者滚动到非可见区域,视频将会被暂停
Chrome允许自动播放政策: 具体请查看Chrome Autoplay

静音的视频
有用户行为交互
符合Media Engagement Index,只要用户在当前网页主动播放过超过7s的音视频(视频窗口不能小于200 x 140)
移动端用户添加网站到首页屏幕(主要是PWA应用)
嵌套到IFrame,允许自动播放,比如:

<!-- Autoplay is allowed. -->
<iframe src="https://cross-origin.com/myvi...; allow="autoplay">

<!-- Autoplay and Fullscreen are allowed. -->
<iframe src="https://cross-origin.com/myvi...; allow="autoplay; fullscreen">

总结一下共同点: 静音视频或者有用户交互,对于不能自动播放的浏览器可以使用的方法如下:

  1. 先把音视频加一个muted的属性让视频可以自动播放,页面再显示一个关闭声音的按钮,提示用户打开声音
  2. 如果检测到浏览器自动播放失败,提示用户点击播放

Aliplayer的使用
对于上面两种方式Aliplayer提供了对应功能,帮助用户去实现更好的用户体验。

检测浏览器是否能够自动播放
Aliplayer提供了'autoplay'事件,用于通知当前视频是否满足浏览器自动播放的政策,如果不满足返回false,否则为true。

player.on('autoplay', function(data) {

 if(data.paramData) //可以自动播放{//隐藏提示}else //不可以自动播放{//显示提示用户点击播放}

});
效果如下:

图片描述

静音播放
对于一些无需播放声音的场景比如视频监控,可以让视频静音然后自动播放,后期用户可以通过音量控制UI开启声音。 代码如下:

let player = new Aliplayer({

        id: 'J_prismPlayer',width: '100%',height:'100%',autoplay: true,source : 'https://sdk.fantasy.tv/hc.mp4'},function(player){//先静音然后播放player.mute();player.play();});});

效果如下:
图片描述

iOS微信自动播放
iOS 的微信可以在WeixinJSBridgeReady事件里调用play方法,让视频自动播放, 这个hack方式在Android手机不起作用, 具体代码如下:

<script src="http://res.wx.qq.com/open/js/...;></script>
<script>
let player = new Aliplayer({

  id: 'J_prismPlayer',width: '100%',height:'100%',autoplay: true,source : 'https://sdk.fantasy.tv/hc.mp4'

});
$(document).on('WeixinJSBridgeReady',()=>{

   if(player.tag){player.tag.play();}

});
</script>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/449549.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

指数定投(行不行学习)

import tushare as ts import pandas as pd import numpy as np from scipy import stats import tushare as ts import matplotlib.pyplot as plt %matplotlib inline #正常显示画图时出现的中文和负号 from pylab import mpl mpl.rcParams[font.sans-serif][SimHei] mpl…

centOS安装python3.7.2

1.查看centos中自带的Python地址&#xff1a;which python&#xff08;一般在 /usr/bin/python&#xff09; 2.切换到python安装目录&#xff1a;cd /usr/bin 3.查看对应的Python版本指向&#xff1a;ls -l python* 4.创建一个空目录&#xff1a;mkdir /usr/local/python3 5.…

有进度条圆周率Π计算

圆周率π的计算 一、圆周率π的简介 圆周率的介绍圆周率用希腊字母 π&#xff08;读作pi&#xff09;表示&#xff0c;是一个常数&#xff08;约等于3.141592654&#xff09;&#xff0c;是代表圆周长和直径的比值。它是一个即无限不循环小数&#xff0c;在日常生活中&#xf…

期权制作回测数据

将指定的档位的期权&#xff0c;指定阶段剩余到期日的期权数据合并&#xff0c;用于回测 import pandas as pd import numpy as np import akshare as ak pd.set_option("display.max_rows",None) pd.set_option("display.max_columns",None)nh_price ak…

HEVC/H265 HM10.0 分析(一)NALread.cpp

下面分析 NALread.cpp 函数和代码。 void read(InputNALUnit& nalu, vector<uint8_t>& nalUnitBuf) {/* perform anti-emulation prevention */TComInputBitstream *pcBitstream new TComInputBitstream(NULL);convertPayloadToRBSP(nalUnitBuf, (nalUnitBuf[0]…

Docker run 命令 参数说明

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 docker run &#xff1a;创建一个新的容器并运行一个命令 语法 docker run [OPTIONS] IMAGE [COMMAND] [ARG...][OPTIONS] IMAGE [COM…

【云周刊】第205期:阿里云重磅开源实时计算平台Blink,挑战计算领域的“珠峰”...

本期头条 阿里云重磅开源实时计算平台Blink&#xff0c;挑战计算领域的“珠峰” 信息爆炸的时代&#xff0c;智能推荐已经被应用到各类互联网产品中&#xff0c;但为千万级甚至亿级规模的用户实时做精准的推荐难度极高。这一难题已经被阿里攻克了&#xff1a;双11的第1分钟&…

凯特勒通道(backtrader)

import backtrader as bt import datetime import pandas as pd import matplotlib.pyplot as plt import backtrader.analyzers as btanalyzers#定义指标 class Ketler(bt.Indicator):params dict(ema20,atr 17)lines (expo,atr,upper,lower)plotinfo dict(subplot False)p…

MYSQL安装报错 -- 出现Failed to find valid data directory.

运行环境&#xff1a;windows10数据库版本&#xff1a;mysql.8.0.12安装方式&#xff1a;rpm包直接安装 问题描述&#xff1a;mysql初始化的时候找不到对应的数据库存储目录 报错代码&#xff1a; 2018-10-13T03:29:24.179826Z 0 [System] [MY-010116] [Server] D:\Program Fil…

Mysql 取用逗号分隔的字串的子串的方法:SUBSTRING_INDEX

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 有一张部门表&#xff1a;appbricks_department &#xff0c;有 id 字段和 rank_tree 字段。 rank_tree&#xff1a;记录的是当前部门的…

UCloud首尔机房整体热迁移是这样炼成的

2019独角兽企业重金招聘Python工程师标准>>> 2018年下半年&#xff0c;UCloud首尔数据中心因外部原因无法继续使用&#xff0c;需要在很短时间内将机房全部迁走。为了不影响用户现网业务&#xff0c;我们放弃了离线迁移方案&#xff0c;选择了非常有挑战的机房整体热…

akshare双均线backtrader

# -*- coding: utf-8 -*- """ Created on Tue Aug 4 16:52:23 2020author: 四屏 """from datetime import datetime %matplotlib inline import backtrader as bt import matplotlib.pyplot as plt import akshare as akplt.rcParams["fon…

与python相关计算机基础知识

一、编程与编程的目的1、什么是语言&#xff1f;什么是编程语言&#xff1f; 语言是一种事物与另外一个事物沟通的介质 编程语言是程序员与计算机沟通的介质 2、什么是编程&#xff1f; 程序员把自己想让计算机做的事用编程语言表达出来 编程的结果就是一系…

HEVC/H265 HM10.0 分析(二)TComDataCU.cpp

以下分析TComDataCU.cpp。这个cpp是很重要的&#xff0c;要分几次分析完&#xff0c;这是分析TComDataCU.cpp&#xff08;一&#xff09;。 Void TComDataCU::getPartPosition( UInt partIdx, Int& xP, Int& yP, Int& nPSW, Int& nPSH) {UInt col m_uiCUPelX;…

定制化你的ReactNative底部导航栏

前言 ​ 接触过ReactNative(以下简称RN)的大概都知道,react-navigation提供了两种开箱即用的导航栏组件 createBottomTabNavigatorcreateMaterialBottomTabNavigator分别是这样的 尽管官方提供了导航栏的开箱即用方案,但是实际开发里面,我们会遇到各种各样的导航栏,各种各样的动…

backtrader入坑1

烦死我了&#xff0c;不想玩backtrader&#xff0c;因为它只是个回测框架&#xff0c;数据库&#xff0c;下单界面和国内都不能有效对接&#xff0c;早期就是玩玩&#xff0c;图个乐子。还有学习它的代码编写逻辑&#xff0c;大概玩通了以后&#xff0c;完全不想碰它。感觉现在…

PHP 处理金额

导语 涉及到金额的代码&#xff0c;一定要谨慎处理。刚好最近做了相关的功能&#xff0c;下面大概说一下。 存储 PHP 的浮点数是不能精确计算的&#xff0c;具体的可以看这篇文章。所幸的是&#xff0c;金额一般不会有太多的小数。那么存储的时候呢&#xff0c;一言以蔽之&…

HEVC/H265 HM10.0 分析(三)TAppDecTop.cpp

在TAppDecTop.cpp ,最重要的是decode 函数&#xff0c;下面将对其进行分析&#xff0c;是解码上层的一个重要函数。 代码如下&#xff0c;代码后将进行分析。 Void TAppDecTop::decode() {Int poc;TComList<TComPic*>* pcListPic NULL;ifstream bits…

windows下xmllib2使用简介 64位

1&#xff1a;环境配置 包含目录下 包含include libxml2_64\include     包含xmllib库路径  libxml2_64 注意 libxml分为32位程序和64位程序&#xff0c;这两种的环境需要的lib不一样&#xff0c;需要分别下载 需要使用库 libxml2.lib 注意&#xff1a…

backtrader2

backtrader的基本策略构成&#xff1a; #构成 #Backtrader 回测代码编写流程如下&#xff1a; import backtrader as bt # 导入 Backtrader import backtrader.indicators as btind # 导入策略分析模块 import backtrader.feeds as btfeeds # 导入数据模块# 创建策略 class T…