Hello and welcome to our community! Is this your first visit?
Register
Enjoy an ad free experience by logging in. Not a member yet? Register.
Results 1 to 3 of 3
  1. #1
    Regular Coder
    Join Date
    Oct 2003
    Posts
    603
    Thanks
    2
    Thanked 1 Time in 1 Post

    xmoov.php works but...

    i have a xmoov.php pseudo-flv-streaming script setup on a site and it works, but when you start loading a video, you cannot navigate the site anymore until the video is completely loaded.... why is that??

    PHP Code:
    <?php
    $require_login
    =1;
    include(
    "includes/config.php");
    //------------------------------------------------------------------------------------------
    // 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''./videos/');


    //------------------------------------------------------------------------------------------
    // BEHAVIOR
    //------------------------------------------------------------------------------------------
    //
    //set to TRUE to use bandwidth limiting.
    define('XMOOV_CONF_LIMIT_BANDWIDTH'FALSE);
    //
    //set to FALSE to prohibit caching of video files.
    define('XMOOV_CONF_ALLOW_FILE_CACHE'TRUE);


    //------------------------------------------------------------------------------------------
    // 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''start');
    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]))
    {
    // PROCESS VARIABLES
    // get seek position - JWMP doesn't send pos on the first request
    $seekPos = isset($_GET[XMOOV_GET_POSITION]) ? intval($_GET[XMOOV_GET_POSITION]) : 0;
    // 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) > && !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 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
    while (!feof($fh))
    {
    print(
    fread($fh16384));
    }
    }
    }
    }
    }


    //------------------------------------------------------------------------------------------
    // DYNAMIC BANDWIDTH CONTROL
    //------------------------------------------------------------------------------------------
    //
    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;
    }
    }

    ?>

  • #2
    Senior Coder angst's Avatar
    Join Date
    Apr 2004
    Location
    Toronto, Ontario
    Posts
    2,114
    Thanks
    15
    Thanked 122 Times in 122 Posts
    are you sure this isn't to due with too many server connections from your browser?

  • #3
    Regular Coder
    Join Date
    Oct 2003
    Posts
    603
    Thanks
    2
    Thanked 1 Time in 1 Post
    Quote Originally Posted by angst View Post
    are you sure this isn't to due with too many server connections from your browser?
    how would i be able to know that? theres no errors it just wont navigate


  •  

    Posting Permissions

    • You may not post new threads
    • You may not post replies
    • You may not post attachments
    • You may not edit your posts
    •