Home » Php » How to stream a media file using PHP?

How to stream a media file using PHP?

Posted by: admin July 12, 2020 Leave a comment


I am trying to build an application in which i have to stream the media files (audio and video) to the browser. I am reading the file through php and send the data to browser. I am using the following code.

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;

Every thing is working fine, except when i try to forward the video or audio, (I mean suppose current play location is 0:15 and it directly go to 1:25), media stops and when i press the play button again, it starts from the beginning.

I think the problem is with the buffering, but can’t figure it out. Am i doing something wrong in header or something else is required.


How to&Answers:

I think you need to implement the Range header, so that the client can skip to a specific position in the file. You can probably find out what goes wrong by sniffing the request the player sends.


What you want is called “Content-Range requests”

Have a look here Resumable downloads when using PHP to send the file?


I came across this recently which may help you:


Rather than passing the whole file through PHP (which eats up memory), you can use x-sendfile. This is an Apache module which allows you to run a PHP program, but pass control back to the web server to handle the actual file download once your code has done what it needs to do (authentication, etc).

It means that your PHP code doesn’t have to worry about how the file is served; let the web server do what it’s designed for.

Hope that helps.


Here is a good tutorial for it, you only want the PHP section but still: