在尝试了各种各样的事情后,我终于能够创建一个似乎是一个有效的解决方案.我没有在旧浏览器或其他操作系统上测试过这个,但这适用于最新版本的Chrome,IE,Firefox和Opera. (虽然可以了解一些关于这是否适用于其他系统的反馈意见)

我们的想法是将所有3个视频输出帧输出到HTML5画布.原始视频会被隐藏并预先预加载,以避免加载之间的暂停.

这是代码:

var playCounter = 0;

var clipArray = [];

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

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

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

$video1.attr("src", "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerEscapes.mp4");

$video2.attr("src", "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerJoyrides.mp4");

$video3.attr("src", "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerFun.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);

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

请注意,代码不是很漂亮,并且会受益于一些清理和优化,但至少这应该显示解决问题的方法,并在HTML5中实现几个视频的无缝播放.还要确保在html文件位置包含jQuery源文件以使代码生效.

html让视频自动循环播放,javascript – HTML5视频 – 如何进行无缝播放和/或循环播放多个视频?...相关推荐

  1. html 图片自动滚动播放,javascript+html5实现仿flash滚动播放图片的方法

    本文实例讲述了javascript+html5实现仿flash滚动播放图片的方法.分享给大家供大家参考.具体如下: html部分: css部分: body{ margin: 0px; padding: ...

  2. html5多张图片滚动播放,javascript+html5实现仿flash滚动播放图片的方法_javascript技巧...

    本文实例讲述了javascript+html5实现仿flash滚动播放图片的方法.分享给大家供大家参考.具体如下: html部分: css部分: body{ margin: 0px; padding: ...

  3. html 安卓 视频加载错误,javascript – html5视频无法在Android webview中播放,但适用于(移动)Chrome...

    我有一个(客户)网站使用js brightcove player来渲染html5视频. (阅读:我无法编辑网站本身) 在移动Chrome中,视频有效,一切都很好.但是在我的Android应用中,使用呈 ...

  4. html插入循环图片,javascript – HTML5在带有for循环的画布上绘制图片?

    所以,我想用 HTML5创建一个Minecraft网站主题.我在HTML5 / Javascript中有点摇摇欲坠(暂时没用过它),我需要一些帮助.我正在尝试计算一些可以放在屏幕上的16x16px瓷砖 ...

  5. 怎么取消苹果手机自动续费_怎么取消腾讯视频自动续费

    很多人都喜欢腾讯视频追剧,他们为了免广告都会购买腾讯视频会员,一般情况都是自动续费的,那怎么取消腾讯视频自动续费呢?下面将会为大家介绍. 怎么取消腾讯视频自动续费 一.我们可以通过电脑网页端取消: 1 ...

  6. html5播放视频自动循环播放,HTML5 通过Vedio标签实现视频循环播放的示例代码

    要实现网页播放视频在HTML5以前是通过标签 标签的作用是在 HTML页面中嵌入多媒体元素 标签的作用是在 HTML页面中嵌入多媒体元素 存在的问题: 需要flash,效率低 如果浏览器不支持 Fla ...

  7. HTML5播放视频autoplay不起作用-HTML5视频不自动播放

    初学HTML5视频播放的同学,可能大多数都会遇到这样一个问题:按照教程写的代码,添加了autoplay属性,为什么视频还是无法自动播放? <!DOCTYPE html> <html& ...

  8. javascript模拟点击事件--实现视频自动播放

    背景      这两年一直在做浏览器开发相关的工作,我们所做的浏览器禁用了视频自动播放功能,以实现视频预加载功能:浏览器在视频播放时为了实现视频秒开效果(就是一点击页面里的播放按钮就立即开始播放,而不 ...

  9. html插入视频时不自动播放,html5中嵌入视频自动播放的问题解决

    在h5页面中嵌入视频的情况是比较多件的,有时候会碰到需要自动播放的情况,之前根本觉得这不是问题,但是自己的项目中需要视频的时候就有点sb了,达不到老板的要求,那个急呀~~~ 各种查资料,找到一个方法, ...

  10. html视频如何不自动播放,html5中嵌入视频自动播放的问题解决

    在H5页面中嵌入视频的情况是比较多件的,有时候会碰到需要自动播放的情况,之前根本觉得这不是问题,但是自己的项目中需要视频的时候就有点sb了,达不到老板的要求,那个急呀~~~ 各种查资料,找到一个方法, ...

最新文章

  1. python三十七:xml模块
  2. java 操作 word 表格和样式_poi 操作excel和word(修改样式和内容)
  3. 云南河道 kml文件_处理能力提升 4 倍 ,大疆智图 4 天完成 5 公里河道建模
  4. php把表单转为json保存,javascript – 使用jquery将表单数据保存到本地json文件中
  5. 智慧交通day04-特定目标车辆追踪03:siamese在目标跟踪中的应用-汇总
  6. android 模拟器声音设置,使用android模拟器录制声音
  7. 【金融】【python】三因子(three factor)简单模型实证
  8. python 模拟键盘_Python模拟键盘输入和鼠标操作
  9. excel如何将英文星期转为中文星期_用Excel制作偶像日历的体验,你一定不能错过...
  10. 怎么用C语言求解线性规划,线性规划习题详细解析,包括线性规划方程求解步骤...
  11. pix4d操作流程_利用精灵配合PIX4D软件制作正摄图片的简单制作流程
  12. 【C语言程序设计】C语言求圆周率π(三种方法)
  13. SIM800C 介绍
  14. 零基础编程可以学习大数据吗?大数据难不难学啊?
  15. 十种做Flash游戏赚钱的方法
  16. 牵线搭桥!让用户更高效地完成表单填写
  17. 写一个抖音协议 价格你定
  18. Autojs 微信添加好友脚本
  19. ggsurvplot_combine R语言 一张图内画多条生存曲线
  20. zookeeper添加ip白名单

热门文章

  1. 原生开发跟混合开发两者有什么区别
  2. 全面了解三极管——三极管用作开关管1
  3. pytorch ——torch.optim.Adam
  4. 关于响应式布局,你必须要知道的
  5. 服务器03系统 关wmi,win10系统WMI服务器怎么关闭
  6. java:中文汉语数字和阿拉伯数字互相转换,人民币大小写转换
  7. 引用 乐嘉写给所有女人的话,男人千万别错过!
  8. 数字温湿度传感器DHT11模块
  9. VUE项目引入公共样式的styl文件
  10. 斐讯k2修改dns服务器,斐讯k2路由器怎么重置?_斐讯k2恢复出厂设置教程-192路由网...