我需要一种随机播放一系列视频的方法

时间:2013-09-23 19:24:52

标签: php arrays html5 video html5-video

现在,我有一大堆代码可以加载三个视频中的一个 - 随机播放顺序在视频中。

在下面的代码中,我只处理了三个视频,考虑到所有可能性,在页面加载时会产生大约六种可能性。我将在最后的网站上处理大约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。

我需要弄清楚的是一种自动播放一个视频的方法,然后在设置目录结束时随机播放另一个视频。

我认为我可能会将所有视频都放到幻灯片中,但我不确定滑块在显示时会如何触发每个视频...

4 个答案:

答案 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个,一个接一个。如果我是你,我会用下面的方法,

  1. 在页面加载时我会选择3个视频,你可以使用视频名称数组,然后使用“随机播放”功能。
  2. 在每个视频完成加载其他视频后使用javascript侦听器。

    • php代码生成javascript视频数组
  3. $ videos = [     “video1.mp4”     “video2.mp4”     “video3.mp4”     “video4.mp4”     “video5.mp4” ]。 洗牌($视频);

    echo“var videos =”。 json_encode(array_slice($ videos,0,3));

    • JS块播放

    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>