псевдопотоковая передача

Я сейчас тестирую скрипт псевдостриминга для чтения файлов mp4, при чтении все работает нормально, но я не могу переместить временную шкалу? проблема? моя кодировка (метаданные mp4) правильная, потому что при чтении без этого кода в плеере я могу перемещаться по временной шкале. Я использую fplayer для чтения mp4.

    // ----- NO CACHE -----
session_cache_limiter('nocache');

// General header for no caching
$now = gmdate('D, d M Y H:i:s') . ' GMT';
header('Expires: ' . $now); // rfc2616 - Section 14.21
header('Last-Modified: ' . $now);
header('Cache-Control: no-store, no-cache, must-revalidate, pre-check=0, post-check=0, max-age=0'); // HTTP/1.1
header('Pragma: no-cache'); // HTTP/1.0

// ----- Seek position -----
$seekat = 0;
if (isset($_GET["pos"])) {
    $position = $_GET["pos"];
    if (is_numeric ($position)) {
        $seekat = $position;
    }
    if ($seekat < 0) $seekat = 0;
}

$filename = 'test.mp4'; 
$ext = strrchr($filename, ".");
$prefix = "";
$file = $prefix . $filename;
if (($filename != "") && (file_exists($file)) && ($ext==".mp4")) {
    header("Content-Type: video/x-mp4");
    if ($seekat > 0) header('Content-Length: ' . (filesize($file)-$seekat));
    else header('Content-Length: ' . filesize($file));

    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, 16384));
        // print (fread($fh, filesize($file)));
    }
    fclose($fh);
}

Можете ли вы помочь мне спасибо.


person pjfnew    schedule 06.11.2012    source источник


Ответы (1)


header("Content-Type: video/x-mp4");

в настоящее время я использую тот же код, но даже когда я транслирую mp4, я разрешаю содержимое заголовка, как для flv

Content-Type: video/x-flv

надеюсь, это поможет

person user2581911    schedule 15.07.2013