小九九 发表于 2024-6-27 10:23:05

Java网页m3u流媒体播放器代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>16:9 Window with HLS.js</title>
    <style>
      html, body {
            height: 100%;
            margin: 0;
            padding: 0;
            overflow: hidden;
      }
      .container {
            display: flex;
            height: 100%;
      }
      .video-container {
            flex: 1;
            background-color: #000000; /* 黑色背景 */
            display: flex;
            justify-content: center;
            align-items: center;
      }
      .program-list {
            width: 200px;
            background-color: #000; /* 黑色背景 */
            opacity: 0.8; /* 透明度 */
            overflow-y: auto;
            padding: 10px;
            transition: width 0.3s ease;
      }
      .program-list.collapsed {
            width: 0;
            padding: 0;
            overflow: hidden;
      }
      video {
            width: 100%;
            height: 100%;
      }
      .program-list ul {
            list-style-type: none;
            padding: 0;
            margin: 0;
      }
      .program-list li {
            padding: 5px;
            cursor: pointer;
      }
      .program-list li:hover {
            background-color: #ddd;
      }
      .toggle-button {
            position: absolute;
            top: 10px;
            right: 10px;
            cursor: pointer;
            background-color: #000;
            color: #fff;
            padding: 5px 10px;
            border-radius: 5px;
      }
      .search-box {
            margin: 10px;
      }
      .search-box input {
            width: 100%;
            padding: 10px;
            box-sizing: border-box;
      }
      .play-prompt {
            position: absolute;
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%);
            color: white;
            font-size: 24px;
            cursor: pointer;
            background-color: rgba(0, 0, 0, 0.5);
            padding: 10px 20px;
            border-radius: 5px;
      }
    </style>
</head>
<body>
    <div class="container">
      <div class="video-container" id="fullscreenWindow">
            <!-- 视频播放器容器 -->
            <video id="video" controls></video>
            <div class="play-prompt" onclick="startPlayback()">点击播放</div>
      </div>
      <div class="program-list" id="programList">
            <div class="search-box">
                <input type="text" id="m3uUrl" placeholder="粘贴 M3U 链接">
                <button onclick="loadM3UFile()">播放</button>
            </div>
            <ul>
                <!-- 节目列表项将动态添加到这里 -->
            </ul>
      </div>
    </div>
    <div class="toggle-button" id="toggleButton">
      ☰
    </div>

    <!-- 引入 HLS.js 库 -->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/hls.js/1.0.11/hls.min.js"></script>

    <script>
      // 获取视频元素
      var video = document.getElementById('video');
      var playPrompt = document.querySelector('.play-prompt');

      // 检查浏览器是否支持 HLS
      if (Hls.isSupported()) {
            var hls = new Hls();
            hls.attachMedia(video);
            hls.on(Hls.Events.MANIFEST_PARSED, function() {
                console.log('Manifest parsed, ready to play');
                playPrompt.style.display = 'block';
            });
            hls.on(Hls.Events.ERROR, function(event, data) {
                console.error('HLS error', data);
            });
      } else if (video.canPlayType('application/vnd.apple.mpegurl')) {
            video.addEventListener('loadedmetadata', function() {
                console.log('Metadata loaded, ready to play');
                playPrompt.style.display = 'block';
            });
      } else {
            console.error('HLS is not supported');
      }

      // 获取节目列表元素
      var programList = document.getElementById('programList');
      var toggleButton = document.getElementById('toggleButton');

      // 切换节目列表的显示状态
      toggleButton.addEventListener('click', function() {
            programList.classList.toggle('collapsed');
      });

      // 加载 M3U 文件并解析节目列表
      function loadM3UFile() {
            const m3uUrl = document.getElementById('m3uUrl').value;
            if (m3uUrl) {
                if (Hls.isSupported()) {
                  hls.loadSource(m3uUrl);
                } else if (video.canPlayType('application/vnd.apple.mpegurl')) {
                  video.src = m3uUrl;
                } else {
                  console.error('HLS is not supported');
                }
            } else {
                console.error('No M3U URL provided');
            }
      }

      // 页面加载完成后获取 M3U 文件并解析节目列表
      document.addEventListener('DOMContentLoaded', function() {
            const m3uUrl = 'https://super.ffzy-online6.com/20240626/33675_8de06b98/2000k/hls/mixed.m3u8'; // 默认 M3U 链接
            document.getElementById('m3uUrl').value = m3uUrl;
            loadM3UFile();
      });

      // 用户点击提示后开始播放
      function startPlayback() {
            video.play().then(() => {
                playPrompt.style.display = 'none';
            }).catch(error => {
                console.error('Playback failed', error);
            });
      }

      document.getElementById('fullscreenWindow').addEventListener('dblclick', function() {
            if (document.fullscreenElement) {
                if (document.exitFullscreen) {
                  document.exitFullscreen();
                } else if (document.mozCancelFullScreen) { // Firefox
                  document.mozCancelFullScreen();
                } else if (document.webkitExitFullscreen) { // Chrome, Safari and Opera
                  document.webkitExitFullscreen();
                } else if (document.msExitFullscreen) { // IE/Edge
                  document.msExitFullscreen();
                }
            } else {
                var elem = document.getElementById('fullscreenWindow');
                if (elem.requestFullscreen) {
                  elem.requestFullscreen();
                } else if (elem.mozRequestFullScreen) { // Firefox
                  elem.mozRequestFullScreen();
                } else if (elem.webkitRequestFullscreen) { // Chrome, Safari and Opera
                  elem.webkitRequestFullscreen();
                } else if (elem.msRequestFullscreen) { // IE/Edge
                  elem.msRequestFullscreen();
                }
            }
      });
    </script>
</body>
</html>

页: [1]
查看完整版本: Java网页m3u流媒体播放器代码