【第2009期】實現 Bilibili 視頻播放Chrome 媒體控制效果

2021-03-02 前端早讀課

前言

這個API挺酷的,直接把畫中畫都集成進去了。今日早讀文章由阿里@蒲歡授權分享。

正文從這開始~~

Chrome 最新的版本更新了媒體控制菜單的按鈕 UI,也就是每次我們的網頁產生聲音或者視頻時候,菜單欄頭像附近,方便我們在多個 Tab 進行控制時候加的,方便我們操作這些網頁 Tab 下面的音視頻。

尤其最新的樣式實現非常酷炫,加入對封面的支持,這樣整體效果看著非常棒。

很早之前我們寫過一篇關於 使用 mediaSession 實現媒體播放的通知欄控制 這裡介紹了我們如何在網頁播放音頻的時候鎖屏控制項如何顯示當前播放音樂的封面和簡介,或者控制上一曲下去。

同意視頻播放現在也可以,你只需要監聽 MediaSession 的相關事件然後設置 mediaSession MetaData 的信息就好。

設置封面標題

if ('mediaSession' in navigator) {

var data = mediaList[index]

navigator.mediaSession.metadata = new MediaMetadata({

title: data.title,

artist: data.director,

artwork: [

{ src: data.cover, sizes: '192x192' }

]

});

}

進行播放控制

// $video has been attached with the DOM element

if ('mediaSession' in navigator) {

var ms = navigator.mediaSession

ms.setActionHandler('play', function () {

$video.play()

});

ms.setActionHandler('nexttrack', function () {

playNext()

});

ms.setActionHandler('previoustrack', function () {

playPrev()

});

ms.setActionHandler('pause', function() {

$video.pause()

});

}

這個在 Android 手機上依舊有效

具體實現代碼

<!doctype html>

<html lang="en">

<head>

<title>實現類似 BiLiBiLi 的播放浮層控制</title>

<meta charset="utf-8">

<meta http-equiv="X-UA-Compatible" content="IE=edge">

<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">

<link rel="stylesheet" href="//cdn.jsdelivr.net/bootstrap/3.3.6/css/bootstrap.min.css" />

<style type="text/css">

html {

font-family: sans-serif;

-ms-text-size-adjust: 100%;

-webkit-text-size-adjust: 100%;

font-size: 62.5%;

-webkit-tap-highlight-color: transparent

}

body {

font-family: 'Helvetica Neue', '\5FAE\8F6F\96C5\9ED1', '\9ED1\4F53', sans-serif;

letter-spacing: .01rem;

font-size: 15px;

line-height: 1.75em;

color: #3A4145;

-webkit-font-feature-settings: 'kern'1;

-moz-font-feature-settings: 'kern'1;

-o-font-feature-settings: 'kern'1;

}

h1 {

padding-top: 40px;

text-align: center;

}

.main {

max-width: 720px;

margin: 80px auto;

text-align: center;

}

.main video {

max-width: 100%;

height: auto;

}

</style>

<script src="https://lib.baomitu.com/jquery/3.4.1/jquery.min.js"></script>

</head>

<body class="doc">

<h1>實現類似 BiLiBiLi 的播放浮層控制</h1>

<div class="main">

<video controls poster="https://img1.wxzxzj.com/vpc-example-cover-your-name-c.png"

src="https://media.vued.vanthink.cn/sparkle_your_name_am360p.mp4" />

</div>

<script type="text/javascript">

var mediaList = [{

src: 'https://media.vued.vanthink.cn/CJ7%20-%20Trailer.mp4',

cover: 'https://img1.wxzxzj.com/vpc-example-cover-CJ7-c.jpg',

title: "長江七號-周星馳導演作品,關於外星人的童話故事"

}, {

src: 'https://media.vued.vanthink.cn/sparkle_your_name_am360p.mp4',

cover: 'https://img1.wxzxzj.com/vpc-example-cover-your-name-c.png',

title: "你的名字-新海誠導演作品,穿越彼此的身體,遇見不可思議"

}, {

src: 'https://media.vued.vanthink.cn/the_garden_of_words_trailer_english__1080p.mp4',

cover: 'https://img1.wxzxzj.com/vpc-example-cover-the-garden-c.jpg',

title: "言葉之庭-新海誠導演作品,下雨天靜謐的動靜也有唯美的相遇"

}]

$(function () {

var $video = document.querySelector('video')

var index = 1

function playNext() {

if (index === 2) {

index = 0

} else {

index += 1

}

setMediaSession(index)

$video.src = mediaList[index].src

$video.play()

}

function playPrev() {

if (index === 0) {

index = 2

} else {

index -= 1

}

setMediaSession(index)

$video.src = mediaList[index].src

$video.play()

}

initMediaSession()

function setMediaSession(index) {

if ('mediaSession' in navigator) {

var data = mediaList[index]

navigator.mediaSession.metadata = new MediaMetadata({

title: data.title,

artist: data.director,

artwork: [

{ src: data.cover, sizes: '192x192' }

]

});

}

}

function initMediaSession() {

if ('mediaSession' in navigator) {

var ms = navigator.mediaSession

setMediaSession(index)

ms.setActionHandler('play', function () {

$video.play()

});

ms.setActionHandler('nexttrack', function () {

console.log(3333)

playNext()

});

ms.setActionHandler('previoustrack', function () {

playPrev()

});

// navigator.mediaSession.setActionHandler('pause', function() { /* Code excerpted. */ });

// navigator.mediaSession.setActionHandler('seekbackward', function() { /* Code excerpted. */ });

// navigator.mediaSession.setActionHandler('seekforward', function() { /* Code excerpted. */ });

// navigator.mediaSession.setActionHandler('previoustrack', function() { /* Code excerpted. */ });

// navigator.mediaSession.setActionHandler('nexttrack', function() { /* Code excerpted. */ });

}

}

})

</script>

</body>

</html>

擴展閱讀

關於本文作者:@蒲歡原文:https://www.jackpu.com/ru-he-shi-xian-bilibili-shi-pin-bo-fang-chrome-mei-ti-kong-zhi-xiao-guo/

@蒲歡曾分享過

【第1819期】Web 視頻播放前前後後

【第645期】寫給剛入門的前端工程師的前後端交互指南

歡迎自薦投稿,前端早讀課等你來

相關焦點

  • 實現 Bilibili 視頻播放Chrome 媒體控制效果
    正文從這開始~~Chrome 最新的版本更新了媒體控制菜單的按鈕 UI,也就是每次我們的網頁產生聲音或者視頻時候,菜單欄頭像附近,方便我們在多個 Tab 進行控制時候加的,方便我們操作這些網頁 Tab 下面的音視頻。尤其最新的樣式實現非常酷炫,加入對封面的支持,這樣整體效果看著非常棒。
  • bilibili收藏視頻專用:B站視頻下載助手
    嗶哩嗶哩下載助手(作者:indooorsman),今天就推薦一下如何試用這個B站下載助手下載B站視頻,還是很方便的。下載後的視頻格式為flv,如果你想通過Adobe Premiere ,對視頻進行二次剪輯創作,可以通過格式工廠轉換為mp4, 轉換過程中,幾乎沒有任何畫質損失如果你的下載過程不順利?請看插件設置:
  • PowerPoint視頻播放中的如何使用按鈕進行控制
    如果我們還需要對視頻播放加以控制,比如播放、暫停等,我們該如何實現呢?其實可以使用PowerPoint 2003中的觸發器來實現。  打開PowerPoint,插入視頻文件。在詢問「幻燈片放映時如何播放此視頻」的界面中選擇「單擊時」,接著則會在窗口中出現一個小的播放框,調整其大小至合適。  單擊「繪圖」工具欄中的「矩形」工具,拖拉出一個矩形框。
  • bilibili——差異化的商業道路
    嗶哩嗶哩成立於2009年6月26日,早期是一個ACG(動畫、漫畫、遊戲 )內容創作與分享的視頻網站,目標用戶為二次元群體。圖 bilibili banner廣告 圖源:部分來源網際網路3.1.3 信息流廣告信息流(Feeds)廣告,是在社交媒體用戶好友動態、或者資訊媒體和視聽媒體內容流中的廣告,信息流廣告已經成為媒體平臺流量變現的主要模式。
  • 最懂年輕人的晚會|bilibili晚會二零一九最美的夜 1080P高清視頻(內附新年福利)
    官方在線播放地址:https://www.bilibili.com/bangumi/play/ep307609https://www.bilibili.com/bangumi    10、如何實現在電視上播放我們微信電視直播    答:目前,很多手機第三方軟體,都有很多成熟的投屏軟體,大家在軟體市場下載安裝即可,藉助第三方軟體,就可以實現了手機投屏電視畫面到智能電視上,收看我們的微信電視直播服務了,未盡事宜,請聯繫我們客服人員。
  • 最懂年輕人的晚會|2020最美的夜 bilibili晚會 4K超高清視頻+杜比全景聲(內附新年福利)
    晚會由bilibili和央視頻聯合主辦,由武漢市文化和旅遊局、湖北廣電融媒體、NEW TV、香港電視廣播有限公司聯合製作。    10、如何實現在電視上播放我們微信電視直播    答:目前,很多手機第三方軟體,都有很多成熟的投屏軟體,大家在軟體市場下載安裝即可,藉助第三方軟體,就可以實現了手機投屏電視畫面到智能電視上,收看我們的微信電視直播服務了,未盡事宜,請聯繫我們客服人員。
  • 您可以輕鬆控制智能電視或通過Chromecast播放視頻
    有了它們,您可以輕鬆控制智能電視或通過Chromecast播放視頻 。電話也可以用於控制PC,但是您需要外部應用程式,例如XDA Senior Member ssrij的 PC Quick Commands之類的應用程式。
  • 快速實現3D視頻播放的入門知識
    到底要怎麼才能通過電視看到3D效果?需要什麼樣的軟硬體環境才能實現?對於這些問題,我們對相關問題作了整理,希望能幫助到大家。如果你想要看一部3D的視頻或歌曲MV,你首先需要一個支持3D視頻的顯示設備,無論是顯示器,還是投影儀,抑或是電視。只要設備明確說明了支持3D播放即可。其次你需要一個與您顯示設備配套的3D眼鏡。然後就是一個最普通的,可以播放視頻的PC或播放機。再然後...就沒有了。是的,你真的不需要其它複雜的設備了。這些就足夠了。
  • 下載嗶哩嗶哩視頻最好用的5個工具
    B站作為國內最大的彈幕視頻網站,上面不僅有二次元、宅腐文化、鬼畜、人力vl等相關圈內的相關內容,現在也發展成了一個有紀錄片、電視劇、電影、直播等等的綜合性娛樂平臺。可以說B站借著肥宅的力量發展的越來越大了。雖然有那麼多的內容和資源,不過B站官方一般是不給下載裡面的視頻的,那麼想下載的話怎麼辦呢?那就得藉助第三方工具啦。
  • 插件Bilibili新版0.5.5
    # bilibili for kodi 0.5.5## 簡介- bilibili是國內知名的視頻彈幕網站
  • 你真的會玩Chrome嗎?谷歌實驗室了解一下!
    在地址欄輸入:chrome://flags/ 即可打開實驗室,本文使用的版本為79.0.3945.88,版本不同,功能可能不同。也許後面幾個版本,下面的實驗功能,已經標配了。在這個頁面中,有兩個標籤頁,Available為可用功能,旁邊則為不可用功能。
  • Chrome引入Live Captions功能:提供實時字幕 - 太平洋電腦網
    在最新的 Chrome Canary 85 版本更新中,谷歌為網頁端的音頻和視頻內容提供了實時字幕功能--Live Captions。訪問chrome://flags頁面  3. 搜索"Live Captions"  4. 從下拉菜單中選擇 "已啟用"並重新啟動瀏覽器。  5. 單擊菜單 > 設置 > 高級 > 輔助功能 > 啟用實時字幕。  6. 訪問 YouTube 或 SoundCloud ,播放任意視頻/音頻,Chrome 開始以瀏覽器默認語言(英語)顯示字幕。
  • 影音視頻播放器合集
    很多朋友平時都選擇使用視頻播放軟體客戶端,但目前很多影片都可以進行在線觀看。迫於生活壓力的資金限制,很多小夥伴對於VIP用戶影片望而卻步、對於普通影片廣告痛哭流涕,因為沒有會員的生活就是如此桑森。這幾天小閣回老家了幾天,體驗了一下沒有網絡在手機上觀看緩存後VIP電影的時光,滋味很是一個字:爽。今天就給大家分享幾個影音播放器,讓你告別「貧農」時代體驗「富人」的生活。
  • Chrome開始完善隱私沙盒功能 去第三方cookies
    在 Incognito 模式下,Chrome 已經默認不再允許第三方 cookies。但這還不夠,谷歌計劃永久封殺第三方 cookies。 在 Chrome 89 Canary 頻道版本中,谷歌新增了名為「隱私沙盒」(Privacy Sandbox)的設置來控制跨瀏覽器追蹤。
  • bilibili視頻流量數據潛望鏡
    bilibili視頻流量數據潛望鏡 2021-01-06 20:33 來源:澎湃新聞·澎湃號·湃客
  • 如何提取B站裡面的視頻和音頻
    比如一個視頻的網址是https://www.bilibili.com/video/av68832519,在bilibili前面添加kan,回車後網址會直接變成https://www.kanbilibili.com/video/av68832519這個時候在頁面下方就可以看到操作區域了P1可以下載flv格式的視頻和彈幕,也可以將視頻轉成mp3,還可以選擇視頻的清晰度
  • chrome插件:你的瀏覽器,不是只能瀏覽網頁!
    今天給大家推薦幾個自用chrome插件,涵蓋學習娛樂,日常生活中使用頻率比較高。有了這些插件,能很大程度提高使用瀏覽器的滿足感。目前許多瀏覽器都可以安裝插件,以基於chrome內核的瀏覽器為例安裝listen1。下文會以chrome瀏覽器為例安裝AdBlock插件。Listen1支持全網音樂播放,還支持所有平臺歌單導入。但是我在導入網易雲歌單時,發現需要做個小改動才行。
  • 教你如何下載漫畫實現多​端觀看.​
    在嗶哩嗶哩漫畫下載《原神》四格漫畫的第1-3章和第5章節,下載到「D:\漫畫」文件夾並打包成pdf文件。安裝chromedriver:打開谷歌瀏覽器,在地址欄輸入chrome://version/,查看版本
  • Chrome的5大神級插件,讓你擁有全世界最好用的瀏覽器!
    但是,有很多人在使用了Chrome之後,覺得並沒有大家誇獎的那麼好用,覺得名不符實~而實際上,Chrome瀏覽器本身並不具有太多複雜的功能,但是配合chrome豐富的擴展插件,足以讓你的chrome擁有無限的可能,更能讓你擁有全世界最好用的瀏覽器!
  • 昨日晚間,有媒體稱彈幕視頻網站bilibili獲得了阿里巴巴的投資...
    昨日晚間,有媒體稱彈幕視頻網站bilibili獲得了阿里巴巴的投資。雖然B站第一時間站出來澄清,「未經官方公告確認的傳聞均不屬實」,但並沒有打消外界的各種猜測。此番阿里融資注入「騰訊系」B站的傳聞倘若成真,B站將成為繼滴滴、小紅書、微鯨科技等公司後,為數不多聚集BAT中倆巨頭為股東的網際網路寵兒。