当前位置:首页 > JavaScript

js实现切换视频

2026-01-30 23:17:48JavaScript

使用HTML5 video标签切换视频源

在HTML中嵌入video标签,通过JavaScript动态修改src属性来切换视频

<video id="myVideo" width="640" height="360" controls>
  <source src="video1.mp4" type="video/mp4">
</video>

<button onclick="changeVideo('video2.mp4')">切换视频</button>
function changeVideo(newVideoSrc) {
  const video = document.getElementById('myVideo');
  video.src = newVideoSrc;
  video.load();
  video.play();
}

使用数组管理多个视频源

创建一个视频源数组,通过索引切换不同视频

const videoSources = [
  'video1.mp4',
  'video2.mp4',
  'video3.mp4'
];
let currentIndex = 0;

function switchVideo() {
  currentIndex = (currentIndex + 1) % videoSources.length;
  document.getElementById('myVideo').src = videoSources[currentIndex];
  document.getElementById('myVideo').load();
  document.getElementById('myVideo').play();
}

添加过渡效果

在切换视频时添加淡入淡出效果增强用户体验

#myVideo {
  transition: opacity 0.5s ease-in-out;
}

.fade-out {
  opacity: 0;
}
function changeVideoWithFade(newSrc) {
  const video = document.getElementById('myVideo');

  video.classList.add('fade-out');

  setTimeout(() => {
    video.src = newSrc;
    video.load();
    video.oncanplay = function() {
      video.classList.remove('fade-out');
      video.play();
    };
  }, 500);
}

使用MediaSource Extensions API

对于需要拼接或动态生成的视频流,可以使用更高级的MediaSource API

const video = document.getElementById('myVideo');
const mediaSource = new MediaSource();

video.src = URL.createObjectURL(mediaSource);

mediaSource.addEventListener('sourceopen', function() {
  const sourceBuffer = mediaSource.addSourceBuffer('video/mp4; codecs="avc1.42E01E, mp4a.40.2"');

  fetch('video1.mp4')
    .then(response => response.arrayBuffer())
    .then(data => {
      sourceBuffer.appendBuffer(data);
    });
});

function switchVideoWithMSE(newVideoUrl) {
  const sourceBuffer = mediaSource.sourceBuffers[0];

  fetch(newVideoUrl)
    .then(response => response.arrayBuffer())
    .then(data => {
      sourceBuffer.appendBuffer(data);
    });
}

处理视频预加载

提前加载视频以减少切换时的缓冲时间

const videoCache = {};

function preloadVideos(videoUrls) {
  videoUrls.forEach(url => {
    fetch(url)
      .then(response => response.blob())
      .then(blob => {
        videoCache[url] = URL.createObjectURL(blob);
      });
  });
}

function playPreloadedVideo(url) {
  const video = document.getElementById('myVideo');
  video.src = videoCache[url];
  video.play();
}

响应式视频切换

根据屏幕尺寸切换不同分辨率的视频

js实现切换视频

function getOptimalVideoSource() {
  const screenWidth = window.innerWidth;
  let videoSrc;

  if (screenWidth >= 1920) {
    videoSrc = 'video-4k.mp4';
  } else if (screenWidth >= 1280) {
    videoSrc = 'video-hd.mp4';
  } else {
    videoSrc = 'video-sd.mp4';
  }

  return videoSrc;
}

window.addEventListener('resize', function() {
  const optimalSrc = getOptimalVideoSource();
  if (document.getElementById('myVideo').src !== optimalSrc) {
    changeVideo(optimalSrc);
  }
});

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

相关文章

js实现图片轮播

js实现图片轮播

实现基础图片轮播 使用HTML、CSS和JavaScript创建一个简单的图片轮播。HTML部分定义轮播容器和图片,CSS设置样式和动画效果,JavaScript处理轮播逻辑。 <div cl…

js实现图片放大缩小

js实现图片放大缩小

实现图片放大缩小的基础方法 使用CSS的transform: scale()属性可以快速实现图片的放大缩小效果。通过JavaScript动态修改该属性值: const img = document.…

js实现类

js实现类

JavaScript 实现类的几种方式 JavaScript 是一种基于原型的语言,但在 ES6 之后引入了 class 语法糖,使得实现类更加直观。以下是几种常见的实现方式: 使用构造函数 传统的…

js实现tab选项卡切换

js实现tab选项卡切换

实现Tab选项卡切换的JavaScript方法 使用纯JavaScript实现Tab切换功能,可以通过监听点击事件动态切换内容显示状态。以下是两种常见实现方式: 基础DOM操作实现 /…

vue视频怎么实现

vue视频怎么实现

Vue 视频实现方法 在 Vue 中实现视频功能可以通过多种方式完成,以下是常见的几种方法: 使用 HTML5 <video> 标签 在 Vue 组件模板中直接使用 HTML5 的 &…

js实现祖玛

js实现祖玛

实现祖玛游戏的核心思路 祖玛游戏的核心玩法是发射彩色珠子,形成三个或以上相同颜色的珠子即可消除。以下是使用JavaScript实现的基本框架。 游戏初始化 创建画布并初始化游戏状态: const…