2

我正在尝试使用 JWPlayer 在我的网站上播放视频。但是我无法从 php 动态获取视频,因为我收到以下错误:

加载媒体时出错:无法播放文件

我目前的代码是:

<?php
   include('connection.php');//connect to db
   $id = $_GET['id'];//get video id from param
   $video = mysql_query("SELECT * FROM video_table WHERE id = '$id'");//video row from db
   $data = mysql_fetch_assoc($video);
   $ext = pathinfo($data['video_name'], PATHINFO_EXTENSION);
   $file_name = $id . "." . $ext;
   echo $file_name;
?>
   <div id="container1"></div>
       <script type="text/javascript">
            jwplayer('container1').setup({
                'id': 'container1',
                'type': '<?php echo $ext ?>',
                'wmode': 'transparent',
                'flashplayer': 'jwplayer/jwplayer.flash.swf',
                'file': 'video.php',
                'provider': 'video',
                'width': '480',
                'height': '320',
            });
        </script>
   </div>

视频.php

<?php
    include('connection.php');
    $id = $_GET['id'];
    $video = mysql_query("SELECT * FROM video_table WHERE id = '$id'");
    $data = mysql_fetch_assoc($video);
    $ext = pathinfo($data['video_name'], PATHINFO_EXTENSION);
    $type = pathinfo($data['type'], PATHINFO_EXTENSION);
    $file_name = $id . "." . $ext;//set the file name as saved in upload directory e.g: 1.mp4

    header("pragma : no-cache");
    header("Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0");
    header("Content-Description: File Transfer");
    header("Content-Type: $type");
    header("Content-Location: upload/$file_name");
    header("Content-Transfer-Encoding: binary");
    header("Content-Length: ".filesize("upload/$file_name"));
    readfile("upload/$file_name");
?>

但是,如果我在这里更改了绝对名称,(upload/1.mp4) instead of (upload/$file_name)它就可以工作并提供视频。如何从参数动态获取视频?

4

1 回答 1

1

改变:

'provider': 'video',

至:

'type': 'mp4',

如果您使用的是 FLV 而不是 MP4,请使其:

'type': 'flv',

还:

这里有几件事。您仍然将提供程序设置为视频,我会删除它。此外,您将文件作为 video.php 拉入,但没有设置 ID。现在你正在使用 - 'file': 'video.php',我会把它改成 video.php?id=1,我也会从 6.4 更新到 6.6。

于 2013-10-04T18:13:39.003 回答