当前位置:首页 > JavaScript

js实现视频播放

2026-04-04 02:57:38JavaScript

使用HTML5 Video元素实现基础播放

HTML5提供了<video>标签,可以直接嵌入视频并控制播放。JavaScript可用于增强交互性。

<video id="myVideo" width="320" height="240" controls>
  <source src="movie.mp4" type="video/mp4">
  您的浏览器不支持HTML5视频
</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 id="playBtn">播放</button>
  <button id="pauseBtn">暂停</button>
  <input type="range" id="progressBar" min="0" max="100">
</div>

<script>
  const video = document.getElementById('customVideo');
  document.getElementById('playBtn').addEventListener('click', () => video.play());
  document.getElementById('pauseBtn').addEventListener('click', () => video.pause());

  video.addEventListener('timeupdate', () => {
    const progress = (video.currentTime / video.duration) * 100;
    document.getElementById('progressBar').value = progress;
  });
</script>

使用Video.js库实现高级功能

Video.js是一个开源的HTML5视频播放器库,支持多种格式和插件。

js实现视频播放

<link href="https://vjs.zencdn.net/7.20.3/video-js.css" rel="stylesheet">
<video id="advVideo" 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('advVideo');
  player.ready(function() {
    // 添加水印插件等扩展功能
  });
</script>

处理全屏播放

现代浏览器提供了全屏API,可以控制视频全屏显示。

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

添加字幕轨道

HTML5视频支持WebVTT格式的字幕文件。

js实现视频播放

<video id="subVideo" controls>
  <source src="movie.mp4" type="video/mp4">
  <track label="English" kind="subtitles" srclang="en" src="subtitles.vtt" default>
</video>

响应式视频布局

通过CSS确保视频在不同设备上正确显示。

.video-container {
  position: relative;
  padding-bottom: 56.25%; /* 16:9宽高比 */
  height: 0;
  overflow: hidden;
}
.video-container video {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}

处理自适应流媒体

对于HLS或DASH等自适应流媒体格式,可以使用hls.js或dash.js库。

<script src="https://cdn.jsdelivr.net/npm/hls.js@latest"></script>
<script>
  const video = document.getElementById('hlsVideo');
  if (Hls.isSupported()) {
    const hls = new Hls();
    hls.loadSource('stream.m3u8');
    hls.attachMedia(video);
  }
</script>

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

相关文章

css3结合js制作

css3结合js制作

CSS3 结合 JavaScript 制作动态效果 CSS3 和 JavaScript 结合可以实现丰富的动态效果,包括动画、交互和响应式设计。以下是几种常见的实现方式: CSS3 动画与 Java…

js实现轮播

js实现轮播

实现轮播图的基本思路 轮播图的核心逻辑是通过定时切换展示的图片或内容,通常结合左右滑动按钮和指示器(小圆点)增强交互性。以下是基于原生JavaScript的实现方法。 HTML结构 构建轮播图的HT…

js实现打印

js实现打印

使用window.print()方法实现打印 在JavaScript中,可以通过调用window.print()方法直接触发浏览器的打印功能。这会打开系统的打印对话框,用户可以选择打印机和设置打印选项…

js实现pdf在线预览

js实现pdf在线预览

使用PDF.js实现PDF在线预览 PDF.js是由Mozilla开发的一个开源JavaScript库,可以在网页中直接渲染PDF文件。以下是实现PDF在线预览的步骤: 引入PDF.js库 在HT…

js分组实现

js分组实现

分组实现方法 在JavaScript中,可以通过多种方式实现数组或对象的分组操作。以下是几种常见的方法: 使用Array.prototype.reduce() 通过reduce方法可以轻松实现数组分…

js实现vue路由

js实现vue路由

Vue 路由的基本实现 在 Vue.js 中实现路由功能通常使用 Vue Router 库。Vue Router 是 Vue.js 官方的路由管理器,用于构建单页面应用(SPA)。 安装 Vue R…