通过PHP访问不同文件夹中的视频

时间:2014-01-24 15:35:52

标签: php video

我是PHP的新手,但我理解基础知识。我的问题是我有一个索引页面,需要有一个存储在不同文件夹中的视频名称列表。由于在网站上线时文件夹中将有超过100个视频,我希望视频名称可以点击,点击时视频会播放。

<?php
$videopath = 'videos';
$videoExts = array('webm'=> 'video/webm','mp4'=>'video/mp4','mpeg'=>'video/mp4','ogv'=>'video/ogv');
$directory = "/videos";
$phpfiles = glob($directory . "*.html");

if ($handle = opendir($videopath)) {
    while (false !== ($file = readdir($handle))) {
        $info =pathinfo($file);
        $ext = strtolower($info['extension']);
        echo $file . " \n " . "\n <br> \n";

        if (array_key_exists($ext, $videoExts)) {      
?>
   <div class="flowplayer" data-swf="flowplayer.swf" data-ratio="0.4167">
      <video>
         <source type="<?php echo $videoExts[$ext]; ?>" src="<?php echo "$videopath/$file"; ?>">
      </video>
   </div>

<?php
        }
    }
    closedir($handle);
} else {
    echo "no dir";
}

?>

此代码将列出视频名称(以文字显示),并播放每个视频。我该怎么做才能修改这个,以便视频名称变得可点击,一旦点击就打开相应的视频?

2 个答案:

答案 0 :(得分:0)

替换:

   <div class="flowplayer" data-swf="flowplayer.swf" data-ratio="0.4167">
      <video>
         <source type="<?php echo $videoExts[$ext]; ?>" src="<?php echo "$videopath/$file"; ?>">
      </video>
   </div>

人:

<a href="page2.php?type=<?php echo $videoExts[$ext]; ?>&src=<?php echo "$videopath/$file"; ?>" target="_blank"><?php echo $file; ?></a>

并在page2.php

<?php 
$type = $_GET['type'];
$src = $_GET['src'];
if (file_exists($src)) { ?>
            <div class="flowplayer" data-swf="flowplayer.swf" data-ratio="0.4167">
                  <video>
                     <source type="<?php echo $type; ?>" src="<?php echo $src; ?>">
                  </video>
               </div>
        <?php } ?>

答案 1 :(得分:0)

我会做以下(它涉及一些jQuery)。我们的想法是拥有一个视频列表和一个视频播放器。点击其中一个后,视频播放器将会更新。

步骤:

  1. 列出视频链接,使用HTML5数据属性存储每个视频的来源和扩展信息。因此,点击后,将使用新设置更新唯一的视频播放器。

    $videopath = 'videos';
    $videoExts = array('webm'=> 'video/webm','mp4'=>'video/mp4','mpeg'=>'video/mp4','ogv'=>'video/ogv');
    $directory = "/videos";
    $phpfiles = glob($directory . "*.html");
    
    // Stores first video of the list
    $first_video = array();
    
    if ($handle = opendir($videopath)) {
    
        $counter = 0;
    
        while (false !== ($file = readdir($handle))) {
            $info =pathinfo($file);
            $ext = strtolower($info['extension']);
            echo $file . " \n " . "\n <br> \n";
    
            if (array_key_exists($ext, $videoExts)) {      
              if ($counter == 1) {
    
                // Save settings of first video
                $first_vid['extension'] = $videoExts[$ext];
                $first_vid['path'] = $videopath .'/'. $file;
    
                // Save it in array
                $first_video[] = $first_vid;
              }
    ?>
    
        <a class="video-item" href="#" data-type="<?php echo $videoExts[$ext]; ?>" data-src="<?php echo "$videopath/$file"; ?>"><?php echo "$videopath/$file"; ?></a><br/>
    
    <?php
            }
        }
        closedir($handle);
    } else {
        echo "no dir";
    }
    
    ?>
    
    <div class="flowplayer" data-swf="flowplayer.swf" data-ratio="0.4167">
      <video>
         <source type="<?php echo $first_video[0]['extension']; ?>" src="<?php echo $first_video[0]['path']; ?>">
      </video>
    </div>
    
    
    <script>
    // Don't forget to add jQuery in your project for this to work :)        
    
    $(function () {
      $('.video-item').click(function (e) {
        // do nothing
        e.preventDefault();
    
        // get info of video being clicked
        var extension = $(this).attr("data-type");
        var src = $(this).attr("data-src");
    
        // update video player with clicked video
        $('.flowplayer video').attr('type', extension);
        $('.flowplayer video').attr('src', src);
      });
    });
    
    
    </script>
    
  2. 这是一个未经测试的代码。希望它有所帮助。