china0396 发表于 6 天前

随机美女小姐姐视频播放源码

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
    <!-- iOS 相关meta标签 -->
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
    <meta name="apple-mobile-web-app-title" content="随机舞蹈">
   
    <!-- 添加到主屏幕的图标 -->
    <link rel="apple-touch-icon" href="icon-180.png">
    <link rel="apple-touch-icon" sizes="152x152" href="icon-152.png">
    <link rel="apple-touch-icon" sizes="180x180" href="icon-180.png">
    <link rel="apple-touch-icon" sizes="167x167" href="icon-167.png">
   
    <!-- 启动画面 -->
    <link rel="apple-touch-startup-image" href="launch.png">
   
    <title>随机舞蹈视频</title>
    <style>
      /* 防止iOS点击闪烁 */
      * {
            -webkit-tap-highlight-color: transparent;
            -webkit-touch-callout: none;
            -webkit-user-select: none;
            user-select: none;
      }
      
      /* 适配刘海屏和曲面屏 */
      body {
            padding-top: env(safe-area-inset-top);
            padding-bottom: env(safe-area-inset-bottom);
            padding-left: env(safe-area-inset-left);
            padding-right: env(safe-area-inset-right);
      }

      /* 全局样式 */
      * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
      }

      body {
            background: linear-gradient(135deg, #1a1a1a, #2d2d2d);
            min-height: 100vh;
            display: flex;
            align-items: center;
            justify-content: center;
            font-family: 'Microsoft YaHei', sans-serif;
            flex-direction: column; /* 使内容垂直排列 */
      }

      .container {
            width: 95%;
            max-width: 1200px;
            margin: 20px auto;
            padding: 20px;
            background: rgba(255, 255, 255, 0.1);
            border-radius: 15px;
            backdrop-filter: blur(10px);
            box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1);
            padding-bottom: calc(20px + env(safe-area-inset-bottom));
            position: relative; /* 使容器相对定位 */
      }

      .video-container {
            position: relative;
            width: 100%;
            height: calc(100vh - 200px - env(safe-area-inset-top) - env(safe-area-inset-bottom));
            min-height: 400px;
            margin-bottom: 30px;
            border-radius: 10px;
            overflow: hidden;
            box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2);
      }

      video {
            position: absolute;
            top: 50%;
            left: 50%;
            width: 100%;
            height: 100%;
            object-fit: cover; /* 修改为cover以适配曲面屏,避免黑边 */
            transform: translate(-50%, -50%); /* 居中对齐 */
            border-radius: 10px;
            background: #000;
            touch-action: manipulation;
      }

      .controls {
            display: flex;
            justify-content: center;
            gap: 20px;
            flex-wrap: wrap;
      }

      button {
            -webkit-appearance: none;
            appearance: none;
            min-width: 120px;
            padding: 12px 25px;
            font-size: 16px;
            cursor: pointer;
            border: none;
            border-radius: 50px;
            color: white;
            font-weight: bold;
            transition: all 0.3s ease;
            background-size: 200% auto;
            box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2);
      }

      /* 所有按钮设置渐变色 */
      .next-button {
            background-image: linear-gradient(45deg, #FF6B6B, #FFE66D);
      }

      .refresh-button {
            background-image: linear-gradient(45deg, #4ECDC4, #556270);
      }

      .play-toggle-button {
            background-image: linear-gradient(45deg, #6C5CE7, #a367dc);
      }

      .like-button {
            background-image: linear-gradient(45deg, #FF6B6B, #FFE66D);
      }

      .pip-button {
            background-image: linear-gradient(45deg, #6bd0ff, #ce43b7);
      }

      button:hover {
            background-position: right center;
            transform: translateY(-2px);
            box-shadow: 0 6px 20px rgba(0, 0, 0, 0.3);
      }

      /* 响应式设计 */
      @media (max-width: 768px) {
            .container {
                width: 98%;
                padding: 10px;
            }

            button {
                min-width: 100px;
                padding: 10px 20px;
                font-size: 14px;
            }

            .controls {
                gap: 10px;
            }
      }

      /* 添加加载动画 */
      @keyframes pulse {
            0% { opacity: 1; }
            50% { opacity: 0.5; }
            100% { opacity: 1; }
      }

      .loading {
            animation: pulse 1.5s infinite;
      }

      /* 添加iOS风格的加载动画 */
      @keyframes ios-loading {
            0% { transform: rotate(0deg); }
            100% { transform: rotate(360deg); }
      }

      .loading::after {
            content: '';
            position: absolute;
            top: 50%;
            left: 50%;
            width: 40px;
            height: 40px;
            margin: -20px 0 0 -20px;
            border: 4px solid #fff;
            border-top-color: transparent;
            border-radius: 50%;
            animation: ios-loading 1s linear infinite;
      }

      /* 添加视频播放器控件的iOS风格 */
      video::-webkit-media-controls-panel {
            background-image: linear-gradient(transparent, rgba(0, 0, 0, 0.5));
      }

      /* 爱心动画效果 */
      @keyframes floatUp {
            0% {
                transform: translateY(0) scale(1);
                opacity: 1;
            }
            100% {
                transform: translateY(-100px) scale(1.5);
                opacity: 0;
            }
      }

      .floating-heart {
            position: absolute;
            font-size: 20px;
            animation: floatUp 3s forwards;
            pointer-events: none;
      }

      /* 提示框样式 */
      .alert {
            position: absolute;
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%);
            background: rgba(255, 255, 255, 0.8);
            padding: 20px;
            border-radius: 10px;
            box-shadow: 0 4px 15px rgba(0, 0, 0, 0.3);
            display: none; /* 默认隐藏 */
      }

      /* 版权信息样式 */
      .copyright {
            margin-top: 20px;
            font-size: 14px;
            text-align: center; /* 居中显示 */
            background: linear-gradient(45deg, #08962b, #431b8d); /* 渐变色 */
            -webkit-background-clip: text;
            -webkit-text-fill-color: transparent; /* 文字填充透明 */
      }
    </style>
</head>
<body>
    <div class="container">
      <div class="video-container">
            <video id="danceVideo" controls>
                您的浏览器不支持视频播放。
            </video>
      </div>
      <div class="controls">
            <button class="next-button" onclick="nextVideo()">下一个</button>
            <button class="refresh-button" onclick="refreshVideo()">刷新</button>
            <button class="play-toggle-button" onclick="togglePlay()">暂停/播放</button>
            <button class="like-button" onclick="createHearts()">点赞</button>
            <button class="pip-button" onclick="togglePip()">画中画</button>
      </div>
      <div class="alert" id="alertBox">复制成功,请打开浏览器进行下载保存!</div>
      <div class="copyright"><a href="https://www.dadawz.cn/" id="copyrightLink">© 2024 大大-随机舞蹈. 保留所有权利.</a></div> <!-- 大大博客 https://www.dadawz.cn/-->
    </div>

    <script>
      /**
         * @type {HTMLVideoElement}
         */
      const video = document.getElementById('danceVideo');

      /**
         * 视频源数组 - 可以替换为您自己的API或视频源
         * @type {string[]}
         */
      const videoSources = [
            'https://api.yviii.com/video/suiji.php',
            'https://api.yviii.com/video/i.php',
            'http://api.mhycloud.fun:81/api/dy',
      ];

      /**
         * 获取随机视频源
         * @returns {string} 随机视频URL
         */
      function getRandomVideo() {
            const randomIndex = Math.floor(Math.random() * videoSources.length);
            return videoSources;
      }

      /**
         * 添加加载状态处理
         */
      function setLoading(isLoading) {
            const video = document.getElementById('danceVideo');
            if (isLoading) {
                video.classList.add('loading');
            } else {
                video.classList.remove('loading');
            }
      }

      /**
         * 增强版的下一个视频函数
         */
      async function nextVideo() {
            setLoading(true);
            const newSrc = getRandomVideo();
            // 确保不会连续播放同一个视频
            if (newSrc === video.src) {
                return nextVideo();
            }
            video.src = newSrc;
            try {
                await video.play();
            } catch (error) {
                console.error('视频播放失败:', error);
            }
            video.oncanplay = () => {
                setLoading(false);
            };
      }

      /**
         * 刷新当前视频
         */
      function refreshVideo() {
            video.currentTime = 0;
            video.play();
      }

      /**
         * 切换视频播放/暂停状态
         */
      function togglePlay() {
            if (video.paused) {
                video.play();
            } else {
                video.pause();
            }
      }

      /**
         * 创建爱心动画效果
         */
      function createHearts() {
            for(let i = 0; i < 15; i++) {
                setTimeout(() => {
                  const heart = document.createElement('div');
                  heart.innerHTML = ['❤️', '⭐', '✨', '💖', '💕'];
                  heart.className = 'floating-heart';
                  heart.style.left = Math.random() * window.innerWidth + 'px';
                  heart.style.fontSize = (20 + Math.random() * 20) + 'px';
                  document.body.appendChild(heart);
                  
                  setTimeout(() => {
                        heart.remove();
                  }, 3000);
                }, i * 100);
            }
      }

      /**
         * 切换画中画模式
         */
      function togglePip() {
            if (document.pictureInPictureElement) {
                document.exitPictureInPicture().catch(error => {
                  console.error('退出画中画失败:', error);
                });
            } else {
                video.requestPictureInPicture().catch(error => {
                  console.error('进入画中画失败:', error);
                });
            }
      }

      // 禁用双指缩放
      document.addEventListener('gesturestart', function(e) {
            e.preventDefault();
      });

      // 处理iOS的各种手势
      let touchStartY = 0;
      document.addEventListener('touchstart', function(e) {
            touchStartY = e.touches.clientY;
      }, { passive: false });

      document.addEventListener('touchmove', function(e) {
            const touchY = e.touches.clientY;
            const delta = touchStartY - touchY;

            // 如果不是在视频上滑动,则阻止默认行为
            if (!e.target.matches('video')) {
                e.preventDefault();
            }
      }, { passive: false });

      // 添加iOS的错误处理
      video.addEventListener('error', function(e) {
            console.error('视频加载错误:', e.target.error);
            nextVideo();
      });

      // 处理iOS后台播放
      document.addEventListener('visibilitychange', function() {
            if (document.hidden) {
                video.pause();
            }
      });

      // 初始化
      window.onload = function() {
            nextVideo();
            video.addEventListener('ended', nextVideo); // 播放完自动播放下一个
      };
    </script>
</body>
</html>

页: [1]
查看完整版本: 随机美女小姐姐视频播放源码