Domanda

Apple ha incluso HTTP Adaptive Bitrate streaming in iPhone OS 3.0, in particolare Safari gestisce automaticamente.

Mi piacerebbe giocare con questo in un modo a basso costo, ma mi aspetto che sarà richiede un server HTTP personalizzato nel peggiore dei casi, e interessante PHP / etc scripting nel migliore dei casi.

Ma prima ho bisogno di sapere quali siano le differenze di protocollo o di serie è. HTTP è ragionevolmente semplice come un protocollo, ma bitrate adattivo significa che la dimensione del file è diverso, le posizioni chunk sono diversi a diversi bitrate, ecc Per esempio, non il cliente dire al nulla server di speciale il flusso come è il download, o è tutto gestito sul lato server?

L'eliminazione delle pause di buffering per l'utente finale è molto interessante sia per il vivo e pre-registrati flussi video, e facendo sia su HTTP è ancora meglio dato molte reti e governi stanno limitando il traffico non porta 80.

  • Quali sono i dettagli tecnici per HTTP streaming adattivo bitrate, in particolare l'implementazione di Apple?
  • Dove si trova questo meglio attuato -? Parte del server HTTP stesso, parte di un mod, in uno script ...

  • Quali cambiamenti sono necessari per il lato client, se si dovesse implementare questo in un'applicazione?

È stato utile?

Soluzione

Aggiornamento

Sembra che Apple ha fatto un progetto di proposta IETF, e alcune persone stanno già lavorando su segmenters:

HTTP Live Streaming - progetti-Pantos-http-live-streaming-01
http://tools.ietf.org/id/draft -pantos-http-live-streaming-01.txt

iPhone HTTP Streaming con FFMpeg e un
Open Source segmenter http: // www.ioncannon.net/programming/452/iphone-http-streaming-with-ffmpeg-and-an-open-source-segmenter/


Sembra che il server HTTP semplicemente agisce come un server HTTP muto. Rovistando il sito esempio fornito da Akamai mi dà abbastanza informazioni per iniziare con lo streaming di contenuti statici.

http://iphone.akamai.com/

Il whitepaper ( http://www.akamai.com/dl/akamai/iphone_wp .pdf ) fornisce informazioni circa la codifica flusso di trasporto, in modo che i flussi ts sono semplici.

  

L'encoder (o un segmenter separata   processo) produrrà H.264 / AAC   contenuto in una sequenza di piccolo contenuto   segmenti, in formato MPEG-2 TS (Ts).   C'è anche un file indice M3U8 che   riferimenti i segmenti; nel caso   di contenuti dal vivo del M3U8 è   Aggiornamento continuo per rispecchiare la   contenuti più recenti.

     

codifica H.264 dovrebbe essere singolo passaggio   Baseline Profile, telaio riordino   Disabilitato. I fotogrammi chiave sono suggeriti   ogni 5 secondi, idealmente un ancora   divisore la lunghezza del segmento prescelto.

Il sito web fornisce un file M3U8, che è semplicemente un elenco di riproduzione M3U, ma nel formato di codifica caratteri UTF-8.

Il file collega poi a un file M3U8 per ciascun bitrate. I assumere tutti devono avere tagli alle stesse posizioni (ogni 2 o 10 secondi, per esempio) in modo che il passaggio può essere senza soluzione di continuità. Sembra essere completamente cliente guidato -. Il cliente decide come misurare la larghezza di banda e di quale versione si sta per ottenere

Il contenuto del file principale sono:

#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=860000
hi/prog_index.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=512000
med/prog_index.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=160000
lo/prog_index.m3u8

Poi ciascuno degli altri file sono:

hi / prog_index.m3u8

#EXTM3U
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:10, 
fileSequence0.ts
#EXTINF:10, 
fileSequence1.ts
#EXTINF:10, 
fileSequence2.ts
#EXTINF:10, 
fileSequence3.ts
#EXTINF:1,  
fileSequence4.ts
#EXT-X-ENDLIST

med / prog_index.m3u8

<video width="640" height="480">
   <source src="content1/content1.m3u8" />
</video>

lo / prog_index.m3u8

<*>

Questo funziona con il tag HTML 5 video:

<*>

Ci sono ancora un sacco di domande senza risposta, ma questo è probabilmente abbastanza per iniziare.

Altri suggerimenti

E un piccolo lettore in Python + GStreamer http://code.google.com/ p / HLS-player /

Vedere questo per un encoder open source e segmenter e alcune altre cose interessanti:)

http://www.ioncannon.net/programming/452/iphone-http-streaming-with-ffmpeg-and-an-open-source-segmenter/

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