尝试过各种各样的事情后,我终于能够创造出似乎是一个工作解决方案。我还没有在旧版浏览器或其他操作系统上测试过这个版本,但是这个版本可以在最新版本的Chrome,IE,Firefox和Opera上运行。 (虽然更多反馈意见是否可以在其他系统上使用)

这个想法是让所有3个视频输出帧到HTML5画布。原始视频被隐藏并预先加载以避免加载之间暂停。

下面是代码:

HTML:

Your browser does not support playing this Video

Your browser does not support playing this Video

Your browser does not support playing this Video

Times the middle video will repeat itself:

Start

site.js

"use strict"

$(function() {

var playCounter = 0;

var clipArray = [];

var $video1 = $("#video1");

var $video2 = $("#video2");

var $video3 = $("#video3");

$video1.attr("src", "video/video1.mp4");

$video2.attr("src", "video/video2.mp4");

$video3.attr("src", "video/video3.mp4");

var timerID;

var $canvas = $("#myCanvas");

var ctx = $canvas[0].getContext("2d");

function stopTimer() {

window.clearInterval(timerID);

}

$('#startPlayback').click(function() {

stopTimer();

playCounter = $('#playbackNum').val();

clipArray = [];

// addd element to the end of the array

clipArray.push(1);

for (var i = 0; i < playCounter; i++) {

clipArray.push(2);

}

clipArray.push(3);

$video2[0].load();

$video3[0].load();

$video1[0].play();

});

function drawImage(video) {

//last 2 params are video width and height

ctx.drawImage(video, 0, 0, 640, 360);

}

// copy the 1st video frame to canvas as soon as it is loaded

$video1.one("loadeddata", function() { drawImage($video1[0]); });

// copy video frame to canvas every 30 milliseconds

$video1.on("play", function() {

timerID = window.setInterval(function() { drawImage($video1[0]); }, 30);

});

$video2.on("play", function() {

timerID = window.setInterval(function() { drawImage($video2[0]); }, 30);

});

$video3.on("play", function() {

timerID = window.setInterval(function() { drawImage($video3[0]); }, 30);

});

function onVideoEnd() {

//stop copying frames to canvas for the current video element

stopTimer();

// remove 1st element of the array

clipArray.shift();

//IE fix

if(!this.paused) this.pause();

if (clipArray.length > 0) {

if (clipArray[0] === 1) {

$video1[0].play();

}

if (clipArray[0] === 2) {

$video2[0].play();

}

if (clipArray[0] === 3) {

$video3[0].play();

}

}

else {

// in case of last video, make sure to load 1st video so that it would start from the 1st frame

$video1[0].load();

}

}

$video1.on("ended", onVideoEnd);

$video2.on("ended", onVideoEnd);

$video3.on("ended", onVideoEnd);

});

请注意,代码不是很漂亮,会从一些受益清理和优化,但至少应该显示解决问题和实施的方法在HTML5中无缝播放多个视频。 还要确保在html文件位置包含jQuery源文件以使代码正常工作。

用html5播放两个视频,HTML5视频 - 如何进行无缝播放和/或几个视频循环?相关推荐

  1. 视频封面自动播放两秒钟html,使用videojs轻松搭建一个播放器

    之前在项目中有视频播放的这样一个需求,它需要: 1.播放器不采用默认样式,重新设计: 2.兼容IE浏览器 3.后续增加字幕.清晰度等功能 总的看来,若是重新全部自己去写这些功能,是很耗费时间和人力的. ...

  2. 【C】借助DirectSound进行流的形式无缝播放的例子

    DirectSound是DirectX的一个组件.用于播放声音.BGM等.和DirectMusic不一样,DirectSound用于播放波形声音(WAV无损等),而不是midi音乐. 通常大家使用Di ...

  3. 百度云HTML5倍速播放视频方法(Microsoft Edge网页播放)

    百度云HTML5倍速播放视频方法(Microsoft Edge网页播放) 电脑端使用百度云播放视频有两种途径: 一是下载到本地,然后选择播放器播放,但是按百度的尿性,氪金才能成为人上人,否则下载极慢, ...

  4. 平板电脑支持html吗,HTML5视频无法在平板电脑上播放(HTML5 video not playing on tablets)...

    HTML5视频无法在平板电脑上播放(HTML5 video not playing on tablets) 下午好,我早些时候发布了一些内容,但仍然需要帮助. 我有一个Nexus 7和一个IPad2. ...

  5. web页面播放优酷视频,播放html5视频,兼容ie7 vcastr22.swf播放

    一:vcastr22.swf播放本地视频 1.下载vcastr22.swf 把播放插文件放到服务器文件夹. 2.代码如下 红色路径是你自己服务器的路径 可以用最简单的 文件夹/文件夹/文件夹/xx.M ...

  6. 优酷视频HTML网址自动播放,优酷视频html5嵌入代码

    视频是一种非常有效的表达方式: 在博客上用视频表达一些观点 在产品页提供demo视频,让用户更快了解产品,比如 Bungeer app 虽然可以将视频放在自己的server上,但对于非专攻视频的站点: ...

  7. html5 video 停止播放视频,html5 video怎么停止播放视频

    html5 video停止播放视频的方法:首先使用"document.getElementById("id值")"获取到video对象:然后使用"vi ...

  8. html video标签播放直播视频,HTML5 Video 标签播放及控制视频

    Video 是 HTML5 中新增的标签,使用 Video 标签可以播放 ogg.mp4.webm 等格式的视频,Video 标签的引入,减少前端页面对 Flash 动画的依赖. 0x0 预备知识 不 ...

  9. edge播放视频HTML5黑屏,win10专业版系统edge浏览器看视频出现黑屏怎么办?

    在windows10专业版系统中使用edge浏览器播放视频的时候,出现无法播放视频,只能看到黑屏的情况,出现这种问题怎么办呢?下面就和小编一起来看解决方法吧! 1.按下win+R 组合键打开运行,在运 ...

最新文章

  1. Android图片资源获取原则
  2. 火狐查cookie_Firefox 65默认会阻止跟踪Cookie
  3. 英特尔为 Kubernetes 推出分布式深度学习平台:Nauta
  4. amd cpu排行_最新AMD CPU排行出炉 E6版3000+夺魁
  5. java输出一副扑克牌_JAVA编一副扑克牌
  6. 美联储降息首日:资本市场反向操作 道指狂泻800点
  7. Android常用开发网址(持续更新)
  8. 使用 Grafana+collectd+InfluxDB 打造现代监控系统
  9. windows7安装openssh
  10. Python实现好友管理系统
  11. C语言练习题~斐波那契数列
  12. 比特率与波特率的区别
  13. 在linux中PHP的集成环境吗,linux有没有php集成环境
  14. 小管家进销存_管家婆物联宝微订货V2.3发版公告
  15. GM300单片硅钢铁损测试仪操作使用指引
  16. 深度学习环境搭建第一步----Ubuntu 安装(win7 + win10)
  17. 2018年12月8日国际项目经理PMP培训考试报名中
  18. springboot +mybatis实现多表一对一查询
  19. 前后端不分离到分离演变,优势,前后端接口联调,排错
  20. 【读书笔记】《曾国藩的正面与侧面(一)》

热门文章

  1. SAP Spartacus B2B 页面 Popover Component 的条件显示逻辑
  2. SAP Spartacus breakpoint的决定逻辑
  3. 深入学习SAP UI5框架代码系列之二:UI5 控件的渲染器
  4. 解决MySQL Server Logs不能正常查看的问题
  5. SAP CRM Genil Text-for-Key-Codes vs SAP C4C只读字段
  6. save product in COMMPR01的调试和调用栈
  7. 使用url参数在C4C的html5 UI和Fiori UI之间做切换
  8. 如何处理SAP Launchpad上tile打不开的问题
  9. SAP APF modeler过滤器的设计原理
  10. SAP Spartacus的自定义路由