在视频播放开始时隐藏 HTML5 视频控件的自动可见性,但保留所有其他默认控件行为

Posted

技术标签:

【中文标题】在视频播放开始时隐藏 HTML5 视频控件的自动可见性,但保留所有其他默认控件行为【英文标题】:Hide automatic visability of HTML5 video controls at beginning of video play but maintain all other default control behaviour 【发布时间】:2014-03-04 19:52:42 【问题描述】:

我有一个高分辨率 (500 x 403) 的“视频介绍”,客户希望我将其添加到他们提供给我的“主要”视频的开头。主视频是低分辨率 (200 x 150)。

我可以将简介设为低分辨率并添加它(客户不喜欢),或者我可以将主视频的分辨率加倍并添加它(这会增加下载和播放电影所需的带宽。)也不是最佳的,因为这注定是移动的。

我要使用第三种解决方案。我正在播放高分辨率的“介绍视频”,当播放结束时,我会自动加载主视频,并通过创建一个包含介绍和主视频的播放列表在介绍后面播放。

我遇到的问题是 html 5 视频的默认控制器行为是在视频的前 2 或 3 秒内可见,然后淡出。这对于播放列表中的第一个视频很好,但是我希望控件不会在后续视频的开头显示。介绍只有 6 秒,出现和消失的控件看起来很乱,我希望两个视频都显示为一个。

我尝试过使用“videoPlayer.removeAttribute("controls");"但是,这会完全杀死控件,因此,如果用户稍后点击视频以故意将控件备份,则不会发生任何事情。理想情况下,我希望保留所有默认行为,但在视频开头显示控件除外。

我已经看到一些试图修改 video.js 以实现这种性质的冗长尝试,但理想情况下我可以对本机功能做一些事情来实现这一点。

有什么想法吗?

原码:

<script type="text/javascript">

$(document).ready(function()
    var xx=1;
    var nextVideo = new Array();
        nextVideo[0] = "Content/videos/Logo_Animate_537.mp4";
        nextVideo[1] = "Content/videos/Main.mp4";
        nextVideo[2] = "Content/videos/Logo_Animate_537.mp4";

    $("#videoPlayer").bind('ended', function()
        if(xx>nextVideo.length-1)
            videoPlayer.setAttribute("controls","controls");
            videoPlayer.pause();
            xx=1;
         else 
            videoPlayer.removeAttribute("controls");
            videoPlayer.src = nextVideo[xx];
            videoPlayer.play();
            xx++;
        
    );

    //+++++++++++++++++++ This section was added as the solution ++++++++++++++
    $("#videoPlayer").on('click touchstart', function () 
        videoPlayer.setAttribute("controls","controls");                                           
    );
    //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

);

</script>


<video id="videoPlayer"   controls poster="images/main.jpg">
    <source src="Content/videos/Logo_Animate_537.mp4" type="video/mp4">
    Your browser does not support the video tag.
</video>

【问题讨论】:

【参考方案1】:

您在这里似乎有两个选择。第一个是根据需要简单地删除和替换控件属性。这将是最简单的解决方案,因为

element.setAttribute('controls', '')

会在您需要时简单地将控件放回原处。另一种选择是根本不使用浏览器控件,定义您自己的自定义控件,并根据需要隐藏或显示它们。

【讨论】:

以上是关于在视频播放开始时隐藏 HTML5 视频控件的自动可见性,但保留所有其他默认控件行为的主要内容,如果未能解决你的问题,请参考以下文章

需要在悬停或播放时显示 HTML5 视频控件

HTML5 视频自动播放在 chrome 中不起作用

仅在视频播放时进行视频控制 (html5)

HTML5 - iOS 11+ 隐藏视频控件

在播放结束时隐藏视频控件[重复]

如何在html5中自动播放视频