0

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

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

4 回答 4

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

于 2013-09-23T19:41:28.717 回答
1

尝试shuffle()(参见PHP 手册:shuffle())。

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

于 2013-09-23T19:52:06.203 回答
0

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

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

然后使用返回值设置源 src

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

$("video").load();

然后玩。

$("video").play();
于 2017-01-15T06:31:20.800 回答
0

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

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

    • php代码生成javascript视频数组

$videos = [“video1.mp4”、“video2.mp4”、“video3.mp4”、“video4.mp4”、“video5.mp4”];洗牌($视频);

回声“变种视频=”。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>

于 2017-01-15T07:57:53.233 回答