如何使用PHP流媒体文件?

时间:2010-09-24 07:55:43

标签: php file-io buffering

我正在尝试构建一个应用程序,我必须将媒体文件(音频和视频)流式传输到浏览器。我正在通过php读取文件并将数据发送到浏览器。我使用以下代码。

header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
header("Content-Type: {$file->getMimetype()}");
header("Content-Disposition: inline; filename=".$filename.";");
header("Content-Length: ".strlen($file_content));

echo $file_content;

除非我尝试转发视频或音频,(我的意思是假设当前播放位置为0:15并且直接转到1:25),媒体停止并且当我按下播放按钮时,每件事情都运行正常再次,它从一开始就开始。

我认为问题在于缓冲,但无法弄清楚。我在标题中做错了什么或需要其他东西。

感谢。

4 个答案:

答案 0 :(得分:5)

我认为您需要实现Range标头,以便客户端可以跳转到文件中的特定位置。你可以找出玩家发送的sniffing the request出了什么问题。

答案 1 :(得分:4)

您想要的是“内容范围请求”

在这里查看Resumable downloads when using PHP to send the file?

答案 2 :(得分:1)

我最近遇到过这个可能对您有所帮助:

http://www.jasny.net/articles/how-i-php-x-sendfile/

不是通过PHP(占用内存)传递整个文件,而是使用x-sendfile。这是一个Apache模块,它允许您运行PHP程序,但是一旦您的代码完成了它需要做的事情(身份验证等),就将控制权传递回Web服务器以处理实际的文件下载。

这意味着您的PHP代码不必担心文件的提供方式;让网络服务器完成它的设计目标。

希望有所帮助。

答案 3 :(得分:1)

这是一个很好的教程,你只需要PHP部分,但仍然: http://www.devshed.com/c/a/PHP/Video-Streaming-PHP-Script-Tutorial/3/