非静音视频播放

如果视频在自动播放后暂停,用户与页面进行交互(例如点击或按键)时,视频将尝试再次播放。同时,如果视频在尝试播放时由于某些原因失败,脚本会延迟一段时间后重试播放。请注意,由于浏览器的自动播放策略,即使脚本尝试重试,视频也不一定能够播放。

// ==UserScript==
// @name         非静音视频播放
// @namespace    http://tampermonkey.net/
// @icon     https://hikerfans.com/tubiao/movie/113.svg
// @version      0.1
// @description  如果视频在自动播放后暂停,用户与页面进行交互(例如点击或按键)时,视频将尝试再次播放。同时,如果视频在尝试播放时由于某些原因失败,脚本会延迟一段时间后重试播放。请注意,由于浏览器的自动播放策略,即使脚本尝试重试,视频也不一定能够播放。
// @license      MIT
// @author       zzzwq
// @match        *://*/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // 自动播放视频的延时时间(毫秒)
    const AUTO_PLAY_DELAY = 1000; // 1秒后尝试自动播放视频

    // 自动播放视频
    function autoPlayVideos() {
        setTimeout(function() {
            document.querySelectorAll('video').forEach(function(video) {
                // 设置视频为静音以增加自动播放的机会
                video.muted = true;
                // 尝试播放视频,并在失败时重试
                playVideoWithRetry(video);
            });
        }, AUTO_PLAY_DELAY);
    }

    // 尝试播放视频,并在失败时重试
    function playVideoWithRetry(video) {
        video.play().catch(function(error) {
            console.error('Video play failed:', error);
            // 可以在这里设置重试逻辑,例如使用setTimeout来延迟重试
            setTimeout(function() {
                playVideoWithRetry(video);
            }, AUTO_PLAY_DELAY);
        });
    }

    // 用户交互后尝试取消静音
    function unmuteOnInteraction() {
        document.querySelectorAll('video').forEach(function(video) {
            // 检查视频是否已静音
            if (video.muted) {
                // 尝试取消静音
                video.muted = false;
                // 尝试播放视频
                playVideoWithRetry(video);
            }
        });
    }

    // 初始化脚本
    function init() {
        // 等待页面加载完成
        window.addEventListener('load', autoPlayVideos, false);

        // 监听用户交互事件以取消静音
        document.addEventListener('click', unmuteOnInteraction, false);
        document.addEventListener('keydown', unmuteOnInteraction, false);
    }

    // 开始执行脚本
    init();
})();