vue項目中使用hls.js播放m3u8視頻踩過的坑小結
video.js 是一個功能強大的 HTML5 視頻播放器,結合 videojs-contrib-hls 插件可以輕松實現(xiàn) .m3u8 格式視頻的播放。
下面展示一些 代碼片。
安裝依賴
npm install video.js videojs-contrib-hls
一、vue項目中代碼片段 ,作為組件使用
<!-- 視頻 --> <template> <div class="video-box"> <!-- 視頻播放器 --> <video id="video" controls autoplay width="100%" height="100%"></video> </div> </template> <script> import Hls from "hls.js"; import popWrapper from "@/components/popWrapper"; export default { name: "videoPop", data() { return { }; }, created() {}, mounted() { // 攝像頭視頻彈窗傳值 this.bus.$on("videoOpen", (row) => { this.showWtck(row); }); }, methods: { videoClose() { this.showOceanVideo = false; }, // 攝像頭視頻彈窗傳值 sxtbh async showWtck() { this.videoPlay(); this.showOceanVideo = true; }, videoPlay(index) { // 獲取 video 元素 const video = document.getElementById("video"); // HLS 流地址 const videoSrc = 'https://bitdash-a.akamaihd.net/content/sintel/hls/playlist.m3u8';//測試開源地址 注:視頻格式需要時164的,web端此方法不支持165 // 檢查是否支持 HLS.js if (Hls.isSupported()) { // 創(chuàng)建 HLS 實例 const hls = new Hls(); // 加載 .m3u8 文件 hls.loadSource(videoSrc); // 將 HLS 實例綁定到 video 元素 hls.attachMedia(video); // 監(jiān)聽事件:當 HLS 清單文件解析完成后自動播放 hls.on(Hls.Events.MANIFEST_PARSED, () => { console.log("HLS stream loaded successfully"); video.play(); }); // 監(jiān)聽錯誤事件 hls.on(Hls.Events.ERROR, (event, data) => { this.videoPlay() console.error("HLS error:", data); }); } else if (video.canPlayType("application/vnd.apple.mpegurl")) { // 如果瀏覽器原生支持 HLS(如 Safari) video.src = videoSrc; video.addEventListener("loadedmetadata", () => { console.log("Native HLS playback supported"); video.play(); }); } else { alert('您的瀏覽器不支持播放此視頻。') console.error("Your browser does not support HLS playback."); } }, }, beforeDestroy() { }, }; </script> <style lang='scss' scoped> .video-box { height: 700px; margin-bottom: 30px; overflow: auto; } </style>
二、以下是H5的Demo可以直接運行
直接復制代碼,驗證一下提供方的視頻地址是否有誤
此處踩過坑 265格式web端不能播放,資源格式264可以正常播放
測試監(jiān)控地址是否可以正常播放 我使用的是工具 VLC media player,我是圖方便在電腦管家下載的
(H265)
h264
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>HLS.js 播放監(jiān)控視頻</title> <!-- 引入 hls.js --> <script src="https://cdn.jsdelivr.net/npm/hls.js@latest"></script> <style> body { font-family: Arial, sans-serif; margin: 0; padding: 0; display: flex; justify-content: center; align-items: center; height: 100vh; background-color: #f4f4f4; } video { max-width: 100%; max-height: 100%; border: 1px solid #ccc; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2); } </style> </head> <body> <div> <h1 style="text-align: center;">HLS.js 播放監(jiān)控視頻</h1> <!-- 視頻播放器 --> <video id="video" controls autoplay width="640" height="360"></video> </div> <script> // 獲取 video 元素 const video = document.getElementById('video'); // HLS 流地址 // const videoSrc = 'https://bitdash-a.akamaihd.net/content/sintel/hls/playlist.m3u8';//測試開源地址 // const videoSrc = 'http://cmgw-vpc.lechange.com:8888/LCO/9C07128PAG4B9E2/0/1/20250324T021313/openhz0735a494162c4ba6bb287d7b6a5f4bb7.m3u8?source=open';//大華提供地址165 const videoSrc = 'http://cmgw-vpc.lechange.com:8888/LCO/9C07128PAGC1657/0/0/20250324T015744/openhz136dd7fbc6484a5095579ba383b035bb.m3u8?source=open';//大華提供地址164 // 檢查是否支持 HLS.js if (Hls.isSupported()) { // 創(chuàng)建 HLS 實例 const hls = new Hls(); // 加載 .m3u8 文件 hls.loadSource(videoSrc); // 將 HLS 實例綁定到 video 元素 hls.attachMedia(video); // 監(jiān)聽事件:當 HLS 清單文件解析完成后自動播放 hls.on(Hls.Events.MANIFEST_PARSED, () => { console.log('HLS stream loaded successfully'); video.play(); }); // 監(jiān)聽錯誤事件 hls.on(Hls.Events.ERROR, (event, data) => { console.error('HLS error:', data); }); } else if (video.canPlayType('application/vnd.apple.mpegurl')) { // 如果瀏覽器原生支持 HLS(如 Safari) video.src = videoSrc; video.addEventListener('loadedmetadata', () => { console.log('Native HLS playback supported'); video.play(); }); } else { console.error('Your browser does not support HLS playback.'); } </script> </body> </html>
總結
到此這篇關于vue項目中使用hls.js播放m3u8視頻踩過坑的文章就介紹到這了,更多相關vue hls.js播放m3u8視頻內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
vue.js+Echarts開發(fā)圖表放大縮小功能實例
本篇文章主要介紹了vue.js+Echarts開發(fā)圖表放大縮小功能實例,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-06-06vue3 中使用vue?img?cutter?圖片裁剪插件的方法
這篇文章主要介紹了vue3 中使用vue?img?cutter?圖片裁剪插件的方法,首先安裝依賴,構建 components/ImgCutter.vue 組件,需要的朋友可以參考下2024-05-05Vue3使用TypeIt實現(xiàn)文字打字機效果的代碼示例
在現(xiàn)代網(wǎng)頁設計中,文字打字機效果是一種非常流行的動畫效果,能夠吸引用戶的注意力并提升用戶體驗,本文將介紹如何在 Vue 3 中使用 TypeIt 庫實現(xiàn)文字打字機效果,并分享一些實用的技巧和示例,需要的朋友可以參考下2025-01-01vue如何使用vant組件的field組件disabled修改默認樣式
這篇文章主要介紹了vue如何使用vant組件的field組件disabled修改默認樣式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-05-05