Re: streaming media via php

From: Date: Mon, 17 Dec 2001 17:48:09 +0000
Subject: Re: streaming media via php
References: 1  Groups: php.general 
Request: Send a blank email to php-general+get-77967@lists.php.net to get a copy of this message
Try re-writing your script to accept the url as such: http://server/content.php/media/file.asf Mike Stephen Vandyke wrote:
Hello PHP people :) I have a tough one here, I wrote a content script that plays media files, but I can't seem to get things to actually buffer and stream as they should. Here's the conundrum: http://server/media/file.asf - Media player will buffer and start playing before download completes http://server/content.php?f=media/file.asf - Media player has to download entire file before it starts trying to play Here's the source of content.php, anyone see anything obvious that I'm missing? I've been all over the HTTP/1.1 spec and media RFCs trying to figure out what the heck I'm missing. Windows Media Player interprets the media name as "content" if that's any help. Alse, the mime types are all correct so that's not the issue, I'm just trying to figure out how to make the players buffer+play instead of download+play. <?php $mime_type = strtolower(strrchr($f,'.')); $mime_type_array = array(
        '.asf'  => 'application/vnd.ms-asf',
        '.avi'  => 'video/x-msvideo',
        '.gif'  => 'image/gif',
        '.jpg'  => 'image/jpeg',
        '.mov'  => 'video/quicktime',
        '.mpe'  => 'video/mpeg',
        '.mpeg' => 'video/mpeg',
        '.mpg'  => 'video/mpeg',
        '.ra'   => 'audio/x-pn-realaudio',
        '.ram'  => 'audio/x-pn-realaudio',
        '.rm'   => 'audio/x-pn-realaudio',
        '.wmv'  => 'audio/x-ms-wmv'
        );
// this is our security, bleh if(!in_array($mime_type,array_keys($mime_type_array)))
        {
        header("Location: /error.php");
        }
$filename = '/path/to/'.$f; $dlname = substr(strrchr($filename,'/'),1); $offset = (isset($nocache)?0:(86400 * 3)); header("Accept-Ranges: bytes"); header("Expires: ".gmdate("D, d M Y H:i:s \G\M\T", time() + $offset)); header("Cache-Control: max-age=".$offset); header("Last-modified : ".gmdate("D, d M Y H:i:s \G\M\T", filemtime($filename))); header("Content-Length: ".filesize($filename)); header("Content-Disposition: filename=$dlname"); if($debugx==1)
        {
        phpinfo();
        }
else
        {
        header("Content-Type: ".$mime_type_array[$mime_type]);
        @readfile($filename);
        }
?> Thanks in advance for any help, Please cc me on any replies since I am not on this mailing list. Stephen VanDyke


« previous php.general (#77967) next »