2011-06-13 119 views
-2

我想让我的PHP视频处理程序文件提供视频,并在文件处理程序页面本身没有运气测试它。流视频php

奇怪的行为:只是弹出一个窗口询问我是否要下载文件,即使我删除了readfile()。如果我将video/x-flv更改为video/flv,则会在我的窗口中加载播放器,但文件不播放。另外,如果我一起拿走头,我的浏览器崩溃。

我觉得这个脚本应该至少把浏览器中的视频放在浏览器中,如果我用浏览器直接测试这个文件,它可以在浏览器中播放。查询后的文件路径是正确的......此外,该文件位于我的Web目录之外,但我认为这不重要,因为我可以使用类似的脚本成功地在目录之外提供图像。有人有主意吗?

$sql="SELECT file_name FROM video WHERE vid_id=?"; 
$stmt=$conn->prepare($sql); 
$result=$stmt->execute(array($ID)); 

while($row = $stmt->fetch(PDO::FETCH_ASSOC)){ 
$file_name = $row['file_name'].".flv"; 
} 

$path="/home/g/Desktop/processed/".$file_name.""; 


//check if image is readible and type 
if (is_readable($path)) { 
header('Content-Length: '.filesize($path)); // provide file size 
header("Expires: -1"); 
header('Content-Type: video/x-flv'); 

$content=readfile($path); 


} 
else { 
error_log("Can't serve video: $file_name"); 
} 

回答

1

流式传输不能像那样工作。
有你需要使用这样的球员一个适当的流:http://flowplayer.org/

如果你只是发送视频内容,浏览器会弹出保存对话框

+0

好吧,我有一个球员,这个文件是处理程序,我只是直接测试它,并认为弹出窗口是异常的。我想用src为video_handler.php?ID = $ vid_id的播放器来播放文件。由于某种原因,流不通过,这就是为什么我认为有什么错误。 – Scarface 2011-06-13 22:37:37

+1

@scarface它不能这样工作,你需要给玩家他的标准URL,以便Apache可以管理接受范围头。否则,你需要在你的脚本中解析请求标题,但是在那个时候,东西变得更难了。无论如何,如果这个答案帮助你想到+1。谢谢 – dynamic 2011-06-13 22:39:31

+0

解析请求头是什么意思?不要担心你的选票大声笑,我会upvote你写的一切,一旦我解决这个问题。如果它不工作,它如何适用于MP3播放器? – Scarface 2011-06-13 22:44:18

0

我无法使用PHP来传递视频到OS播放器。我切换到流动播放器和事情正在工作。