Avatar billede Slettet bruger
23. juli 2009 - 16:46 Der er 22 kommentarer

FLV streaming via. PHP (Header og læsning prob)

Hej eksperter.

Jeg har prøvet sindsyge mange ting, og er virkelig kørt død i dette.

Jeg bruger en fil som jeg kalder med en get parameter som indeholder selve flv filens navn.
Ud fra den skal dette script "kende" stien til hvor filen lægger, og så return'e $directory.$file, men aner ikke hvilke header og hvad metode jeg skal bruge for at få den til at "sende" den korrekt, så jeg kan afspille den.

Jeg bruger:

<object width="550" height="400">
<param name="movie" value="http://www.mit_site.dk/flashplayerv.swf">
<embed src="http://www.mit_site.dk/flashplayerv.swf?flv=ninja.flv" width="550" height="400">
</embed>
</object>

Nogen der kan hjælpe mig: her er min kode (er meget rodet da jeg har prøvet en del ting, og ikke ved hvad jeg skal bruge)?


  public function handleFileRequest() {
        $directory = 'FLVfolder/';
/*        $content = '';
        header("Accept-Ranges: bytes");
        header('Content-Length: ' . filesize($directory.$file));
        header("Content-Type: video/x-flv;");
        header("Content-Type: text/plain; charset=UTF-8");
        header("Content-Disposition: attachment; filename=\"" . $file . "\"");
        header("Content-Transfer-Encoding: binary");
        echo file_get_contents($directory.$file);
        $fh = fopen($directory.$file,'rb');
        fseek($fh, 0);
        while (!feof($fh)){
            echo (fread($fh, filesize($directory.$file)));
        }
        fclose($fh);
        exit();*/
       
       
       
/*$path = $directory;
$seekat = $_GET["position"];
$filename = htmlspecialchars($file);
$ext=strrchr($filename, ".");
$file = $path . $filename;


if((file_exists($file)) && ($ext==".flv") && (strlen($filename)>2) && (!eregi(basename($_SERVER['PHP_SELF']), $filename)) && (ereg('^[^./][^/]*$', $filename)))
{
        header("Content-Type: video/x-flv");
        if($seekat != 0) {
                print("FLV");
                print(pack('C', 1 ));
                print(pack('C', 1 ));
                print(pack('N', 9 ));
                print(pack('N', 9 ));
        }
        $fh = fopen($file, "rb");
        fseek($fh, $seekat);
        while (!feof($fh)) {
          print (fread($fh, filesize($file)));
        }
        fclose($fh);
}
    else
{
        print("ERORR: The file does not exist");
}        */
       
       

/*        if(file_exists($directory.$file)) {*/
/*            session_cache_limiter("nocache");
            header("Expires: Thu, 19 Nov 1981 08:52:00 GMT");
            header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
            header("Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0");
            header("Pragma: no-cache");
            header("Content-Type: video/x-flv");
            header("Content-Disposition: attachment; filename=\"" . $file . "\"");
            header('Content-Length: ' . filesize($directory.$file));                        /*        send new file size to flv player    */
                /*$fh = fopen($directory.$file,'rb');
                fseek($fh, 0);
                while (!feof($fh)){
                    $content .= (fread($fh, filesize($directory.$file)));
                }
                fclose($fh);
                exit($content);*/
/*            } else {
                print 'Error, file do not exsists.';
            }*/
/*        header('Content-type: application/x-shockwave-flash');
        header("Content-Disposition: attachment; filename=\"" . $directory.$file . "\"");
        header('Content-Length: ' . filesize($directory.$file));
        $fh = fopen($directory.$file,'rb');
        fseek($fh, 0);
        while (!feof($fh)){
            print(fread($fh, 16384));
        }
        fclose($fh);*/
    }
Avatar billede Slettet bruger
23. juli 2009 - 21:36 #1
Slet ikke nogen der har været ude for dette problem før?
Avatar billede Slettet bruger
23. juli 2009 - 21:46 #2
Har bådet prøvet med:
header("Content-Type: video/x-flv;");
&
header("Content-Type: text/plain;");


Og:
  $fh = fopen($file, "rb");
        fseek($fh, $seekat);
        while (!feof($fh)) {
          print (fread($fh, filesize($file)));
        }
        fclose($fh);
&
        echo file_get_contents($directory.$file);
Avatar billede repox Seniormester
23. juli 2009 - 22:50 #3
Jeg kunne godt tænke mig at vide om du med sikkerhed ved det er headeren der er problemet?

Jf. http://en.wikipedia.org/wiki/Flash_Video så ser det ud til at du har fat i det rigtige med video/x-flv, så det er jo ikke sikkert din kode virker overordnet set...
Avatar billede Slettet bruger
23. juli 2009 - 23:30 #4
Nej jeg er ikke sikker men da jeg Google' fik jeg bare 2- eksempler der brugte fread... men kan ikke selv få det til at virke.
Avatar billede repox Seniormester
23. juli 2009 - 23:42 #5
Så vil jeg godt pege dig i en anden retning:
http://xmoov.com/xmoov-php/source/
Avatar billede Slettet bruger
24. juli 2009 - 10:22 #6
Kan ikke få det til at virke, selv om jeg har rettet det til.
Synes der mangler nogen eksempler fra deres side af.
Avatar billede repox Seniormester
24. juli 2009 - 10:28 #7
Det er vel ikke meningen at vi skal sidde og gætte på hvad du har gjort og hvordan du har forsøgt at implementere det?
Avatar billede Slettet bruger
24. juli 2009 - 10:55 #8
Nej det har du helt ret i.


<?PHP
class AjaxRequesthandler{
    public function handleFileRequest() {
    //    SCRIPT CONFIGURATION
   
    //------------------------------------------------------------------------------------------
    //    MEDIA PATH
    //
    //    you can configure these settings to point to video files outside the public html folder.
    //------------------------------------------------------------------------------------------
   
    // points to server root
    define('XMOOV_PATH_ROOT', '');
   
    // points to the folder containing the video files.
    define('XMOOV_PATH_FILES', 'uploads/');
   
   
   
    //------------------------------------------------------------------------------------------
    //    SCRIPT BEHAVIOR
    //------------------------------------------------------------------------------------------
   
    //set to TRUE to use bandwidth limiting.
    define('XMOOV_CONF_LIMIT_BANDWIDTH', TRUE);
   
    //set to FALSE to prohibit caching of video files.
    define('XMOOV_CONF_ALLOW_FILE_CACHE', FALSE);
   
   
   
    //------------------------------------------------------------------------------------------
    //    BANDWIDTH SETTINGS
    //
    //    these settings are only needed when using bandwidth limiting.
    //   
    //    bandwidth is limited my sending a limited amount of video data(XMOOV_BW_PACKET_SIZE),
    //    in specified time intervals(XMOOV_BW_PACKET_INTERVAL).
    //    avoid time intervals over 1.5 seconds for best results.
    //   
    //    you can also control bandwidth limiting via http command using your video player.
    //    the function getBandwidthLimit($part) holds three preconfigured presets(low, mid, high),
    //    which can be changed to meet your needs
    //------------------------------------------------------------------------------------------   
   
    //set how many kilobytes will be sent per time interval
    define('XMOOV_BW_PACKET_SIZE', 90);
   
    //set the time interval in which data packets will be sent in seconds.
    define('XMOOV_BW_PACKET_INTERVAL', 0.3);
   
    //set to TRUE to control bandwidth externally via http.
    define('XMOOV_CONF_ALLOW_DYNAMIC_BANDWIDTH', TRUE);
   
   
   
    //------------------------------------------------------------------------------------------
    //    DYNAMIC BANDWIDTH CONTROL
    //------------------------------------------------------------------------------------------
   
    function getBandwidthLimit($part)
    {
        switch($part)
        {
            case 'interval' :
                switch($_GET[XMOOV_GET_BANDWIDTH])
                {
                    case 'low' :
                        return 0.5;
                    break;
                    case 'mid' :
                        return 0.5;
                    break;
                    case 'high' :
                        return 0.2;
                    break;
                    case 'off' :
                        return 0;
                    break;
                    default :
                        return XMOOV_BW_PACKET_INTERVAL;
                    break;
                }
            break;
            case 'size' :
                switch($_GET[XMOOV_GET_BANDWIDTH])
                {
                    case 'low' :
                        return 20;
                    break;
                    case 'mid' :
                        return 40;
                    break;
                    case 'high' :
                        return 90;
                    break;
                    default :
                        return XMOOV_BW_PACKET_SIZE;
                    break;
                }
            break;
        }
    }
   
   
   
    //------------------------------------------------------------------------------------------
    //    INCOMING GET VARIABLES CONFIGURATION
    //   
    //    use these settings to configure how video files, seek position and bandwidth settings are accessed by your player
    //------------------------------------------------------------------------------------------
   
    define('XMOOV_GET_FILE', $_GET['file']);
    define('XMOOV_GET_POSITION', intval($_GET['position']));
    define('XMOOV_GET_AUTHENTICATION', 'key');
    define('XMOOV_GET_BANDWIDTH', 'bw');
   
   
    //    END SCRIPT CONFIGURATION - do not change anything beyond this point if you do not know what you are doing
   
   
   
    //------------------------------------------------------------------------------------------
    //    PROCESS FILE REQUEST
    //------------------------------------------------------------------------------------------
    if(isset($_GET[XMOOV_GET_FILE]) && isset($_GET[XMOOV_GET_POSITION]))
    {
        //    PROCESS VARIABLES
        # get seek position
        $seekPos = intval($_GET[XMOOV_GET_POSITION]);
        # get file name
        $fileName = htmlspecialchars($_GET[XMOOV_GET_FILE]);
        # assemble file path
        $file = XMOOV_PATH_ROOT . XMOOV_PATH_FILES . $fileName;
       
        # assemble packet interval
        $packet_interval = (XMOOV_CONF_ALLOW_DYNAMIC_BANDWIDTH && isset($_GET[XMOOV_GET_BANDWIDTH])) ? getBandwidthLimit('interval') : XMOOV_BW_PACKET_INTERVAL;
        # assemble packet size
        $packet_size = ((XMOOV_CONF_ALLOW_DYNAMIC_BANDWIDTH && isset($_GET[XMOOV_GET_BANDWIDTH])) ? getBandwidthLimit('size') : XMOOV_BW_PACKET_SIZE) * 1042;
       
        # security improved by by TRUI www.trui.net
        if (!file_exists($file))
        {
            print('<b>ERROR:</b> xmoov-php could not find (' . $fileName . ') please check your settings.');
            exit();
        }
        if(file_exists($file) && strrchr($fileName, '.') == '.flv' && strlen($fileName) > 2 && !eregi(basename($_SERVER['PHP_SELF']), $fileName) && ereg('^[^./][^/]*$', $fileName))
        {
            $fh = fopen($file, 'rb') or die ('<b>ERROR:</b> xmoov-php could not open (' . $fileName . ')');
               
            $fileSize = filesize($file) - (($seekPos > 0) ? $seekPos  + 1 : 0);
           
            //    SEND HEADERS
            if(!XMOOV_CONF_ALLOW_FILE_CACHE)
            {
                # prohibit caching (different methods for different clients)
                session_cache_limiter("nocache");
                header("Expires: Thu, 19 Nov 1981 08:52:00 GMT");
                header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
                header("Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0");
                header("Pragma: no-cache");
            }
           
            # content headers
            header("Content-Type: video/x-flv");
            header("Content-Disposition: attachment; filename=\"" . $fileName . "\"");
            header("Content-Length: " . $fileSize);
           
            # FLV file format header
            if($seekPos != 0)
            {
                print('FLV');
                print(pack('C', 1));
                print(pack('C', 1));
                print(pack('N', 9));
                print(pack('N', 9));
            }
           
            # seek to requested file position
            fseek($fh, $seekPos);
           
            # output file
            while(!feof($fh))
            {
                # use bandwidth limiting - by Terry
                if(XMOOV_CONF_LIMIT_BANDWIDTH && $packet_interval > 0)
                {
                    # get start time
                    list($usec, $sec) = explode(' ', microtime());
                    $time_start = ((float)$usec + (float)$sec);
                    # output packet
                    print(fread($fh, $packet_size));
                    # get end time
                    list($usec, $sec) = explode(' ', microtime());
                    $time_stop = ((float)$usec + (float)$sec);
                    # wait if output is slower than $packet_interval
                    $time_difference = $time_stop - $time_start;
                    if($time_difference < (float)$packet_interval)
                    {
                        usleep((float)$packet_interval * 1000000 - (float)$time_difference * 1000000);
                    }
                }
                else
                {
                    # output file without bandwidth limiting
                    print(fread($fh, filesize($file)));
                }
            }
           
        }
       
    }
    }
}
/**
* Make a new instance of AjaxRequesthandler class
*
* @var AjaxRequesthandler
* @var handleRequest
* @var sendReply
*/
$rh = new AjaxRequesthandler();
$rh->handleFileRequest();
?>
Avatar billede Slettet bruger
24. juli 2009 - 11:00 #9
Synes bare mere der mangler noget forklaring, omkring deres script.

//Prøvede at lave 2 echo's før denne:
echo XMOOV_GET_FILE; // Hvilke gav mig den ønskede flv
echo XMOOV_GET_POSITION; // Hvilke gav mig 1 (som jeg til at starte med bare smed med i GET parameteret)
  if(isset($_GET[XMOOV_GET_FILE]) && isset($_GET[XMOOV_GET_POSITION])) {
// Her prøvede jeg at lave en ny echo, men virkede til den aldrig kom her til selvom der var noget i begge felter.
Avatar billede repox Seniormester
24. juli 2009 - 11:06 #10
Du har jo også lavet uhensigtsmæssige rettelser i scriptet?

Hvorfor har du rettet de indgående variabel indstillinger? Særligt i den form du har gjort det i? Det giver ihvertfald mening for mig at det ikke virker efter hensigten.

Har du overhovedet kontrolleret at du kunne få scriptet til at gøre hvad du gerne ville inden du rettede det til?
Avatar billede Slettet bruger
24. juli 2009 - 11:44 #11
Uha nu er jeg helt lost, kan du evt. give mig et bud på hvad det er jeg har ændret?

Nej har ikke testet det før jeg rettet i det, da jeg skulle rette i det for at få det til at virke i forhold til min sti til uploads/ og filens navn.

Jeg har ændret directory stien til hvor filerne lægger som den skal hente.
Så har jeg ændret så den modtager filen, via. $_GET[] parameteret, hvor de havde hardcoded det. (?)
Avatar billede Slettet bruger
24. juli 2009 - 12:51 #12
Dem skal jeg jo rette, korrekt?
Avatar billede repox Seniormester
24. juli 2009 - 13:12 #13
Hovedregel nummer 1 når du bruger færdige scripts; kontroller om skidtet virker, ellers smider du timer væk på at rette noget til som alligevel ikke virker.

Du signalerer at du ikke ved hvad du laver lige nu.

Men lad os da bare gå direkte til fadet:

Dine indgående variabler bliver defineret således:
    define('XMOOV_GET_FILE', 'file');
    define('XMOOV_GET_POSITION', 'position');
    define('XMOOV_GET_AUTHENTICATION', 'key');
    define('XMOOV_GET_BANDWIDTH', 'bw');

Og dine indgående variabler tilgås således:
    $file = $_GET[XMOOV_GET_FILE]; // $_GET["file"];
    $position = $_GET[XMOOV_GET_POSITION]; // $_GET["position"];
    $authentication = $_GET[XMOOV_GET_AUTHENTICATION]; // $_GET["key"];
    $bandwith = $_GET[XMOOV_GET_BANDWITH];// $_GET["bw"];

Så synes jeg lige du skal bruge 10 sekunder på at overveje hvilke konsekvenser dine ændringer har gjort...

Ikke opdaget dem endnu?
Så tager vi det da bare...

Dine definitioner af de indgående variabler er:
    define('XMOOV_GET_FILE', $_GET['file']);
    define('XMOOV_GET_POSITION', intval($_GET['position']));
    define('XMOOV_GET_AUTHENTICATION', 'key');
    define('XMOOV_GET_BANDWIDTH', 'bw');

Når jeg så vil foretage HTTP kaldet:
xmoov.php?file=minflv.flv&position=0

Sker der faktisk det at du dynamisk tildeler dine definerede konstanter med navnene. Så når du vil bruge variablerne vil de ovenstående tilfælde altså blive:   
    $file = $_GET[XMOOV_GET_FILE]; // $_GET["minflv.flv"];
    $position = $_GET[XMOOV_GET_POSITION]; // $_GET["0"];
    $authentication = $_GET[XMOOV_GET_AUTHENTICATION]; // $_GET["key"];
    $bandwith = $_GET[XMOOV_GET_BANDWITH];// $_GET["bw"];   

Og da $_GET["minflv.flv"] ikke er defineret så er den jo tom og dermed er $file også tom. Det samme gælder for position.
Avatar billede Slettet bruger
24. juli 2009 - 13:37 #14
Ja okay - ja jeg kender ikke så meget til define kan jeg så godt se, jeg prøver lige igen!
Takker
Avatar billede Slettet bruger
24. juli 2009 - 14:56 #15
Okay nu har jeg så fået sat det ordenligt op, hvis jeg går ind på den fulde sti til scriptet xmoov.php, så "sender den mig" en .flv fil til download.

Men kan ikke afspille den. Den står i sindsyg lang tid og loader for sølle 33 sekunder flash.
(Uden der kommer noget content)
Avatar billede Slettet bruger
24. juli 2009 - 14:57 #16
Hvis jeg så henter .flv filen via. xmoov.php, så kan jeg heller ikke afspille den.

<?PHP
    //    SCRIPT CONFIGURATION
   
    //------------------------------------------------------------------------------------------
    //    MEDIA PATH
    //
    //    you can configure these settings to point to video files outside the public html folder.
    //------------------------------------------------------------------------------------------
   
    // points to server root
    define('XMOOV_PATH_ROOT', '');
   
    // points to the folder containing the video files.
    define('XMOOV_PATH_FILES', 'uploads/');
   
   
   
    //------------------------------------------------------------------------------------------
    //    SCRIPT BEHAVIOR
    //------------------------------------------------------------------------------------------
   
    //set to TRUE to use bandwidth limiting.
    define('XMOOV_CONF_LIMIT_BANDWIDTH', TRUE);
   
    //set to FALSE to prohibit caching of video files.
    define('XMOOV_CONF_ALLOW_FILE_CACHE', FALSE);
   
   
   
    //------------------------------------------------------------------------------------------
    //    BANDWIDTH SETTINGS
    //
    //    these settings are only needed when using bandwidth limiting.
    //   
    //    bandwidth is limited my sending a limited amount of video data(XMOOV_BW_PACKET_SIZE),
    //    in specified time intervals(XMOOV_BW_PACKET_INTERVAL).
    //    avoid time intervals over 1.5 seconds for best results.
    //   
    //    you can also control bandwidth limiting via http command using your video player.
    //    the function getBandwidthLimit($part) holds three preconfigured presets(low, mid, high),
    //    which can be changed to meet your needs
    //------------------------------------------------------------------------------------------   
   
    //set how many kilobytes will be sent per time interval
    define('XMOOV_BW_PACKET_SIZE', 90);
   
    //set the time interval in which data packets will be sent in seconds.
    define('XMOOV_BW_PACKET_INTERVAL', 0.3);
   
    //set to TRUE to control bandwidth externally via http.
    define('XMOOV_CONF_ALLOW_DYNAMIC_BANDWIDTH', TRUE);
   
   
    //------------------------------------------------------------------------------------------
    //    INCOMING GET VARIABLES CONFIGURATION
    //   
    //    use these settings to configure how video files, seek position and bandwidth settings are accessed by your player
    //------------------------------------------------------------------------------------------
   
    define('XMOOV_GET_FILE', 'file');
    define('XMOOV_GET_POSITION', 'position');
    define('XMOOV_GET_AUTHENTICATION', 'key');
    define('XMOOV_GET_BANDWIDTH', 'bw');
   
    class xmoov {
   
   
   
    //------------------------------------------------------------------------------------------
    //    DYNAMIC BANDWIDTH CONTROL
    //------------------------------------------------------------------------------------------
   
    protected function getBandwidthLimit($part) {
        switch($part)
        {
            case 'interval' :
                switch($_GET[XMOOV_GET_BANDWIDTH])
                {
                    case 'low' :
                        return 1;
                    break;
                    case 'mid' :
                        return 0.5;
                    break;
                    case 'high' :
                        return 0.3;
                    break;
                    default :
                        return XMOOV_BW_PACKET_INTERVAL;
                    break;
                }
            break;
           
            case 'size' :
                switch($_GET[XMOOV_GET_BANDWIDTH])
                {
                    case 'low' :
                        return 10;
                    break;
                    case 'mid' :
                        return 40;
                    break;
                    case 'high' :
                        return 90;
                    break;
                    default :
                        return XMOOV_BW_PACKET_SIZE;
                    break;
                }
            break;
        }
    }
   
   
   
   
   
   
    //    END SCRIPT CONFIGURATION - do not change anything beyond this point if you do not know what you are doing
   
   
   
    //------------------------------------------------------------------------------------------
    //    PROCESS FILE REQUEST
    //------------------------------------------------------------------------------------------
    public function processFile() {
        if(isset($_GET[XMOOV_GET_FILE]) && isset($_GET[XMOOV_GET_POSITION])) {
            //    PROCESS VARIABLES
           
            # get seek position
            $seekPos = intval($_GET[XMOOV_GET_POSITION]);
            # get file name
            $fileName = htmlspecialchars($_GET[XMOOV_GET_FILE]);
            # assemble file path
            $file = XMOOV_PATH_ROOT . XMOOV_PATH_FILES . $fileName;
           
            # assemble packet interval
            $packet_interval = (XMOOV_CONF_ALLOW_DYNAMIC_BANDWIDTH && isset($_GET[XMOOV_GET_BANDWIDTH])) ? $this->getBandwidthLimit('interval') : XMOOV_BW_PACKET_INTERVAL;
            # assemble packet size
            $packet_size = ((XMOOV_CONF_ALLOW_DYNAMIC_BANDWIDTH && isset($_GET[XMOOV_GET_BANDWIDTH])) ? $this->getBandwidthLimit('size') : XMOOV_BW_PACKET_SIZE) * 1042;
           
            # security improved by by TRUI www.trui.net
            if (!file_exists($file))
            {
                print('<b>ERROR:</b> xmoov-php could not find (' . $fileName . ') please check your settings.');
                exit();
            }
           
            if(file_exists($file) && strrchr($fileName, '.') == '.flv' && strlen($fileName) > 2 && !eregi(basename($_SERVER['PHP_SELF']), $fileName) && ereg('^[^./][^/]*$', $fileName))
            {
                $fh = fopen($file, 'rb') or die ('<b>ERROR:</b> xmoov-php could not open (' . $fileName . ')');
                $fileSize = filesize($file) - (($seekPos > 0) ? $seekPos  + 1 : 0);
               
                //    SEND HEADERS
                if(!XMOOV_CONF_ALLOW_FILE_CACHE)
                {
                    # prohibit caching (different methods for different clients)
                    session_cache_limiter("nocache");
                    header("Expires: Thu, 19 Nov 1981 08:52:00 GMT");
                    header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
                    header("Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0");
                    header("Pragma: no-cache");
                }
               
                # content headers
                header("Content-Type: video/x-flv");
                header("Content-Disposition: attachment; filename=\"" . $fileName . "\"");
                header("Content-Length: " . $fileSize);
                # FLV file format header
                if($seekPos != 0)
                {
                    print('FLV');
                    print(pack('C', 1));
                    print(pack('C', 1));
                    print(pack('N', 9));
                    print(pack('N', 9));
                }
               
                # seek to requested file position
                fseek($fh, $seekPos);
               
                # output file
                while(!feof($fh))
                {
                    # use bandwidth limiting - by Terry
                    if(XMOOV_CONF_LIMIT_BANDWIDTH)
                    {
                        # get start time
                        list($usec, $sec) = explode(' ', microtime());
                        $time_start = ((float)$usec + (float)$sec);
                        # output packet
                        print(fread($fh, $packet_size));
                        # get end time
                        list($usec, $sec) = explode(' ', microtime());
                        $time_stop = ((float)$usec + (float)$sec);
                        # wait if output is slower than $packet_interval
                        $time_difference = $time_stop - $time_start;
                        if($time_difference < (float)$packet_interval)
                        {
                            usleep((float)$packet_interval * 1000000 - (float)$time_difference * 1000000);
                        }
                    }
                    else
                    {
                        # output file without bandwidth limiting
                        print(fread($fh, filesize($file)));
                    }
                }
               
            }
        } // end function
       
    }
}
?>
Avatar billede Slettet bruger
24. juli 2009 - 15:22 #17
Har også prøvet at hente den og så teste med en flv player, og det virker heller ikke.
Jeg har så prøvet den orginale, og den virker fint i flv playeren også.
Avatar billede Slettet bruger
25. juli 2009 - 12:47 #18
Ikke flere bud?
Avatar billede Slettet bruger
26. juli 2009 - 11:45 #19
Det er virkelig underligt, at det kan være så besværligt med header for flv filer.
Avatar billede repox Seniormester
26. juli 2009 - 12:56 #20
Det er som sådan ikke headeren der ikke fungerer.
Prøv at se dette minimale setup:
<?php

    header("Content-Type: video/x-flv");
    echo file_get_contents("video/Forside_planet.flv");
    exit;
?>

Ovenstående virker fint for mig. Og det er også den fremgangsmetode jeg benytter mig af.
Avatar billede Slettet bruger
26. juli 2009 - 14:02 #21
Har jeg ellers prøvet, men må lige prøve igen.
Avatar billede Slettet bruger
18. november 2009 - 20:02 #22
Fandt aldrig ud af det.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester