2013-02-25 6 views
9

Come ottengo la durata di riproduzione di un file ogg senza scaricare l'intero file? So che questo è possibile perché sia ​​il tag HTML5 che VLC possono mostrare l'intera lunghezza del gioco subito dopo aver caricato l'URL, senza scaricare l'intero file.Ottenere la lunghezza di una traccia ogg da s3 senza scaricare l'intero file

C'è un'intestazione o qualcosa che posso leggere. Forse anche il bitrate, che posso dividere per la dimensione del file per ottenere una durata approssimativa del gioco?

+0

Come state pensando di leggere il file ogg? Inoltre, cosa farai con il file - semplicemente estraendo informazioni e visualizzazione? – Jesse

risposta

9

Purtroppo non sembra essere un modo per raggiungere questo obiettivo.

Mozilla è molto istruttivo. In sostanza:

  1. Gecko utilizza il X-Content-Duration intestazione - inviato dal server web se ha. Questo spiega l'esempio di streaming audio HTML5 che hai generato. Se mancante, quindi
  2. Gecko stima la lunghezza in base alla frequenza di campionamento (nell'intestazione) e la dimensione del file dall'intestazione Content-length HTTP

La frequenza di campionamento viene memorizzato nella intestazione di identificazione - il primo pacchetto di intestazione. Vedere the specification passare alla sezione "4.2 Decodifica decodifica e decodifica"

0

Questo non è possibile senza scaricare i dati stessi. È possibile specificare le informazioni correlate come parte dei metadati S3 della chiave correlata. Quindi, potrebbe scrivere per introspettare i metadati prima di scaricare effettivamente i dati.

+2

Deve essere possibile. Il tag '

1

Questo è possibile. Il modo per farlo è usare HTTP range requests per recuperare la fine del file, trovare l'ultima pagina Ogg ed estrarre il timestamp da esso. Ciò presuppone che il file sia costituito da flussi contigui (ovvero senza concatenamento) che hanno tutti la stessa lunghezza e che il tempo di streaming inizia da 0 (altrimenti, dovresti decodificare l'inizio del flusso e sottrarre quel timestamp dal timestamp finale) . La decodifica del timestamp dal campo del granulepos di Ogg Page è specifica per il codec (ad esempio per Vorbis è espressa come un numero di campioni).

In alternativa, se il file Ogg ha i metadati Ogg Skeleton, è possibile leggerlo direttamente per determinare la durata del file.

Problemi correlati