当前位置:首页 > JavaScript

js实现播放视频

2026-02-03 06:26:36JavaScript

使用HTML5 <video> 元素

HTML5提供了原生支持视频播放的<video>标签,通过JavaScript可以控制其行为。以下是一个基本实现示例:

<video id="myVideo" width="320" height="240" controls>
  <source src="movie.mp4" type="video/mp4">
  Your browser does not support the video tag.
</video>

<script>
  const video = document.getElementById('myVideo');
  // 播放视频
  video.play();
  // 暂停视频
  video.pause();
  // 跳转到指定时间(秒)
  video.currentTime = 10;
</script>

自定义播放器控件

通过JavaScript可以完全自定义播放器界面,隐藏原生控件并添加自定义按钮:

<video id="customVideo" width="320" height="240">
  <source src="movie.mp4" type="video/mp4">
</video>
<div>
  <button onclick="playVideo()">播放</button>
  <button onclick="pauseVideo()">暂停</button>
  <input type="range" id="seekBar" value="0">
</div>

<script>
  const video = document.getElementById('customVideo');
  const seekBar = document.getElementById('seekBar');

  function playVideo() {
    video.play();
  }

  function pauseVideo() {
    video.pause();
  }

  // 更新进度条
  video.addEventListener('timeupdate', () => {
    seekBar.value = (video.currentTime / video.duration) * 100;
  });

  // 跳转视频
  seekBar.addEventListener('input', () => {
    video.currentTime = (seekBar.value / 100) * video.duration;
  });
</script>

使用Video.js库

Video.js是一个流行的开源HTML5视频播放器库,支持跨浏览器兼容性和丰富功能:

js实现播放视频

<link href="https://vjs.zencdn.net/7.20.3/video-js.css" rel="stylesheet">
<video id="videojs-player" class="video-js" controls preload="auto" width="640" height="264">
  <source src="movie.mp4" type="video/mp4">
</video>
<script src="https://vjs.zencdn.net/7.20.3/video.js"></script>
<script>
  const player = videojs('videojs-player');
  player.play();
</script>

处理全屏播放

JavaScript可以控制视频进入或退出全屏模式:

function toggleFullscreen() {
  const video = document.getElementById('myVideo');
  if (!document.fullscreenElement) {
    video.requestFullscreen().catch(err => {
      console.error(`全屏错误: ${err.message}`);
    });
  } else {
    document.exitFullscreen();
  }
}

监听视频事件

视频元素提供多种事件监听,用于处理不同播放状态:

js实现播放视频

video.addEventListener('play', () => console.log('视频开始播放'));
video.addEventListener('pause', () => console.log('视频已暂停'));
video.addEventListener('ended', () => console.log('视频播放结束'));
video.addEventListener('error', () => console.error('视频加载错误'));

兼容多格式视频源

为兼容不同浏览器,可以提供多种视频格式源:

<video controls>
  <source src="movie.mp4" type="video/mp4">
  <source src="movie.webm" type="video/webm">
  <source src="movie.ogv" type="video/ogg">
</video>

移动端自动播放处理

移动端浏览器通常阻止自动播放,需要用户交互触发:

document.addEventListener('click', () => {
  const video = document.getElementById('myVideo');
  video.play().catch(e => console.log('自动播放被阻止:', e));
}, { once: true });

标签: 视频js
分享给朋友:

相关文章

js节流实现

js节流实现

节流的概念 节流(Throttle)是一种限制函数执行频率的技术,确保函数在一定时间间隔内只执行一次。常用于滚动事件、窗口调整等高频触发的场景。 基础实现方法 使用时间戳判断是否执行函数: fun…

php实现视频直播

php实现视频直播

PHP 实现视频直播的基本方法 PHP 本身并不直接处理视频流,但可以作为后端支持视频直播系统的搭建。以下是几种常见的实现方式: 使用第三方流媒体服务 利用现成的流媒体平台(如 Wowza、Red5…

js实现点击效果

js实现点击效果

实现点击效果的JavaScript方法 使用addEventListener绑定点击事件 通过document.getElementById或document.querySelector获取DOM元素…

vue实现视频轮播

vue实现视频轮播

vue实现视频轮播的方法 使用Vue实现视频轮播可以通过多种方式完成,以下是几种常见的方法: 使用vue-awesome-swiper插件 安装vue-awesome-swiper插件,这是一个基于…

vue.js实现checkbox

vue.js实现checkbox

使用 v-model 绑定复选框 在 Vue.js 中,可以通过 v-model 指令实现复选框的双向数据绑定。复选框的值会与 Vue 实例中的数据属性同步。 <template>…

vue实现监控视频流

vue实现监控视频流

Vue 中实现监控视频流的方法 使用 HTML5 的 <video> 标签 在 Vue 组件中,可以通过 HTML5 的 <video> 标签来播放视频流。适用于支持 RTMP…