您好!欢迎访问家园网-www.jy.wang!

家园网

制作简易播放器

网络 作者:本站 点击:

制作简易版播放器。

代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>简易版的视频播放器</title>
</head>
<body>
<video id="video">
 <source  src="butterfly.mp4" type="video/mp4" />
 <source  src="butterfly.webm" type="video/webm" />
</video>

<!--播放按钮和播放时间-->
<button id="playButton"  onclick="playOrPauseVideo()">播放</button>
<span id="time"></span>
</body>
<script>
  //显示时间进度
 function playOrPauseVideo() {
     var video = document.getElementById("video");
     //使用事件监听方式捕捉事件
     video.addEventListener("timeupdate", function () {
         var timeDisplay = document.getElementById("time");
         //用秒数来显示当前播放进度
         timeDisplay.innerHTML = Math.floor(video.currentTime) + "/" + Math.floor(video.duration) + "(秒)";
     }, false);   
                
   //播放暂停
  var play=document.getElementById("playButton");//获取按钮元素
    play.onclick = function () {
       if (video.ended) {                      //如果媒体播放结束,播放时间从0开始
           video.currentTime = 0;
       }
       video[video.paused ? 'play' : 'pause']();  //通过三元运算执行播放和暂停
   };
            
    video.addEventListener('play', playEvent, false); //使用事件播放
        video.addEventListener('pause', pausedEvent, false);  //播放暂停
        video.addEventListener('ended', function () { //播放结束后停止播放
          this.pause(); //显示暂停播放
        }, false);
        
  function playEvent() {
   video.play();
   play.innerHTML = '暂停';
}
function pausedEvent() {
 video.pause();
  play.innerHTML = '播放';
}
}
</script>
</html>


下面是对这段代码的逐行逐词讲解,涵盖 HTML 和 JavaScript 部分,包括函数、属性、方法和事件等关键内容:


HTML 部分:

<video id="video">
 <source  src="butterfly.mp4" type="video/mp4" />
 <source  src="butterfly.webm" type="video/webm" />
</video>
  • <video>:HTML5 中用于嵌入视频内容的标签。

  • id="video":为该 <video> 元素设置一个唯一标识符,以便通过 JavaScript 来访问它。

  • <source>:用于指定视频的不同格式源文件,以提高浏览器兼容性。这里提供了两个格式:MP4 和 WebM。

    • src="butterfly.mp4":指定 MP4 格式的视频文件路径。

    • type="video/mp4":声明该源文件的 MIME 类型。

    • src="butterfly.webm":指定 WebM 格式的视频文件路径。

    • type="video/webm":声明该源文件的 MIME 类型。

<video id="video">
 <source  src="butterfly.mp4" type="video/mp4" />
 <source  src="butterfly.webm" type="video/webm" />
</video>
  • <!--播放按钮和播放时间-->:HTML 注释,用于说明下面的元素用途。

  • <button>:HTML 按钮元素,用户点击后会触发 onclick 事件。

    • id="playButton":为按钮设置唯一标识符。

    • onclick="playOrPauseVideo()":当按钮被点击时,调用名为 playOrPauseVideo() 的 JavaScript 函数。

  • <span>:用于显示播放时间的标签。

    • id="time":用于通过 JavaScript 获取该标签并更新其内容。



JavaScript 部分:

//显示时间进度
function playOrPauseVideo() {
  • //显示时间进度:注释,说明接下来的函数用于处理时间显示。

  • function playOrPauseVideo():定义一个名为 playOrPauseVideo 的函数,用于控制视频播放和暂停。

    var video = document.getElementById("video");
  • var video = document.getElementById("video"):通过 document.getElementById() 方法获取 <video> 元素,并将其赋值给变量 video,以便后续操作。

    video.addEventListener("timeupdate", function () {
        var timeDisplay = document.getElementById("time");
        timeDisplay.innerHTML = Math.floor(video.currentTime) + "/" + Math.floor(video.duration) + "(秒)";
    }, false);
  • video.addEventListener("timeupdate", ...):为视频元素添加一个监听器,监听 timeupdate 事件。每当视频播放时,该事件会持续触发,用于更新播放进度。

    • timeupdate:视频播放时触发的事件。

    • function () { ... }:匿名函数,当事件触发时执行。

    • var timeDisplay = document.getElementById("time"):获取 <span id="time"> 元素,用于显示时间。

    • video.currentTime:表示当前播放时间(单位为秒)。

    • video.duration:表示视频总时长(单位为秒)。

    • Math.floor(...):将浮点数向下取整,使时间显示为整数。

    • timeDisplay.innerHTML = ...:将当前播放时间和总时长以“已播放时间 / 总时长(秒)”的形式显示在 <span> 中。

    var play = document.getElementById("playButton");
  • var play = document.getElementById("playButton"):获取 <button id="playButton"> 元素,用于后续控制播放/暂停。

    play.onclick = function () {
        if (video.ended) {
            video.currentTime = 0;
        }
        video‌:ml-search[video.paused ? 'play' : 'pause'];
    };
  • play.onclick = function () { ... }:为播放按钮设置点击事件处理函数。

  • if (video.ended):判断视频是否播放完毕。

    • video.currentTime = 0:如果视频播放完毕,则将播放时间重置为 0。

  • video‌:ml-search[video.paused ? 'play' : 'pause']:使用三元运算符判断视频是否处于暂停状态。

    • 如果 video.paused 为 true(即视频暂停),则调用 video.play()

    • 否则调用 video.pause()

    video.addEventListener('play', playEvent, false);
    video.addEventListener('pause', pausedEvent, false);
    video.addEventListener('ended', function () {
        this.pause();
    }, false);
  • video.addEventListener(...):为视频元素添加多个事件监听器。

    • 'play':当视频开始播放时触发 playEvent 函数。

    • 'pause':当视频暂停时触发 pausedEvent 函数。

    • 'ended':当视频播放结束时,调用匿名函数使视频暂停。

    function playEvent() {
        video.play();
        play.innerHTML = '暂停';
    }
  • function playEvent():定义播放事件处理函数。

    • video.play():确保视频处于播放状态(虽然通常不需要,但作为安全措施)。

    • play.innerHTML = '暂停':将按钮文本更新为“暂停”。

    function pausedEvent() {
        video.pause();
        play.innerHTML = '播放';
    }
  • function pausedEvent():定义暂停事件处理函数。

    • video.pause():确保视频处于暂停状态。

    • play.innerHTML = '播放':将按钮文本更新为“播放”。


总结:

该代码实现了以下功能:

  • 显示视频的播放进度。

  • 提供播放/暂停按钮控制视频。

  • 当视频播放完毕后,点击按钮可重新播放。

  • 按钮文字会根据播放状态自动切换为“播放”或“暂停”。

代码结构清晰,使用了事件监听和条件判断来实现交互逻辑,具有良好的用户体验。

标签: