从文件夹中随机播放视频文件,递归地向下查看所有目录结构树
Play video file randomly from a folder recursively looking down into all directory structure tree
某些 JavaScript、JQuery 或 PHP 会递归地查看文件夹,向下查看所有目录结构树,找到新的视频文件并将其加载到 html5 video 标记源,以便每次重新加载页面时自动播放。一个加号,当播放结束时,随机无缝地跳转到另一个视频文件。
这将适用于一个选定的文件夹,但不适用于所有目录结构树
<?php
$myVideoDir = '.';
$extension = 'mp4';
$videoFile = false;
$pseudoDir = scandir($myVideoDir);
$myitems = array();
$mycounter = 0;
foreach($pseudoDir as $item) {
if ( $item != '..' && $item != '.' && !is_dir($item) ) {
$ext = preg_replace('#^.*\.([a-zA-Z0-9]+)$#', '', $item);
if ( $ext == $extension )
$videoFile = $item;
if ( $videoFile <> "" ) {
$myitems[] = $videoFile;
$mycounter = $mycounter + 1;
}
}
}
$myrandom = rand(0,$mycounter-1);
if ( !!$videoFile ) {
echo '<video id="dep" class="center" width="400" autoplay controls>
<source src="'.$myVideoDir.'/'.$myitems[$myrandom].'" type="video/mp4">
</video>
';
}
?>
我建议使用以下代码。
<?php
$myVideoDir = '.';
$extension = 'mp4';
$videoFile = false;
$pseudoDir = scandir($myVideoDir);
$myitems = array();
foreach($pseudoDir as $item) {
if ( $item != '..' && $item != '.' && !is_dir($item) ) {
$ext = preg_replace('#^.*\.([a-zA-Z0-9]+)$#', '', $item);
if ( $ext == $extension ) {
$videoFile = $item;
if ( $videoFile <> "" ) {
array_push($myitems, $videoFile);
}
}
}
}
$myrandom = rand(0,count($myitems)-1);
if ( !!$videoFile ) {
echo '<video id="dep" class="center" width="400" autoplay controls><source src="'.$myVideoDir.'/'.$myitems[$myrandom].'" type="video/mp4"></video>';
}
?>
更新
考虑做一个函数。
<?php
function getFileList($dirPath, $ext){
$list = scandir($dirPath);
$fileList = array();
foreach($list as $item) {
if ($item != '..' && $item != '.' && !is_dir($item)) {
$info = pathinfo($item);
$videoFile = $item;
if ($info['extension'] == $ext) {
array_push($fileList, $item);
}
}
}
return $fileList;
}
function pickRandVid($l){
$r = rand(0, count($l) - 1);
return $l[$r];
}
$myVideoDir = ".";
$dirList = scandir($myVideoDir);
$videoList = array()
foreach($dirList as $d){
if(is_dir($d)){
array_merge($videoList, getFileList($d, "mp4"));
}
}
echo "<video id='dep' class='center' width='400' autoplay controls>\r\n";
echo "\t<source src='$myVideoDir/" . pickRandVid($videoList) . "' type='video/mp4' />\r\n";
echo "</video>\r\n";
?>
某些 JavaScript、JQuery 或 PHP 会递归地查看文件夹,向下查看所有目录结构树,找到新的视频文件并将其加载到 html5 video 标记源,以便每次重新加载页面时自动播放。一个加号,当播放结束时,随机无缝地跳转到另一个视频文件。
这将适用于一个选定的文件夹,但不适用于所有目录结构树
<?php
$myVideoDir = '.';
$extension = 'mp4';
$videoFile = false;
$pseudoDir = scandir($myVideoDir);
$myitems = array();
$mycounter = 0;
foreach($pseudoDir as $item) {
if ( $item != '..' && $item != '.' && !is_dir($item) ) {
$ext = preg_replace('#^.*\.([a-zA-Z0-9]+)$#', '', $item);
if ( $ext == $extension )
$videoFile = $item;
if ( $videoFile <> "" ) {
$myitems[] = $videoFile;
$mycounter = $mycounter + 1;
}
}
}
$myrandom = rand(0,$mycounter-1);
if ( !!$videoFile ) {
echo '<video id="dep" class="center" width="400" autoplay controls>
<source src="'.$myVideoDir.'/'.$myitems[$myrandom].'" type="video/mp4">
</video>
';
}
?>
我建议使用以下代码。
<?php
$myVideoDir = '.';
$extension = 'mp4';
$videoFile = false;
$pseudoDir = scandir($myVideoDir);
$myitems = array();
foreach($pseudoDir as $item) {
if ( $item != '..' && $item != '.' && !is_dir($item) ) {
$ext = preg_replace('#^.*\.([a-zA-Z0-9]+)$#', '', $item);
if ( $ext == $extension ) {
$videoFile = $item;
if ( $videoFile <> "" ) {
array_push($myitems, $videoFile);
}
}
}
}
$myrandom = rand(0,count($myitems)-1);
if ( !!$videoFile ) {
echo '<video id="dep" class="center" width="400" autoplay controls><source src="'.$myVideoDir.'/'.$myitems[$myrandom].'" type="video/mp4"></video>';
}
?>
更新
考虑做一个函数。
<?php
function getFileList($dirPath, $ext){
$list = scandir($dirPath);
$fileList = array();
foreach($list as $item) {
if ($item != '..' && $item != '.' && !is_dir($item)) {
$info = pathinfo($item);
$videoFile = $item;
if ($info['extension'] == $ext) {
array_push($fileList, $item);
}
}
}
return $fileList;
}
function pickRandVid($l){
$r = rand(0, count($l) - 1);
return $l[$r];
}
$myVideoDir = ".";
$dirList = scandir($myVideoDir);
$videoList = array()
foreach($dirList as $d){
if(is_dir($d)){
array_merge($videoList, getFileList($d, "mp4"));
}
}
echo "<video id='dep' class='center' width='400' autoplay controls>\r\n";
echo "\t<source src='$myVideoDir/" . pickRandVid($videoList) . "' type='video/mp4' />\r\n";
echo "</video>\r\n";
?>