我正在尝试构建一个应用程序,我必须将媒体文件(音频和视频)流式传输到浏览器。我正在通过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),媒体停止并且当我按下播放按钮时,每件事情都运行正常再次,它从一开始就开始。
我认为问题在于缓冲,但无法弄清楚。我在标题中做错了什么或需要其他东西。
感谢。
答案 0 :(得分:5)
我认为您需要实现Range标头,以便客户端可以跳转到文件中的特定位置。你可以找出玩家发送的sniffing the request出了什么问题。
答案 1 :(得分:4)
您想要的是“内容范围请求”
答案 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/