我是JS的初学者 我想知道如何随机化视频播放列表(JS),我想使用画布来查看视频“受保护”(通过画布传递视频)然后循环播放视频以重新开始,视频连续播放列表随机化。不停
非常感谢帮助!提前致谢!!
答案 0 :(得分:0)
您可以简单地将列表生成为数组:
var videoList = [video1url, video2url, ...];
然后使用自定义分拣机对其进行排序,将其随机化:
videoList.sort(function(a, b) {return 0.5 - Math.random()});
Online demo here(打开控制台查看“已排序”列表)。
对于连续视频播放器,您可以查看我之前提到的 this fiddle 。
var ctx = canvas.getContext('2d'), /// get canvas
w = canvas.width, /// cache dimensions
h = canvas.height,
video1 = document.createElement('video'), /// two video elements
video2 = document.createElement('video'),
isVideo1 = false, /// toggler
list = [], /// video list
current = 0, /// index
isPlaying = false; /// is video playing
/// add event handlers so we know when a video finished
video1.addEventListener('ended', play, false);
video2.addEventListener('ended', play, false);
/**
* Then we add a few videos to our list
*/
/// first arg. is always mp4 version, second anything else (ogg, webm etc)
addVideo('somevideourl1.mp4', 'somevideourl.ogg');
addVideo('somevideourl2.mp4', 'somevideour2.webm');
/// here you re-sort your list with the random (see details for list)
list.sort(function(a, b) {return 0.5 - Math.random()});
/// get first video
getVideo(list[0], play);
/// start loop
render();
/// this will start play the videos
function play(){
/// what video to start
var video = (isVideo1 === false ? video1 : video2),
next = current;
/// toggle
isVideo1 = !isVideo1;
/// get next video in list
next++;
if (next > list.length - 1) next = 0;
if (list.length > 0) getVideo(list[next]);
/// start video
video.play();
isPlaying = true;
current = next;
}
/// this draws the video frames to canvas
function render() {
if (isPlaying) {
var video = (isVideo1 === true ? video1 : video2);
ctx.drawImage(video, 0, 0, w, h);
}
requestAnimationFrame(render);
}
/// this function adds a video to the list
function addVideo(urlMP4, url) {
list.push({
urlMP4: urlMP4,
url: url,
isReady: false
})
}
/// start download a video
function getVideo(vid, callback) {
var video = (isVideo1 === false ? video1 : video2),
me = this;
video.addEventListener('canplay', canPlay, false);;
function canPlay(e) {
video.removeEventListener('canplay', canPlay, false);
vid.isReady = true;
if (typeof callback === 'function')
callback(vid);
}
if (video.canPlayType("video/mp4").length > 0) {
video.src = vid.urlMP4;
} else {
video.src = vid.url;
}
}