Upload
others
View
7
Download
0
Embed Size (px)
Citation preview
Corso di Applicazioni TelematicheA.A. 2010-11
Prof. Simon Pietro Romano
Università degli Studi di Napoli Federico II
Facoltà di Ingegneria
Streaming multimediale:
tecniche e protocolli
Cos'è lo streaming?
• Trasferimento
informazioni
multimediali su rete
• Una sorgente, più
destinazioni
• 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
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
• 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, ...)
• 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
• Approcci diversi, scarsa interoperabilità
• Spesso necessari client/server dello stesso produttore
• Standard
• 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
• 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-06
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
• 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
• 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, ...
• 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
• 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
• 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
• Applicazioni convergenti dinamiche
• Utenti usano SIP/RTP
• Interazione mediante toni DTMF
• Tipici scenari
• Call center, conferencing, recording, streaming, ...
Application
Server
Media
Server
User
Agent
User
Signaling
(e.g. SIP) SIP
(Media
Dialog)
RTP/SRTP
TCP/TLS
(Control
Channel)
SIP
(Control
Dialog)
Modello architetturale
Interazione mediante DTMF
• Dual-tone Multi-Frequency
• Permette interazione tra
UAC e UAS
• e.g. 4=RW, 6=FF
• 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, ...
• 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
• 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()
• 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)
• 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
• Utente si collega ai peer per ricevere/mandare
• Quasi tutte creano lato client
backend HTTP
• Semplice streaming
HTTP 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
• 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
2828
Domande?