现在,我有一大堆代码可以加载三个视频中的一个 - 随机播放顺序在视频中。
在下面的代码中,我只处理了三个视频,考虑到所有可能性,在页面加载时会产生大约六种可能性。我将在最后的网站上处理大约12个视频,这个方法不会削减它,因为它需要花费时间来构建每个可能性(114个视频)......
无论如何,这是我的代码:
<div id="video_container">
<div id="video">
<video width="1060" height="596" autoplay="autoplay" loop="loop" muted="muted">
<? $videolink = get_template_directory_uri() . "/videos/";
$videos = array(
' <source src="' . $videolink . 'test-123.mp4" type="video/mp4">
<source src="' . $videolink . 'test-123.webm" type="video/webm">
<source src="' . $videolink . 'test-123.ogv" type="video/ogg">
',
' <source src="' . $videolink . 'test-132.mp4" type="video/mp4">
<source src="' . $videolink . 'test-132.webm" type="video/webm">
<source src="' . $videolink . 'test-132.ogv" type="video/ogg">
',
' <source src="' . $videolink . 'test-213.mp4" type="video/mp4">
<source src="' . $videolink . 'test-213.webm" type="video/webm">
<source src="' . $videolink . 'test-213.ogv" type="video/ogg">
',
' <source src="' . $videolink . 'test-231.mp4" type="video/mp4">
<source src="' . $videolink . 'test-231.webm" type="video/webm">
<source src="' . $videolink . 'test-231.ogv" type="video/ogg">
',
' <source src="' . $videolink . 'test-312.mp4" type="video/mp4">
<source src="' . $videolink . 'test-312.webm" type="video/webm">
<source src="' . $videolink . 'test-312.ogv" type="video/ogg">
',
' <source src="' . $videolink . 'test-321.mp4" type="video/mp4">
<source src="' . $videolink . 'test-321.webm" type="video/webm">
<source src="' . $videolink . 'test-321.ogv" type="video/ogg">
',
);
echo $videos[array_rand($videos)]; } ?>
</video>
</div>
</div>
这很简单;一个用于构建选项列表的php数组,然后是一个echo来随机列出其中一个URL。
我需要弄清楚的是一种自动播放一个视频的方法,然后在设置目录结束时随机播放另一个视频。
我认为我可能会将所有视频都放到幻灯片中,但我不确定滑块在显示时会如何触发每个视频...
答案 0 :(得分:1)
你想要做的事只能在PHP中完成。 PHP作为服务器端语言只能影响页面最初加载的方式。从那里得到一系列视频自动播放你需要使用客户端代码,如jQuery或Javascript。
我建议使用XML列出您的视频网址:
<Videos>
<Video>
<Name>Video Name</Name>
<URL>link to video</URL>
</Video>
<Video>
<Name>Video Name</Name>
<URL>link to video</URL>
</Video>
<Video>
<Name>Video Name</Name>
<URL>link to video</URL>
</Video>
</Videos>
然后使用jQuery加载XML文件并随机在onLoad上填充视频,然后在页面加载时设置新的随机视频。 以下是使用jQuery加载XML文件的链接:Jquery.Get()
答案 1 :(得分:1)
尝试shuffle()
(请参阅PHP manual: shuffle())。
您可以创建包含所有12个视频的数组,在其上调用shuffle(),然后每次随机输出所有12个。
答案 2 :(得分:0)
在JavaScript或TypeScript中创建一个源名称数组,然后创建一个随机函数。
function random(i){
return Math.rand()*100%12;
}
然后使用返回值设置source src
然后,如果以前播放任何其他视频,您必须加载播放器。
$("video").load();
然后玩。
$("video").play();
答案 3 :(得分:0)
为了澄清我的理解,你有12个视频,你想要随机播放3个,一个接一个。如果我是你,我会用下面的方法,
在每个视频完成加载其他视频后使用javascript侦听器。
$ videos = [ “video1.mp4” “video2.mp4” “video3.mp4” “video4.mp4” “video5.mp4” ]。 洗牌($视频);
echo“var videos =”。 json_encode(array_slice($ videos,0,3));
var videos = [
"http://clips.vorwaerts-gmbh.de/VfE_html5.mp4",
"http://clips.vorwaerts-gmbh.de/VfE_html5.mp4",
];
var videoId =0;
var elemVideo = document.getElementById('video');
var elemSource = document.createElement('source');
elemVideo.appendChild(elemSource);
elemVideo.addEventListener('ended',play_next,false);
function play_next(){
if(videoId==2){
elemVideo.stop();
}else{
video.pause();
elemSource.setAttribute('src', videos[videoId]);
videoId++;
elemVideo.load();
elemVideo.play();
}
}
play_next();
<video id="video" width="400" autoplay="autoplay" loop="loop" muted="muted" controls>
video not supported
</video>