【js】js實現多個視頻連續播放:

文章目錄

        • 一、效果:
        • 二、實現:


一、效果:

image.png

二、實現:
<!DOCTYPE html>
<html>
<head><title>Video Player</title><style>#progressBar {   width: 800px;height: 20px;background-color: #ddd;}#progress {height: 20px;background-color: #abc;}#videoContainer {position: relative;width: 800px; height: 450px; /* adjust as needed */}#videoContainer video {position: absolute;width: 100%;height: 100%;}</style>
</head>
<body><div id="videoContainer"></div><button id="playButton">播放</button><button id="pauseButton">暫停</button><div id="progressBar"><div id="progress"></div></div><div>Total duration: <span id="totalDuration">0</span> seconds</div><div>Current time: <span id="currentTime">0</span> seconds</div><script>var videoContainer = document.getElementById('videoContainer');var videoSources = ["f1.mp4", "f2.mp4", "f3.mp4", "f4.mp4"];var totalDuration = 0;var totalCurrentTime = 0;var currentVideo = 0;var videoElements = videoSources.map(function (src, i) {var video = document.createElement('video');video.src = src;video.addEventListener('loadedmetadata', function  () {if (i < videoSources.length - 1) {videoElements[i + 1].load();}});video.addEventListener('play', function () {totalDuration = videoElements.reduce(function (sum, video) {return sum + (video.duration || 0);}, 0); document.getElementById('totalDuration').textContent = totalDuration;totalCurrentTime = videoElements.slice(0, i).reduce(function (sum, video) {return sum + (video.duration || 0);}, 0);document.getElementById('currentTime').textContent = totalCurrentTime;});if (i > 0) {video.style.display  = 'none';}videoContainer.appendChild(video);return video;});videoElements[0].load();videoElements.forEach(function (videoElement, i) {videoElement.addEventListener('timeupdate', function () {totalCurrentTime = videoElement.currentTime;for (var j =  0; j < i; j++) {totalCurrentTime += videoElements[j].duration;}document.getElementById('currentTime').textContent = totalCurrentTime;var progress = totalCurrentTime / totalDuration * 100;document.getElementById('progress').style.width = progress + '%';}, false);videoElement.addEventListener('ended', function () {currentVideo++;if (currentVideo < videoSources.length) {videoElements[currentVideo].play();videoElement.style.display = 'none';videoElements[currentVideo].style.display = 'block';}}, false);});document.getElementById('playButton').addEventListener('click', function () {videoElements[currentVideo].play();}, false);document.getElementById('pauseButton').addEventListener('click', function () {videoElements[currentVideo].pause();}, false);</script>
</body>
</html> 

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/207868.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/207868.shtml
英文地址,請注明出處:http://en.pswp.cn/news/207868.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Vulnhub 靶場】【Momentum: 2】【簡單】【20210628】

1、環境介紹 靶場介紹&#xff1a;https://www.vulnhub.com/entry/momentum-2,702/ 靶場下載&#xff1a;https://download.vulnhub.com/momentum/Momentum2.ova 靶場難度&#xff1a;簡單 發布日期&#xff1a;2021年06月28日 文件大小&#xff1a;698 MB 靶場作者&#xff1…

uni-app實現安卓原生態調用身份證閱讀器讀卡庫讀身份證和社保卡、銀行卡、IC卡等功能

DONSEE系列多功能讀寫器Android Uniapp API接口規范V1.0.0 本項目Uniapp調用了身份證讀卡器的庫文件&#xff1a;DonseeDeviceLib-debug.aar&#xff0c;該庫放到nativeplugins\donsee-card\android&#xff0c;然后會自動加載。SDK會自動檢查是否擁有USB設備權限&#xff0c;…

同旺科技 USB TO RS-485 定制款適配器--- 拆解(三)

內附鏈接 1、USB TO RS-485 定制款適配器 ● 支持USB 2.0/3.0接口&#xff0c;并兼容USB 1.1接口&#xff1b; ● 支持USB總線供電&#xff1b; ● 支持Windows系統驅動&#xff0c;包含WIN10 / WIN11系統32 / 64位&#xff1b; ● 支持Windows RT、Linux、Mac OS X、Windo…

《洛谷深入淺出進階篇》p2568 GCD

P2568 GCD - 洛谷 | 計算機科學教育新生態 (luogu.com.cn)https://www.luogu.com.cn/problem/P2568 大致題意&#xff1a;給定正整數n&#xff0c;求1< x,y<n 且 gcd&#xff08;x&#xff0c;y&#xff09;為素數的數對&#xff08;x&#xff0c;y&#xff09;有多少對。…

一文搞懂全連接算法和它的作用

如果你是搞AI算法的同學&#xff0c;相信你在很多地方都見過全連接層。 無論是處理圖片的卷積神經網絡&#xff08;CNN&#xff09;&#xff0c;還是處理文本的自然語言處理&#xff08;NLP&#xff09;網絡&#xff0c;在網絡的結尾做分類的時候&#xff0c;總是會出現一個全…

國外小哥綜合傳統CGI和AI技術制作出融合Lofi音樂與人工智能動畫作品

這個視頻制作花費了18個小時&#xff0c;渲染則耗費了4個小時&#xff0c;使用了Midjourney、PS GenFill、After Effects和Magnific AI等工具。 國外小哥綜合傳統CGI和AI技術制作出融合Lofi音樂與人工智能動畫作品 大致制作流程&#xff1a; Midjourney出圖&#xff0c;PS Gen…

P1047 [NOIP2005 普及組] 校門外的樹題解

題目 某校大門外長度為 l 的馬路上有一排樹&#xff0c;每兩棵相鄰的樹之間的間隔都是1 米。我們可以把馬路看成一個數軸&#xff0c;馬路的一端在數軸 00 的位置&#xff0c;另一端在l 的位置&#xff1b;數軸上的每個整數點&#xff0c;即0,1,2,…,l&#xff0c;都種有一棵樹…

藍橋杯:貨物擺放

小藍有一個超大的倉庫&#xff0c;可以擺放很多貨物。 現在&#xff0c;小藍有 n 箱貨物要擺放在倉庫&#xff0c;每箱貨物都是規則的正方體。小藍規定了長、寬、高三個互相垂直的方向&#xff0c;每箱貨物的邊都必須嚴格平行于長、寬、高。 小藍希望所有的貨物最終擺成一個大…

帶大家做一個,易上手的家常辣子雞

先從冰箱拿出雞肉解凍 拿小半根蔥 去掉最外面一層皮 切成小段 最備好 花椒 干辣椒 準備四五個大料 起鍋燒油 這道菜需要放其他菜兩到三倍的油 油溫上來之后 放入干辣椒和花椒進行翻炒 等它們都燒黑之后撈出來 這樣 辣味就留在油里面了 然后 倒入雞肉 蔥段 大料 然后 倒…

linux下ls和df卡死

1. strace看下卡在哪里 https://lokie.wang/article/43 strace ls strace df -h 2. 原因 https://segmentfault.com/a/1190000040620740 3. fuser 和 umount都不行&#xff0c;最后只能重啟 重啟機器還起不來了垃圾

Linux Server Quick Command

Linux Server Quick Command 查看服務器gpu情況&#xff1a;gpustat conda install gpustat nvidia-smi也可以監控 實時監控gpu狀態&#xff1a; 進入后臺運行&#xff1a;$ tmux &#xff08;tmux使用方法&#xff09; 退出當前窗口&#xff1a;先按下ctrlb&#xff0c;再按下…

php獲取本年、本月、本周時間戳和日期格式(2020)

獲取時間戳&#xff1a; //獲取今日開始時間戳和結束時間戳 $time1 strtotime(date(Y-m-d 00:00:00,time())); $time2 strtotime(date(Y-m-d 23:59:59,time()));//昨天時間戳 $time1 strtotime(date(Y-m-d 00:00:00,time()-3600*24)); $time2 strtotime(date(Y-m-d 23:59:…

Docker實戰筆記 一 Nginx鏡像

1.創建一個文件夾映射容器內文件 rootcenots-7.5:/home#mkdir demo rootcenots-7.5:/home#ll 2.拉取nginx鏡像 rootcenots-7.5:/home/demo#docker pull nginx Using default tag: latest latest: Pulling from library/nginx 1f7ce2fa46ab: Already exists 9b16c94bb686: P…

Qt內存管理、UI編輯器、客制化組件、彈出對話框、常用部件類

頭文件的小技巧 #include <QtWidgets> // 在自動生成的 .h 里面加上此句 適用條件&#xff1a; QT 的內存管理 當父窗體被關閉時&#xff0c;子部件的內存會自動釋放。 對象樹是一種管理對象生命周期的機制。當一個對象被添加到另一個對象的子對象列表中時&#xff0…

LeetCode刷題筆記之鏈表

一、移除鏈表元素 1. 203【移除鏈表元素】 題目&#xff1a; 給你一個鏈表的頭節點 head 和一個整數 val &#xff0c;請你刪除鏈表中所有滿足 Node.val val 的節點&#xff0c;并返回 新的頭節點 。代碼&#xff1a; /*** Definition for singly-linked list.* public cla…

docker:部署java Springboot項目

文章目錄 1、打 jar 包1、創建Dockerfile3、創建鏡像4、啟動容器其他注意事項docker中jdk的版本命名舉例&#xff1a;openjdk:11-ea-17-jre-slim舉例&#xff1a;8u312-jre-nanoserver-1809 通過find找文件 1、打 jar 包 將項目打一個 jar 包&#xff0c;可以使用 IDEA 1、…

2.6 A 的 LU 分解

一、A LU 線性代數很多關鍵的概念實際上就是矩陣的分解&#xff08;factorization&#xff09;。原始矩陣 A A A 變成兩個或三個特殊矩陣的乘積。第一個分解&#xff0c;實際上也是最重要的分解&#xff0c;來自消元法。因子 L L L 和 U U U 都是三角形矩陣&#xff0c;分…

前端實習面試常考(定位、文檔流)

前端實習面試常考&#xff08;定位、文檔流&#xff09; 最近在找前端的實習&#xff0c;看了很多面試題&#xff0c;再這里做一個總結分享給大家&#xff0c;希望對大家的實習面試起到一些幫助&#xff08;本人剛入門不久&#xff0c;如果大家對我的內容有異議&#xff0c;歡…

NgRx中dynamic reducer的原理和用法?

在 Angular 應用中&#xff0c;使用 NgRx 狀態管理庫時&#xff0c;動態 reducer 的概念通常是指在運行時動態添加或移除 reducer。這樣的需求可能源于一些特殊的場景&#xff0c;比如按需加載模塊時&#xff0c;你可能需要添加相應的 reducer。 以下是動態 reducer 的一般原理…

多級路由component頁面不加載

項目基于vue-element-admin 新建SubView.vue <template><router-view /> </template><script setup> </script>在父層添加component {path: /sj,component: Layout,redirect: /sj,name: 三級醫院評審標準(2022),meta: {title: 三級醫院評審標準(…