【问题标题】:I need a way to play a series of videos randomly我需要一种随机播放一系列视频的方法
【发布时间】:2013-09-23 19:24:51
【问题描述】:

现在,我有一段代码可以加载三个视频之一——随机播放顺序在视频本身中。

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

我需要找出一种方法来自动播放一个视频,然后在结束后立即从设置的目录中随机播放另一个视频。

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

【问题讨论】:

    标签: php arrays html video html5-video


    【解决方案1】:

    试试shuffle()(见PHP manual: shuffle())。

    您可以创建包含所有 12 个视频的数组,在其上调用 shuffle(),然后它将每次随机输出所有 12 个。

    【讨论】:

    • 谢谢,看来我必须找到一个能够像播放列表一样在列表中运行的视频播放器,但这可能会解决加载时的随机顺序。
    • 这看起来可能是你的票:jplayer.org/latest/demo-02-video。如果您查看源代码,您可以看到可以将多个视频添加到播放列表中。所以你可以shuffle()服务器端,将你的数组输出到适当的JavaScript,然后使用jPlayer选项删除播放列表控件。
    • 你也可以看看这个:Video looping.
    • 太棒了!我需要做的就是将一个随机数组合并到函数中。
    • 嘿arcodesign,我想你不能帮我解决这个问题吗?以前的小提琴工作正常,但它不兼容跨浏览器。在这方面我把它放在一起:jsfiddle.net/3uRq6/38 不幸的是它没有表现出来,我不太清楚为什么......有什么想法吗?
    【解决方案2】:

    你试图做的事情不能只用 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 文件并在加载时随机填充视频,然后在页面加载时设置新的随机视频。 以下是如何使用 jQuery 加载 XML 文件的链接:Jquery.Get()

    【讨论】:

    • arcodesign 提到了 shuffle() 用于创建随机列表。鉴于他的建议仍然是服务器端,我需要找到一种按顺序播放视频列表的方法——可能使用 jquery。我也可以根据您的建议使用 xml 文件加载文件,但我现在遇到的问题是找到一种按顺序播放这些视频的方法(无论列表是什么)。我想你不知道一个用于以“播放列表”风格播放视频的 jquery 插件吗? 应该注意的是,视频不应该有播放控件或可见列表——它们是一种背景元素。
    • 你可以使用 jPlayer 作为arcodesign 提到的,但一个完整的插件可能不是你需要的,因为你不想要控件和所有花哨的东西。您可以将“结束”事件处理程序绑定到您的所有视频并让它开始下一个视频。像这样: $('.video').bind('end',function(){ this.sibling('.video').play(); });
    • 我不确定如何使用它。虽然它看起来很有希望。我拼凑了一个又快又脏的 js fiddle,但它肯定是不对的...jsfiddle.net/W4ENL我会继续修补它。
    【解决方案3】:

    在 JavaScript 或 TypeScript 中创建一个源名称数组,然后创建一个随机函数。

    function random(i){
    return Math.rand()*100%12;
    }
    

    然后使用返回值设置源src

    如果之前播放过任何其他视频,则您必须加载播放器。

    $("video").load();
    

    然后播放。

    $("video").play();
    

    【讨论】:

    • 您似乎在回答一个不同的问题,该问题原本不应该附加到原始问题中。您的答案更适合作为评论,如果您不删除它,可能会遭到反对。
    【解决方案4】:

    根据我的了解澄清一下,您有 12 个视频,并且您想一个接一个地随机播放其中的 3 个。如果我是你,我会使用以下方法,

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

      • 生成javascript视频数组的php代码

    $视频 = [ “视频1.mp4”, “视频2.mp4”, “视频3.mp4”, “视频4.mp4”, “视频5.mp4” ]; 随机播放($videos);

    echo "var 视频 = " 。 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>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-28
      • 1970-01-01
      • 2016-12-03
      • 1970-01-01
      • 2010-11-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多