阿里云 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.pswp.cn/news/449549.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/449549.shtml
英文地址,請注明出處:http://en.pswp.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…