开篇寄语
伯衡君曾经介绍过如何通过一个GitHub项目,再结合一些相关的软件,就能收看到近万个全球电视台,具体可以参看下方的前情提要,伯衡君觉得不过瘾,不如自己做一个网页版的,轻松实现观看这些电视台,也就不用软件了,短短几行代码就能实现哦,虽然很简陋,但是能收看的节目和软件收看没差,分享给大家。
重大更新
伯衡君后来将该网站进行了优化,更加人性化,还有了明显的分类,也就是该项目的正式版本,具体可以参看这篇文章:
前情提要
演示地址
提供最原始的形态,有兴趣的朋友可以自行魔改哦。
设计思路
- 使用iptv-org的项目直播源,用正则表达式将m3u8的直播地址找出来
- 使用eyevinn这款js相关h5视频插件,支持m3u8的路径播放
- 之后将网页呈现出来就行了
源码内容
<!DOCTYPE html> <html> <head> <title>Title of the document</title> <link rel="stylesheet" href="https://player.eyevinn.technology/v0.4.2/build/eyevinn-html-player.css"> </link> <script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script> </head> <style> body, html { background: #111111; overflow-x:hidden; } #top-bar { width: 100%; height: 40px; background: #111222; } #top-bar h2 { color: #fff; margin: 0 auto; text-align: center; top: 5px; position: relative; } #player-wrapper { margin-top: 10px; } #container li { cursor: pointer; color: #fff; } #container li:hover { color: blueviolet; } </style> <body> <!-- Top Bar --> <div id="top-bar"> <h2>Easy Web Tv</h2> </div> <!-- The element where the player will be placed --> <div id="player-wrapper"></div> <!-- The element where the channel list --> <div id="lists"> <ul id="container"></ul> </div> <!-- Eyevinn HTML Player Javascript --> <script src="https://player.eyevinn.technology/v0.4.2/build/eyevinn-html-player.js" type="text/javascript"></script> <script> $.ajax({ type: "GET", url: ' https://iptv-org.github.io/iptv/index.country.m3u', success: function (message, text, response) { let str = message let array = str.split(" ") let links = array.filter(x => /[^h]+.m3u8/.test(x)).map(x => x.split("\n")).flat().filter(x => /[^h]+.m3u8/.test(x)) for (let i of links) { $("#container").append("<li>" + i + "</li>") } } }) //Initiate the player and when click channel to play it document.addEventListener('DOMContentLoaded', function (event) { setupEyevinnPlayer('player-wrapper', "https://5940924978228.streamlock.net/8157/8157/.m3u8").then(function (player) { var muteOnStart = false; player.play(muteOnStart); }); $("#container").on('click', 'li', function () { $("#player-wrapper").empty() setupEyevinnPlayer('player-wrapper', $(this).text()).then(function (player) { var muteOnStart = false; player.play(muteOnStart); }); }); }); </script> </body> </html>
以上源码似乎在移动端有瑕疵,伯衡君则换了一个插件,播放更加流畅,使用了videojs这个插件,源码如下:
<html lang="en"> <head> <link href="https://vjs.zencdn.net/7.11.4/video-js.css" rel="stylesheet" /> <script src="https://vjs.zencdn.net/ie8/1.1.2/videojs-ie8.min.js"></script> <script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script> </head> <style> body, html { background: #111111; overflow-x: hidden; } #top-bar { width: 100%; height: 40px; background: #111222; } #top-bar h2 { color: #fff; margin: 0 auto; text-align: center; top: 5px; position: relative; } #player-wrapper { margin-top: 10px; } #my-video { width: 90vw; height: 600px; margin: 0 auto; margin-top: 10; } .video-js .vjs-big-play-button { top: 50%; left: 50%; } #container li { cursor: pointer; color: #fff; } #container li:hover { color: blueviolet; } </style> <body> <!-- Top Bar --> <div id="top-bar"> <h2>Easy Web Tv</h2> </div> <!-- The element where the player will be placed --> <div id="player"> <video id="my-video" class="video-js" controls preload="auto" poster="MY_VIDEO_POSTER.jpg" data-setup="{}"> <source src="https://y5w8j4a9.ssl.hwcdn.net/andflixhd/tracks-v1a1/index.m3u8" type="application/x-mpegURL" /> <p class="vjs-no-js"> To view this video please enable JavaScript, and consider upgrading to a web browser that <a href="https://videojs.com/html5-video-support/" target="_blank" >supports HTML5 video</a > </p> </video> </div> <!-- The element where the channel list --> <div id="lists"> <ul id="container"></ul> </div> <script src="https://vjs.zencdn.net/7.11.4/video.min.js"></script> <script> $.ajax({ type: "GET", url: ' https://iptv-org.github.io/iptv/index.country.m3u', success: function(message, text, response) { let str = message let array = str.split(" ") let links = array.filter(x => /[^h]+.m3u8/.test(x)).map(x => x.split("\n")).flat().filter(x => /[^h]+.m3u8/.test(x)) for (let i of links) { $("#container").append("<li>" + i + "</li>") } } }) //Click channel to play it $("#container").on('click', 'li', function() { var player = videojs(document.querySelector('.video-js')); player.src({ src: $(this).text(), type: 'application/x-mpegURL' /*video type*/ }); player.play(); }); </script> </body> </html>
- 我的微信
- 微信扫一扫加好友
- 我的微信公众号
- 扫描关注公众号