Corso di Applicazioni Telematiche - UniNa STiDuEunina.stidue.net/Applicazioni...
Transcript of Corso di Applicazioni Telematiche - UniNa STiDuEunina.stidue.net/Applicazioni...
Streaming multimediale:tecniche e protocolli
Corso di Applicazioni TelematicheA.A. 2009-10
Prof. Simon Pietro Romano
Università degli Studi di Napoli Federico II
Facoltà di Ingegneria
Cos'è lo streaming?
• Trasferimento informazioni multimediali su rete• Una sorgente, più
destinazionidestinazioni
• Flussi multimediali codificati
• Vari protocolli• Multicast/Unicast
• P2P
Unicast vs. Multicast
Con multicast mando un solo stream allo stesso gruppo di utenti...
... ma non posso fare adattamento dei contenuti, o VOD
Strategie di trasferimento (1)
• File transfer• La riproduzione può iniziare solo al termine del
trasferimento del file• Ritardo proporzionale alla dimensione del file
• E' necessaria una adeguata capacità di • E' necessaria una adeguata capacità di memorizzazione (su memoria di massa) da parte del ricevitore
• Soluzione idonea solo per documenti di piccole dimensioni (audio-clip e/o video-clip)
• Assolutamente inadatto per informazioni live• Non c'è un file pre-registrato, qual è la dimensione?
Strategie di trasferimento (2)
• Streaming (riproduzione progressiva)• Il ricevitore memorizza l’informazione ricevuta in un
buffer (playout buffer) che viene continuamente alimentato dai dati ricevuti dalla rete e svuotato progressivamente progressivamente
• La riproduzione può iniziare non appena il buffer si è “sufficientemente” riempito
• Il ricevitore non deve memorizzare l’intero file
• La qualità della riproduzione può degradare se la rete non mantiene la continuità temporale del flusso di informazioni trasmesso dalla sorgente
Tipologie di streaming
• On-demand• Sorgente è un file pre-registrato
• Già compresso (solitamente), va solo trasmesso
• YouTube, Megavideo, Google video, ...
• Possibilità di controllare il video (seeking, pause, ...)• Possibilità di controllare il video (seeking, pause, ...)
• Live• Sorgente è webcam, telecamera, screencast, ...
• Va compresso in tempo reale e poi trasmesso (ritardi)
• Justin.tv, Ustream, SopCast, ...
• Nessun controllo sulla riproduzione
Protocolli
• Innumerevoli soluzioni per lo streaming• Molte soluzioni, povera interoperabilità
• Spesso necessari client/server stesso produttore
• Standard• HTTP, HTML5, RTSP, SIP• HTTP, HTML5, RTSP, SIP
• Proprietari• MMS (Microsoft), RTMP (Adobe), ...
• Protocolli P2P• PPStream, SopCast, TVAnts, StreamTorrent, ...
HTTP multimedia streaming
• Modo più semplice di fare streaming• Solo on-demand, non live
• Download o riproduzione con buffering• Supportato praticamente da tutti
• Proposta Apple per HTTP Live Streaming• Proposta Apple per HTTP Live Streaming• Stream diviso in tanti piccoli download
• Stream alternativi per rate diversi
• Attualmente supportato in iPhone e Quicktime
• Proposto come standard IETF• http://tools.ietf.org/html/draft-pantos-http-live-streaming-03
Real Time Streaming Protocol
• Standard IETF per streaming multimediale• http://www.ietf.org/rfc/rfc2326.txt
• Consente al client di controllare riproduzione• Pause, Rewind, Fast Forward, ...
• Simile ad HTTP e SIP• Simile ad HTTP e SIP• Protocollo testuale, header+payload
• Meccanismo richiesta/risposta
• Negoziazione mediante SDP o SMIL• In realtà, negoziazione “ibrida” (header “Transport”)
• Trasferimento effettivo mediante RTP
• HTTP per reperire il meta-file• RTSP/RTP per lo streaming
Scenario tipico
Scenario tipico: messaggi
Metodi RTSP
• OPTIONS get available methods
• SETUP establish transport
• ANNOUNCE change description of media object
• DESCRIBE get (low-level) description of media object
• PLAY start playback, reposition• PLAY start playback, reposition
• RECORD start recording
• REDIRECT redirect client to new server
• PAUSE halt delivery, but keep state
• SET PARAMETER device or encoding control
• TEARDOWN remove state
Chi usa RTSP?
• Non diffusissimo in ambiente desktop• Attualmente è preferito RTMP (Flash video)
• Supporto in svariati client (VLC, Mplayer, ...)
• Molto diffuso in ambito mobile• Android, Blackberry, ...• Android, Blackberry, ...
• Supporto nativo in J2ME
• Utilizzato da YouTube per sito mobile• Esempio
– http://www.youtube.com/watch?v=dlj1DW0IW7Y (RTMP)
» vs.– http://m.youtube.com/watch?v=dlj1DW0IW7Y (RTSP)
Implementazioni RTSP
• FFserver/FFplay (client/server)• http://www.ffmpeg.org
• VLC (client/server)• http://www.videolan.org
• Darwin Streaming Server• Darwin Streaming Server• http://developer.apple.com/opensource/server/streaming/
• Java Media Framework (JMF)• http://java.sun.com/javase/technologies/desktop/media/jmf/
• ...
Esempio RTSP (VideoLAN)
• Servervlc --ttl 12 -vvv --color -I telnet
--telnet-password pippo –rtsp-host 0.0.0.0:5554
telnet localhost 5554> new Test vod enabled> setup Test input myvideo.mpg> setup Test input myvideo.mpg
• Clientvlc rtsp://localhost:5554/Test(oppure mplayer rtsp://localhost:5554/Test)
(http://www.videolan.org/doc/streaming-howto/en/ch05.html)
Perché non SIP?
• SIP permette la negoziazione di sessioni multimediali• Usa SDP ed RTP, come RTSP• Può essere usato per streaming monodirezionale
• Accesso mediante semplice telefono SIP
• Problema...• ... di per sé non permette controllo riproduzione!
• Buono per streaming live, non on-demand
• Come implementare interazione?• Applicazioni SIP dinamiche• Toni DTMF, Instant Messaging, HTTP, ...
Un possibile approccio: MEDIACTRL
• Media Server Control (MEDIACTRL)• Working Group IETF ancora attivo
• Molti contributi dallo stesso gruppo COMICS• http://mediactrl.sf.net/
• Media Server controllabile via SIP• Media Server controllabile via SIP• Applicazioni convergenti dinamiche
• Utenti usano SIP/RTP
• Interazione mediante toni DTMF
• Tipici scenari• Call center, conferencing, recording, streaming , ...
ApplicationApplicationServerServer
UserSignaling(e.g. SIP) SIP TCP/TLS
SIP(ControlDialog)
Modello architetturale
MediaMediaServerServer
UserUserAgentAgent
(e.g. SIP) SIP(Media
Dialog)
RTP/SRTP
TCP/TLS(ControlChannel)
Interazione mediante DTMF
• Dual-tone Multi-Frequency
• Permette interazione tra UAC e UAS• e.g. 4=RW, 6=FF
• Vari metodi di trasporto• Vari metodi di trasporto• Segnale audio
• Messaggio SIP INFO
• Pacchetto RTP• 101 telephone-event (SDP)
• Payload type 101
Real Time Messaging Protocol (RTMP)
• Protocollo proprietario di Adobe System• Non aperto, né standard...
• ... ma quasi uno standard de-facto
• Molto utilizzato in ambito web• YouTube, MySpace, Justin.tv, ...• YouTube, MySpace, Justin.tv, ...
• Embedding di ShockWaveFlash (SWF) in HTML
• Concepito per lo streaming• Audio (MP3)
• Video (Flash Video)
• Controlli (Action Message Format)
Scenari tipici
Un server RTMP open source: Red5
• http://red5.org• Alternativa a Flash Media Server
• Varie funzionalità• Supporto RTMP (reverse engineering)
• Streaming (live/on-demand) e Recording• Streaming (live/on-demand) e Recording
• Supporto FLV, H.264, AAC, MP3
• Scritto in Java• Multipiattaforma (Windows, Linux, Mac)
• Semplice creare nuove applicazioni lato server• Lato client implementato in ActionScript
Tipici utilizzi di Red5
• WebTV
• Video On Demand
• Conferencing (chat, audio, video, lavagne, ...)
• ...• ...
Applicazioni Red5
• Approccio simile ad HTTP Servlet• Application Server con WAR in webapps/
• Overriding metodi per implementazione• start()/appStart() e stop()/appStop()
• connect()/appConnect() e disconnect()/appDisconnect()• connect()/appConnect() e disconnect()/appDisconnect()
• streamSubscriberStart() e streamSubscriberStop()
• ...
• Astrazione connessioni e stream
• Varie applicazioni di esempio• Player, recorder, broadcaster/subscriber, ecc.
Estendere Red5: Xuggle
• Red5 è solo uno “smistatore”• Collega stream fra loro senza transcodificare
• Non è possibile adattamento contenuti
• Xuggle (http://www.xuggle.com/)• Wrapper Java a librerie FFmpeg (JNI)• Wrapper Java a librerie FFmpeg (JNI)
• Diffusissime librerie di transcodifica scritte in C
• Supporto FLV/MP3 (se compilato)• Si possono adattare gli stream prima di smistarli...
• ... o crearne di nuovi, da file/rete/ecc.
• Attualmente usato da noi per gateway SIP/RTMP
Streaming Peer-to-Peer
• Stream redistribuito in tempo reale in rete P2P• Ogni utente manda agli altri ciò che riceve
• Molte soluzioni esistenti• Quasi tutte si ispirano a BitTorrent, ma real-time
• Server tracker come indice dei peers per uno stream• Server tracker come indice dei peers per uno stream
• Utente si collega ai peer per ricevere/mandare
• Quasi tutte creano lato clientbackend HTTP
• Semplice streamingHTTP progressivo
Problematiche
• Adatto solo per broadcasting• Tutti ricevono/mandano stesso stream live
• Nessuna possibilità di controllo o adattamento
• Molto sensibile a numero/qualità dei peer• Non c'è rate costante o affidabile• Non c'è rate costante o affidabile
• Innumerevoli soluzioni non interoperabili• IETF sta pensando ad uno standard...
• Peer-to-peer Streaming Protocol (PPSP)
• http://datatracker.ietf.org/wg/ppsp/charter/
• ... ma siamo ancora lontani
Domande?
2828