Autor Zpráva
Pavlínka
Profil
Ahoj,

mám větší video MP4 nahrávané webkamerou, které má ovšem zhruba 300MB...
chci aby odkaz na videa byl krátký a zároveň uživatelé neznali kořenovou složku videí (později do ní chci povolit přístup jen localhost)... proto jsem vytvořila .htaccess

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+).mp4 /video/index.php?url=$1
    AddType video/mp4 mp4

vše funguje jak má až na samotné php které odkazuje na MP4...


$file="../zaznam_11_5.mp4";
header('Content-type: video/mp4');
header('Content-disposition: inline');
header('Content-Transfer-Encoding: binary');
$size = filesize($file);
header('Content-Length: ' . $size);
readfile($file);


Problém nastává když chci přehrát video v <video> prohlížeči...
samotné video se nepřehraje dokud prohlížeč nestahne celé video (~300MB) ... s pomalejším internetem to může docela trvat
,
když do přehrávače vložím odkaz na mp4 na přímo přehrává videa jak má a spustí se aniž by se čekalo na stažení celého videa...

předpokládám, že mi chybí nějaká hlavička a i když se to řešilo i jinde jejich řešení nebylo funkční
Keeehi
Profil
Pavlínka:
Tak se koukni které hlavičky posílá server u videí která fungují a posílej ty samé. Pokud to nefunguje, budeš muset zkoumat, kde se to bufferuje.
Nevím, jak to má reafile, ale pokud použiješ klasický fopen a fread, tak máš kontrolu, jak velká data se načítají a odesílají
    flush();
    $filePointer = fopen($file, "r");
    while(!feof($filePointer))
    {
        print fread($filePointer, 1024 * 1024);
        flush();
    }
    fclose($file);
(nicméně zde asi problém nebude)

Pak je dobré zjistit jak hluboko jsi s output bufferem. Ale hlavně asi, jak vypadá struktura var_dump(ob_get_status(true));

Pak se budeš asi muset podívat na konfiguraci server. Což teda není žádná legrace. Našel jsem článek který po zběžném prolítnutí nevypadá špatně www.jeffgeerling.com/blog/2016/streaming-php-disabling-output-buffering-php-apache-nginx-and-varnish a teoreticky by ti mohl něco dát.

Pak je tu ještě jedna věc. Komprese výstupu. Ne všechny formáty komprese při přenosu dat se dají dekomprimovat za běhu a musí se čekat, až dojdou veškerá data. Než zjišťovat, jaká komprese je jakého typu, bude vhodné ji na serveru pro tento typ souborů vypnout. Stejně ty komprese jsou efektivní na text (html, css, js a podobně) ale u multimédií nekomprimují téměř nic. Pokud to nebude hlavičkami, tak bych osobně vsázel na toto.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0