首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用PHP流式传输媒体文件?

如何使用PHP流式传输媒体文件?
EN

Stack Overflow用户
提问于 2010-09-24 15:55:43
回答 4查看 26.5K关注 0票数 7

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

代码语言:javascript
运行
复制
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),媒体停止,当我再次按下播放按钮时,它从头开始。

我认为问题出在缓冲上,但找不到答案。我是不是在标题中做错了什么,或者其他什么是必需的。

谢谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-09-24 16:09:38

我认为您需要实现Range标头,以便客户端可以跳到文件中的特定位置。通过播放器发送的sniffing the request,你可能会发现哪里出了问题。

票数 5
EN

Stack Overflow用户

发布于 2010-09-24 16:23:26

您需要的内容称为“内容范围请求”。

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

票数 4
EN

Stack Overflow用户

发布于 2010-09-24 16:15:06

我最近发现了这个,它可能会对你有所帮助:

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

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

这意味着您的PHP代码不必担心文件是如何提供的;让web服务器做它所设计的事情。

希望这能有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3785188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档