国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

瀏覽器自動(dòng)播放音視頻-前端實(shí)現(xiàn)方案

這篇具有很好參考價(jià)值的文章主要介紹了瀏覽器自動(dòng)播放音視頻-前端實(shí)現(xiàn)方案。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

目錄

前言

瀏覽器自動(dòng)播放策略

策略詳情:

實(shí)現(xiàn)方案?

方案1: 互動(dòng)后播放

方案2: 互動(dòng)后出聲

總結(jié)


前言

在開發(fā)中可能有遇到這樣的需求,當(dāng)用戶打開頁(yè)面后,需要自動(dòng)播放視頻或音頻,按理說(shuō)那就打開頁(yè)面時(shí)play()一下不就搞定了嗎,但實(shí)際情況很明顯不是,不然也沒(méi)得這篇文章嘍,要實(shí)現(xiàn)這個(gè)需求,我們得先了解一下瀏覽器自動(dòng)播放策略。再給出相應(yīng)解決方案。

瀏覽器自動(dòng)播放策略

Chrome瀏覽器的自動(dòng)播放策略自Chrome66起生效,動(dòng)機(jī)是改善用戶體驗(yàn)

策略詳情:

Chrome 的自動(dòng)播放政策很簡(jiǎn)單:

  1. 始終允許靜音自動(dòng)播放。
  2. 在以下情況下,帶聲音的自動(dòng)播放會(huì)被允許:
    1. 用戶已經(jīng)與當(dāng)前域進(jìn)行了交互(click、tap)
    2. 在桌面設(shè)備上,用戶的==媒體參與度==指數(shù)閾值已超過(guò),這意味著用戶之前播放過(guò)有聲視頻。
    3. 用戶已將網(wǎng)站添加到移動(dòng)設(shè)備上的主屏幕或在桌面上安裝了 PWA。
  3. 頂部幀可以將自動(dòng)播放權(quán)限委派給其 iframe,以允許自動(dòng)播放聲音。

==媒體參與度(MEI,?Media Engagement Index)==

媒體參與度?(MEI) 是衡量個(gè)人在網(wǎng)站上使用多媒體的傾向。

它是一個(gè)數(shù)字,可通過(guò)?chrome://media-engagement/?查看。

數(shù)值越高,用戶對(duì)該站點(diǎn)的媒體參與度越高,就越有機(jī)會(huì)自動(dòng)播放。

但對(duì)于開發(fā)者而言:

????????媒體參與度的計(jì)算規(guī)則無(wú)法通過(guò)技術(shù)手段更改

????????媒體參與度的計(jì)算規(guī)則不同版本的瀏覽器可能會(huì)有變動(dòng)

瀏覽器自動(dòng)播放聲音,前端基礎(chǔ),音視頻,前端,javascript,node.js,html,css

?

實(shí)現(xiàn)方案

首先呢,我們直接在用戶進(jìn)入頁(yè)面的時(shí)候play(),可以發(fā)現(xiàn)視頻并沒(méi)有播放,并且報(bào)錯(cuò)Uncaught (in promise) DOMException: play() failed because the user didn't interact with the document first

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <link rel="stylesheet" href="./index.css" />
  </head>
  <body>
    <div class="vdo-container">
      <video src="./test.mp4"></video>
    </div>
    <script>
      const vdo = document.querySelector('video');
      vdo.play();
    </script>
  </body>
</html>

瀏覽器自動(dòng)播放聲音,前端基礎(chǔ),音視頻,前端,javascript,node.js,html,css

這個(gè)錯(cuò)誤的意思是瀏覽器已經(jīng)嘗試在沒(méi)有用戶交互的情況下播放媒體文件,但是因?yàn)檫@是不允許的,所以瀏覽器拒絕了該操作。如果沒(méi)有這個(gè)保護(hù)機(jī)制,那么網(wǎng)站可以在用戶不知情的情況下播放音頻和視頻,這是不安全和不負(fù)責(zé)任的行為。?

?

方案1: 互動(dòng)后播放

先嘗試自動(dòng)播放,若發(fā)生異常,則引導(dǎo)用戶進(jìn)行互動(dòng)操作,然后再進(jìn)行播放

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>互動(dòng)后播放</title>
    <link rel="stylesheet" href="./index.css" />
  </head>
  <body>
    <div class="vdo-container">
      <video src="./test.mp4"></video>
      <div class="modal">
        <button class="btn">開始播放</button>
      </div>
    </div>

    <script>
      const vdo = document.querySelector('video');
      const modal = document.querySelector('.modal');
      const btn = document.querySelector('.btn');
      async function play() {
        try {
          await vdo.play();
          modal.style.display = 'none';
          btn.removeEventListener('click', play);
        } catch (err) {
          modal.style.display = 'flex';
          btn.addEventListener('click', play);
        }
      }
      play();
    </script>
  </body>
</html>

瀏覽器自動(dòng)播放聲音,前端基礎(chǔ),音視頻,前端,javascript,node.js,html,css

?進(jìn)入頁(yè)面后發(fā)現(xiàn)不能自動(dòng)播放,這時(shí)顯示開始播放按鈕,用戶點(diǎn)擊后開始播放。

瀏覽器自動(dòng)播放聲音,前端基礎(chǔ),音視頻,前端,javascript,node.js,html,css

方案2: 互動(dòng)后出聲

先靜音播放,然后根據(jù)是否能自動(dòng)播放決定是否取消靜音,如果:

  1. 能自動(dòng)播放,取消靜音
  2. 不能自動(dòng)播放,引導(dǎo)用戶進(jìn)行互動(dòng)操作后取消靜音
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>互動(dòng)后取消靜音</title>
    <link rel="stylesheet" href="./index.css" />
  </head>
  <body>
    <div class="vdo-container">
      <video src="./test.mp4"></video>
      <div class="modal">
        <button class="btn">打開聲音</button>
      </div>
    </div>

    <script>
      const vdo = document.querySelector('video');
      const modal = document.querySelector('.modal');
      const btn = document.querySelector('.btn');
      function play() {
        vdo.muted = true; // 靜音
        vdo.play();
        const ctx = new AudioContext();
        const canAutoPlay = ctx.state === 'running';
        ctx.close();
        if (canAutoPlay) {
          vdo.muted = false;
          modal.style.display = 'none';
          btn.removeEventListener('click', play);
        } else {
          modal.style.display = 'flex';
          btn.addEventListener('click', play);
        }
      }
      play();
    </script>
  </body>
</html>

瀏覽器自動(dòng)播放聲音,前端基礎(chǔ),音視頻,前端,javascript,node.js,html,css

進(jìn)入頁(yè)面后靜音播放視頻,然后判斷是否允許自動(dòng)播放,如果允許,則取消靜音,但我們這里不允許,所以顯示打開聲音按鈕。?

瀏覽器自動(dòng)播放聲音,前端基礎(chǔ),音視頻,前端,javascript,node.js,html,css

引用的index.css文件內(nèi)容如下:

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

.vdo-container {
  width: 50%;
  margin: 1em auto;
  position: relative;
}
video {
  display: block;
  width: 100%;
}
.modal {
  position: absolute;
  inset: 0;
  background: rgba(0, 0, 0, 0.5);
  display: flex;
  justify-content: center;
  align-items: center;
  display: none;
}
.btn {
  border: none;
  outline: none;
  background: #409eff;
  color: #fff;
  display: inline-block;
  line-height: 1;
  white-space: nowrap;
  cursor: pointer;
  text-align: center;
  transition: 0.1s;
  font-weight: 500;
  user-select: none;
  padding: 12px 20px;
  font-size: 14px;
  border-radius: 4px;
}
.btn:hover {
  background: #66b1ff;
}
.btn:active {
  background: #3a8ee6;
}
.btn:disabled {
  background: #66b1ff80;
  cursor: not-allowed;
}

?

?

總結(jié)

如果文中出現(xiàn)有瑕疵的地方各位通過(guò)評(píng)論或者私信聯(lián)系我,我們一起進(jìn)步,有興趣的伙伴可以關(guān)注訂閱一下:點(diǎn)擊查看更多實(shí)用技巧及技術(shù)

?瀏覽器自動(dòng)播放聲音,前端基礎(chǔ),音視頻,前端,javascript,node.js,html,css文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-759757.html

到了這里,關(guān)于瀏覽器自動(dòng)播放音視頻-前端實(shí)現(xiàn)方案的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • JavaScript音視頻,使用JavaScript如何在瀏覽器錄制電腦攝像頭畫面為MP4視頻文件并下載視頻文件到本地

    本章介紹使用JavaScript如何在瀏覽器錄制電腦攝像頭畫面為MP4視頻文件并下載視頻文件到本地。 1、使用navigator.mediaDevices.getUserMedia獲取攝像頭畫面 2、將獲取到的攝像頭畫面渲染到canvas畫板上 3、將canvas轉(zhuǎn)換為blob對(duì)象 4、通過(guò)document.createElement(‘a(chǎn)’)調(diào)用 href 方法獲取此鏈接并觸

    2024年02月02日
    瀏覽(31)
  • 微信瀏覽器無(wú)法自動(dòng)播放視頻幾種解決方式

    微信瀏覽器無(wú)法自動(dòng)播放視頻幾種解決方式

    公司頁(yè)面設(shè)計(jì)打開頁(yè)面需要播放一個(gè)過(guò)場(chǎng)的MP4視頻,在電腦上手機(jī)上都沒(méi)啥事但是在手機(jī)微信瀏覽器里面視頻是無(wú)法自動(dòng)播放的。 網(wǎng)上教你的方式無(wú)非就是 還有什么頁(yè)面window.onload的時(shí)候利用setInterval延時(shí)一小段時(shí)間的 但是這基本都是無(wú)效的 因?yàn)?微信官方已經(jīng)聲明了 靠譜的

    2024年02月11日
    瀏覽(63)
  • chrome和edge瀏覽器,實(shí)現(xiàn)視頻不靜音自動(dòng)播放

    chrome和edge瀏覽器,實(shí)現(xiàn)視頻不靜音自動(dòng)播放

    chrome a.先打開網(wǎng)站的設(shè)置 b.找到聲音設(shè)置,將 自動(dòng)(默認(rèn))修改為 允許,然后刷新原網(wǎng)頁(yè)即可。 microsoft edeg a.和chorme一樣的操作,先打開設(shè)置。 b.選擇cookie和網(wǎng)站權(quán)限,找到媒體自動(dòng)播放設(shè)置后進(jìn)入。 c.設(shè)置為允許即可。當(dāng)然如果你只想要某些網(wǎng)站允許自動(dòng)播放,可以在下

    2024年02月12日
    瀏覽(34)
  • 谷歌chrome瀏覽器無(wú)法自動(dòng)播放video標(biāo)簽視頻的問(wèn)題

    谷歌chrome瀏覽器無(wú)法自動(dòng)播放video標(biāo)簽視頻的問(wèn)題

    問(wèn)題根源詳見(jiàn): Chrome中的自動(dòng)播放政策??https://developer.chrome.com/blog/autoplay/ ?The Autoplay Policy launched in Chrome 66 for audio and video elements and is effectively blocking roughly half of unwanted media autoplays in Chrome. For the Web Audio API, the autoplay policy launched in Chrome 71. This affects web games, some WebRTC appli

    2024年02月11日
    瀏覽(121)
  • uniapp中運(yùn)行至微信瀏覽器(客戶端)視頻自動(dòng)播放

    uniapp中運(yùn)行至微信瀏覽器(客戶端)視頻自動(dòng)播放

    屬性解釋 v-if=\\\"isShow\\\" :用于根據(jù) isShow 的值來(lái)判斷是否顯示該視頻標(biāo)簽。如果 isShow 的值為 true ,則顯示視頻。 :id=\\\"list._id+\\\'_\\\'+index\\\" :為視頻元素設(shè)置一個(gè)唯一的 id ,通常是使用 _id (可能是視頻的唯一標(biāo)識(shí)符)與 index (循環(huán)索引)的組合。 ref=\\\"videoPlayer\\\" :為視頻元素設(shè)置一

    2024年02月13日
    瀏覽(25)
  • 前端學(xué)習(xí)之音視頻及其谷歌瀏覽器無(wú)法自動(dòng)播放的解決方法(3)

    前端學(xué)習(xí)之音視頻及其谷歌瀏覽器無(wú)法自動(dòng)播放的解決方法(3)

    目錄 一、音視頻的應(yīng)用: ?二、谷歌瀏覽器音視頻無(wú)法播放的解決方法 方法1:在代碼中敲入下圖中的js代碼 方法2:網(wǎng)站設(shè)置 在vscode中敲入 ?打開瀏覽器,音視頻自動(dòng)播放。 方法1:在代碼中敲入下圖中的js代碼 給音頻設(shè)置一個(gè)id,用方法實(shí)現(xiàn)自動(dòng)播放: ?點(diǎn)擊一下頁(yè)面音頻

    2024年02月03日
    瀏覽(21)
  • 解決谷歌瀏覽器無(wú)法自動(dòng)播放HTML文件的聲音和視頻問(wèn)題的方法

    解決谷歌瀏覽器無(wú)法自動(dòng)播放HTML文件的聲音和視頻問(wèn)題的方法

    首先,先檢測(cè)一下瀏覽器是否能支持自動(dòng)播放,點(diǎn)擊下方鏈接進(jìn)行檢測(cè): https://video-dev.github.io/can-autoplay/ 本人檢測(cè)的谷歌瀏覽器結(jié)果是: 結(jié)果顯示,谷歌瀏覽器不能支持有聲自動(dòng)播放視頻和音頻,包括內(nèi)聯(lián)的視頻,但靜音的視頻是支持支持自動(dòng)播放的,但靜音的音頻功能依

    2024年02月01日
    瀏覽(55)
  • vue中使用video插件在微信瀏覽器中視頻無(wú)法自動(dòng)播放的問(wèn)題

    測(cè)試機(jī):安卓華為p30,ios暫未測(cè)試,不過(guò)看網(wǎng)上說(shuō)的ios比較好設(shè)置,以下代碼也設(shè)置了兼容 js 是的,你沒(méi)看錯(cuò),就是這么簡(jiǎn)單,并沒(méi)有網(wǎng)上那么復(fù)雜的獲取什么什么的,因?yàn)槲叶荚囘^(guò)坑了,到最后發(fā)現(xiàn)直接在created中就能解決問(wèn)題

    2024年02月11日
    瀏覽(23)
  • video標(biāo)簽設(shè)置了autoplay,自帶音頻的視頻在谷歌瀏覽器仍無(wú)法自動(dòng)播放

    原因分析:谷歌瀏覽器可以自動(dòng)播放視頻,不能自動(dòng)播放音頻。如果視頻中自帶音頻就會(huì)導(dǎo)致該視頻無(wú)法自動(dòng)播放。 解決辦法:在video標(biāo)簽加上靜音屬性muted,自帶音頻的視頻就可以自動(dòng)播放了,但是該視頻無(wú)聲音。 備注:1、這是谷歌瀏覽器自身的問(wèn)題。2、Safari瀏覽器可正

    2024年02月12日
    瀏覽(28)
  • 前端視頻無(wú)法自動(dòng)播放的問(wèn)題,基于Chrome瀏覽器的自動(dòng)播放策略原理,詳細(xì)解釋加了autoplay屬性之后視頻仍然不能自動(dòng)播放的問(wèn)題,并提供了二種主流的解決方法

    前端視頻無(wú)法自動(dòng)播放的問(wèn)題,基于Chrome瀏覽器的自動(dòng)播放策略原理,詳細(xì)解釋加了autoplay屬性之后視頻仍然不能自動(dòng)播放的問(wèn)題,并提供了二種主流的解決方法

    目錄 一,什么是Chrome瀏覽器的自動(dòng)播放策略?(原理講解,懂了原理解決問(wèn)題就會(huì)非常簡(jiǎn)單) 1.生活場(chǎng)景中的案例 2.Chrome自動(dòng)播放策略 3.什么是媒體參與度? 二: 案例演示(無(wú)法播放的情況) 1.使用autoplay屬性 2.我們使用js來(lái)控制視頻自動(dòng)播放 3.這究竟是為什么 三.解決方案

    2024年02月09日
    瀏覽(38)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包