C'è un modo per dire la dimensione del file di un video di .ogg prima che sia completamente caricato?

StackOverflow https://stackoverflow.com/questions/5333800

Domanda

Lo so una differenza tra video ogg e video mp4 è che il video ogg non ha metadati che descrivono le dimensioni del file, in modo che quando viene caricato un video di ogg, i controlli non possono mostrare il tempo rimanente fino a quando il file è completamente caricato . Questo può essere un problema se il video ogg è più di pochi minuti di lunghezza. C'è un modo per ottenere questo spazio quando la pagina viene richiesta?

(sviluppatore sul lato client, fare una domanda che credo ha una risposta sul lato server. Accolgo con favore le modifiche suggerite per questa domanda, se si può pensare a un modo per chiedere più specificamente.)

È stato utile?

Soluzione

Bene, anche se non il più diretto, si potrebbe provare questo.

In primo luogo, impostare un .htaccess in modo trasparente afferrare tutti i video .ogv ed elaborarli con PHP

.htaccess

RewriteEngine On
RewriteRule ^(.*)\.ogv$ ogv.php?file=$1

ogv.php

<?php
$file = $_GET['file'] . '.ogv';

while ( strpos($file, '..') !== false )
{
    $file = str_replace('..', '', $file);
}

$filesize = filesize($file);

header("Content-Type: video/ogg");
header("Content-Transfer-Encoding: binary"); 
header("Content-Length: {$filesize}");
readfile($file);
exit()
?>

HTML:

<video src="video.ogv" id="video" controls></video>

<script>
var video_src = document.getElementById('video').src;
var xhr = new XMLHttpRequest();
xhr.open('GET', video_src, false);
xhr.send(null);
var size = xhr.getResponseHeader('Content-Length');
alert(size);
</script>

Quindi, ecco come funziona questo sistema. Basta collegare un video .ogv come normale, ma la cattura di file .htaccess la richiesta prima e la invia a ogv.php. Il file PHP quindi invia specificamente fuori un colpo di testa la dimensione del file nel caso in cui il server non lo fa automaticamente. Va bene, che ancora non fa un sacco di bene, giusto? Beh, si può poi fare una richiesta Ajax per il video ed estrarre la dimensione del file da HTTP headers.

Spero che questo aiuti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top