Note di Copyright Concessione d'autore Copyleft 2003 by Juan Carlos De Martin -
[email protected] Giampaolo Mancini -
[email protected] Davide Quaglia -
[email protected] Francesco Varano -
[email protected] È garantito il permesso di copiare, distribuire e/o modificare questo documento seguendo i termini della Licenza per Documentazione Libera GNU (GNU Free Documentation License), Versione 1.1 o ogni versione successiva pubblicata dalla Free Software Foundation; senza Sezioni Non Modificabili, con nessun Testo Copertina, e con nessun Testo di Retro Copertina. Una copia della licenza è disponibile all'indirizzo Web http://www.gnu.org/licenses/fdl.html Thursday, April 22, 2004
Internet Media Group
1
Internet Media Gro up
Il progetto
IRITI-CNR
Open Media Streaming G. Mancini, D. Quaglia, F. Varano J. C. De Martin, A. R. Meo
Settimana delle Libertà, Siena, 17 Aprile 2004
Overview Una introduzione allo streaming ✔ Le iniziative per standard open ✔ Le soluzioni commerciali ✔ Le soluzioni Open/Free ✔ Il progetto Open Media Streaming ✔
Thursday, April 22, 2004
Internet Media Group
3
Roadmap Una introduzione allo streaming ✔ Le iniziative per standard open ✔ Le soluzioni commerciali ✔ Le soluzioni Open/Free ✔ Il progetto Open Media Streaming ✔
Thursday, April 22, 2004
Internet Media Group
4
Una introduzione allo streaming ✔
Streaming
✔
Flusso vs File
✔
Metodo di accesso ai dati multimediali che permette di riprodurre i contenuti durante il trasferimento Nessun file da scaricare Fruizione istantanea
Applicazioni MoIP
Multimedia Over IP
Thursday, April 22, 2004
Internet Media Group
5
Una introduzione allo streaming Applicazioni MoIP – Note Generali
Cos'è un'applicazione MoIP ✔ Caratteristiche ✔
✔
Elaborazione real-time Throughput
Una possibile tassonomia
Stored Multimedia Live Broadcast Multimedia Interactive Multimedia
Thursday, April 22, 2004
Internet Media Group
6
Una introduzione allo streaming Applicazioni MoIP – Problemi
Commutazione di pacchetto ✔ Servizio Best-effort ✔ Perdita di pacchetti ✔ Incertezze temporali ✔
Delay Jitter
Thursday, April 22, 2004
Internet Media Group
7
Una introduzione allo streaming Applicazioni MoIP – Soluzioni ✔
Modifiche all'architettura
✔
Modifiche all'infrastruttura
✔
IntServ e DiffServ Banda Larga Aumentare la potenza dei router
Modifiche nelle applicazioni
Buffer di Playout Controllo di Flusso Tecniche di recupero degli errori Cambio di codifica dinamico
Thursday, April 22, 2004
Internet Media Group
8
Una introduzione allo streaming Soluzioni – Buffer di Playout Pacchetti
Destinazione
Sorgente
Pacchetti persi
t = istante di spedizione d = istante di ricezione p = istante di inizio riproduzione b = istante di inizio riproduzione ritardata b - p = dimensione del buffer di playout Tempo t Thursday, April 22, 2004
d p
b
Internet Media Group
9
Una introduzione allo streaming Soluzioni – Cambio di codifica dinamico ✔
Codec multimediali
✔
Application Data Unit (ADU)
✔
Qualità diversa a parità di bitrate Bitrate diverso a parità di qualità Elaborazione indipendente Application Level Framing e Integrated Layer Processing
Adattatività allo stato della rete
Necessità di un feedback del player verso il server
Thursday, April 22, 2004
Internet Media Group
10
Una introduzione allo streaming Soluzioni – ALF & ILP ✔
Clark e Tennenhouse
“Architectural Consideration for a New Generation of Protocols”, 1990, SIGCOMM Symposium on Communications Architectures and Protocols
Equivalente a Joint Source-Channel Coding ✔ Architettura vs. implementazione ✔
Due concetti ortogonali La progettazione a strati può essere un collo di bottiglia
Thursday, April 22, 2004
Internet Media Group
11
Una introduzione allo streaming Soluzioni – ALF & ILP ✔
Carico computazionale
✔
Presentazione dei dati
✔
Gestita direttamente a livello applicazione
Application Data Unit
✔
Manipolazione dei dati >> operazioni di trasferimento
Simbolo interpretato in parallelo
Integrated Layer Processing
Thursday, April 22, 2004
Internet Media Group
12
Una introduzione allo streaming Soluzioni – Tecniche di recupero degli errori ✔
Ridondanza
Forward Error Correction Interleaving
Ritrasmissione ✔ Mascheramento delle perdite ✔
Interpolazione Ripetizione Tecniche avanzate
Thursday, April 22, 2004
Internet Media Group
13
Una introduzione allo streaming Architettura di streaming
Encoder
Server
Net
Client
Feedback
Thursday, April 22, 2004
Internet Media Group
14
Una introduzione allo streaming Architettura di streaming ✔
Encoder
Codifica Real-time Diverse richieste
Duplicazione dello stream in più formati
Diversi input
File Telecamera, microfono, ecc.
Thursday, April 22, 2004
Internet Media Group
15
Una introduzione allo streaming Architettura di streaming ✔
Server
✔
Gestione delle connessioni Pacchettizazione Ascolto stato della rete Negoziazione delle capabilities
Client
Ricezione, decodifica, riproduzione Spedizione statistiche Negoziazione delle capabilities
Thursday, April 22, 2004
Internet Media Group
16
Roadmap Una introduzione allo streaming ✔ Le iniziative per standard open ✔ Le soluzioni commerciali ✔ Le soluzioni Open/Free ✔ Il progetto Open Media Streaming ✔
Thursday, April 22, 2004
Internet Media Group
17
Le iniziative per standard open Considerazioni generali ✔
Due livelli di apertura
Utilizzo di formati standard
Codifica multimediale Protocolli di trasmissione
Presenza di brevetti
Brevetti sui formati Brevetti sugli algoritmi
Thursday, April 22, 2004
Internet Media Group
18
Le iniziative per standard open Internet Streaming Media Alliance
Alleanza tra industrie ✔ “Our goal is to accelerate the adoption of open standards for streaming rich media video, audio, and associated data - over the Internet” (www.isma.it) ✔ Protocolli IETF + Codifica MPEG-4 ✔
Thursday, April 22, 2004
Internet Media Group
19
Le iniziative per standard open Internet Engineering Task Force
Protocolli per lo streaming su IP ✔ Real-Time Streaming Protocol (RTSP) ✔
✔
Real-time Transport Protocol (RTP)
✔
Accesso ai contenuti Gestione delle sessioni Trasporto dei dati multimediali real-time
RTP Control Protocol (RTCP)
Controllo del trasporto (statistiche sulla qualità)
Thursday, April 22, 2004
Internet Media Group
20
Le iniziative per standard open Formati multimediali ✔
ISO MPEG
✔
ITU-T H.xxx
✔
H.323, H.263, H.264 Microsoft NetMeeting, GnomeMeeting
3GPP/ETSI
✔
MPEG-1, MPEG-2, MPEG-4 MP3, DVD, DivX
GSM
Xiph.org Foundation
OGG-Vorbis, OGG-Tarkin, Theora
Thursday, April 22, 2004
Internet Media Group
21
Roadmap Una introduzione allo streaming ✔ Le iniziative per standard open ✔ Le soluzioni commerciali ✔ Le soluzioni Open/Free ✔ Il progetto Open Media Streaming ✔
Thursday, April 22, 2004
Internet Media Group
22
Le soluzioni commerciali RealNetworks ✔ Windows Media Player ✔ Apple Quicktime ✔ Non compatibili fra loro ✔ Non compatibili con gli standard ✔ Vincolate al singolo produttore ✔
Thursday, April 22, 2004
Internet Media Group
23
Le soluzioni commerciali ✔
RealNetworks
✔
Windows Media Player
✔
Supporto parziale protocolli IETF Documentazione ASF File Format (brevettato) Nessun supporto protocolli IETF
Apple Quicktime
Supporto parziale protocolli IETF “Hinted” file format / encoder non standard
Thursday, April 22, 2004
Internet Media Group
24
Roadmap Una introduzione allo streaming ✔ Le iniziative per standard open ✔ Le soluzioni commerciali ✔ Le soluzioni Open/Free ✔ Il progetto Open Media Streaming ✔
Thursday, April 22, 2004
Internet Media Group
25
Le soluzioni Open/Free “Open Source” ✔
RealNetworks
✔
Helix Iniziative (RPSL) Standardized APIs... Single Solution... Application Development
Apple Quicktime
Darwin Streaming Server (APSL) Industrial strength performance... Engaging ease of use
Thursday, April 22, 2004
Internet Media Group
26
Le soluzioni Open/Free Free Software (GPL) ✔
MPlayer (+ Live.com Streaming Media)
✔
FFMpeg
✔
Solo client Supporto per WMS, QuickTime Server, Real Server Client & Server Implementazioni di riferimento per libavcodec
VideoLan
Client & Server RTSP (solo server)
Thursday, April 22, 2004
Internet Media Group
27
Roadmap Una introduzione allo streaming ✔ Le iniziative per standard open ✔ Le soluzioni commerciali ✔ Le soluzioni Open/Free ✔ Il progetto Open Media Streaming ✔
Thursday, April 22, 2004
Internet Media Group
28
Il progetto Open Media Streaming
Thursday, April 22, 2004
Internet Media Group
29
Il progetto Open Media Streaming Overview ✔
Un punto di riferimento per...
✔
raccolta e catalogazione... supporto e integrazione... documentazione e ...
Sviluppo di free software
Server: Fenice 1.4 Client: Network Media Streamer I – NeMeSI 0.3.0
Thursday, April 22, 2004
Internet Media Group
30
Il progetto Open Media Streaming Risorse ✔
Sito Web
✔
Mailing list
✔
http://streaming.polito.it
[email protected] [email protected] [email protected]
CVS/Subversion
https://gemelli.polito.it/svn/{nemesi-dev,mess} https://gemelli.polito.it/viewsvn
Thursday, April 22, 2004
Internet Media Group
31
Il progetto Open Media Streaming Caratteristiche
Protocolli IETF ✔ Codec multimediali open/non proprietari ✔ Tecniche di streaming avanzate ✔ Forte integrazione con la ricerca ✔
Thursday, April 22, 2004
Internet Media Group
32
Il progetto Open Media Streaming Open Media Server/Fenice
Thursday, April 22, 2004
Internet Media Group
33
Il progetto Open Media Streaming Fenice – Introduzione
Free Software (GPL) ✔ Sviluppatori attuali ✔
G. Mancini, Marco Penno, Federico Ridolfo, F. Varano
RTSP, RTP/RTCP compliant ✔ Tecniche avanzate ✔
Cambio di codifica dinamico Process Pooling
Thursday, April 22, 2004
Internet Media Group
34
Il progetto Open Media Streaming Fenice – Informazioni ✔
Righe di codice
✔
Numero di file
✔
33 file sorgenti
Compilazione
✔
12867 righe di codice in linguaggio ANSI C
AutoTools
CVS/Subversion
https://gemelli.polito.it/svn/mess/trunk
Thursday, April 22, 2004
Internet Media Group
35
Il progetto Open Media Streaming Fenice – Informazioni ✔
Moduli
Rtsp (rtsp.c, messages.c) Rtp (rtp.c) Rtcp (rtcp.c) Sdp (sdp.c) Physical (phy.c) Media entry (media_entry.c) Scheduler (schedule.c, eventloop.c)
Thursday, April 22, 2004
Internet Media Group
36
Il progetto Open Media Streaming Fenice – Caratteristiche ✔
Codec multimediali audio
✔
MP3: MPEG-1 Layer III GSM-AMR: Adaptive Multi Rate PCM-lineare
Codec multimediali video
MPEG-1/2 Video ES MPEG System H.264
Thursday, April 22, 2004
Internet Media Group
37
Il progetto Open Media Streaming Fenice – Caratteristiche
Supporto del multicast ✔ Supporto di vari player noti ✔
✔
Mplayer + Live.com VideoLan Client Real One Quicktime (sperimentale)
Supporto sperimentale di trasmissioni live
Thursday, April 22, 2004
Internet Media Group
38
Il progetto Open Media Streaming Fenice – Supporto dei player
PLAYER
Real One (Windows, Linux) Nemesi (Linux) Mplayer + Live.com (Windows, Linux) VideoLan (Windows, Linux) Quicktime (Windows)
Thursday, April 22, 2004
MULTICAST
UNICAST
audio/video no
o solo audio o solo video audio/video
audio/video
audio/video
audio/video
no
sperimentale
no
Internet Media Group
39
Il progetto Open Media Streaming Fenice – Architettura ✔
Architettura modulare
Astrazione delle risorse Insieme di interfacce
Modulo trasversale
RTSP SD
RTP
RTCP
SDP
strato 3 Adaptive Rate Module strato 2
Livello Fisico
strato 1
Media Entry
Thursday, April 22, 2004
Internet Media Group
40
Il progetto Open Media Streaming Fenice – Robustezza ✔
Modello classico: replicazione (fork) del processo ad ogni connessione
✔
Massima robustezza al crash Overhead
Fenice: replicazione dopo N connessioni
Robustezza Scalabilità Prestazioni
Thursday, April 22, 2004
Internet Media Group
41
Il progetto Open Media Streaming Fenice – Robustezza ✔
Rete ascoltata da un processo per volta Prima del forking
Dopo il forking Processo A
Processo A
1
2
3
4
Thursday, April 22, 2004
1
2
3
Internet Media Group
4
Processo B
5
6
7
42
Il progetto Open Media Streaming Fenice – Accesso alle risorse ✔
Accesso trasparente ad una risorsa multimediale
✔
rispetto al formato (ad es., MPEG-1, MPEG-4) rispetto al bitrate rispetto alla sorgente (live vs. file)
File SD
Source Description
Thursday, April 22, 2004
Internet Media Group
43
Il progetto Open Media Streaming Fenice – Source Description ✔
Associazione tra risorsa e dati multimediali
✔
Diversi formati Diversi bitrate Diverse sorgenti (live, file)
Caratteristiche delle sorgenti
Payload type RTP Informazioni per la pacchettizzazione Priorità nel cambio di codifica dinamico
Thursday, April 22, 2004
Internet Media Group
44
Il progetto Open Media Streaming Fenice – Source Description
stream default_presentation file_name BlackHoleSun.mp3 payload_type 96 clock_rate 90000 audio_channels 2 encoding_name MP3 sample_rate 44100 coding_type frame frame_len 1152 stream_end
Thursday, April 22, 2004
stream file_name BlackHoleSun.gsm-flo payload_type 108 clock_rate 8000 audio_channels 2 encoding_name GSM sample_rate 8000 coding_type frame frame_len 0 pkt_len 20 stream_end
Internet Media Group
45
Il progetto Open Media Streaming Fenice – Media Entry ✔
Il ruolo del Media Entry RTSP Session
Media Entry RTP Session
RTSP Session
Media Entry RTP Session
Thursday, April 22, 2004
Media Entry
Internet Media Group
Media Entry
46
Il progetto Open Media Streaming Fenice – Cambio di codifica dinamico
Problema di sovrapposizione dei frame ✔ Possibili soluzioni ✔
Frame corrente (riavvolgere il flusso) Frame successivo (salto nella riproduzione) Frame vicino con minore scarto (ottimale)
GSM-AMR
0
MP3
20
20
40
60
80
80
100
120
140
160
180
200
220
time (ms)
26.1
Thursday, April 22, 2004
Internet Media Group
47
Il progetto Open Media Streaming Network Media Streamer I
Thursday, April 22, 2004
Internet Media Group
48
Il progetto Open Media Streaming NeMeSI – Introduzione
Free Software (GPL) ✔ Sviluppatori ✔
Giampaolo Mancini, Francesco Varano Marco Penno
RTSP, RTP/RTCP fully compliant ✔ Interfaccia grafica ✔ Tecniche avanzate ✔
Cambio di codifica dinamico Buffer di playout di sistema
Thursday, April 22, 2004
Internet Media Group
49
Il progetto Open Media Streaming Nemesi – Informazioni ✔
Righe di codice
✔
Numero di file
✔
230 file sorgenti (un file per funzione)
Compilazione
✔
47510 righe di codice in linguaggio ANSI C
Autotools, Makefile Dipendenze: LibSDL, LibAVCodec (FFMpeg), LibTool
CVS/Subversion
https://gemelli.polito.it/svn/nemesi-dev/trunk
Thursday, April 22, 2004
Internet Media Group
50
Il progetto Open Media Streaming NeMeSI – Caratteristiche ✔
Multithreading
Una directory per thread
Plug-in ✔ Decodifica basata su LibAVCodec ✔
✔
Molte codifiche supportate Prestazioni ottime
Output multimediale basato su LibSDL
Simple Direct Layer
Thursday, April 22, 2004
Internet Media Group
51
Il progetto Open Media Streaming NeMeSI – Architettura ✔
Thread di esecuzione
Interfaccia utente Controllo delle sessioni (RTSP) Ricezione dei dati (RTP) Controllo di flusso (RTCP) Decodifica Presentazione SDL
Audio Video
Thursday, April 22, 2004
Internet Media Group
52
Il progetto Open Media Streaming NeMeSI – Buffer di Playout di rete
Tolleranza alle variazioni nella rete ✔ Riordino dei pacchetti ✔
Pacchetti fuori sequenza Validi se arrivati prima dell'istante di decodifica
Thursday, April 22, 2004
Internet Media Group
53
Il progetto Open Media Streaming NeMeSI – Cambio di codifica dinamico ✔
Pacchetto per pacchetto
✔
Payload Type dell'header RTP
Vettore di puntatori a funzione
Plug-in MP3
RTP packet Header
GSM
Payload Type
Data
PCM AAC
Thursday, April 22, 2004
Internet Media Group
54
Il progetto Open Media Streaming NeMeSI – Prestazioni ✔
Applicazione con caratteristiche real-time
✔
Allocazione dinamica troppo dispendiosa
✔
Ad ogni malloc() corrisponde una system call che attraversa il kernel
Overhead
✔
Ricezione di pacchetti ogni (tipicamente) 20ms
Moltissime allocazioni per piccole quantità di dati
Latenza
Thursday, April 22, 2004
Internet Media Group
55
Il progetto Open Media Streaming NeMeSI – Gestione della memoria ✔
Gestione statica
✔
Buffer pool
✔
Nessuna allocazione dinamica per i dati Scelta ottima in termini di velocità Zona di memoria pre-allocata API per la gestione degli slot
Nessuna copia di ADU a livello utente
Una copia alla ricezione (read() dal socket)
Una copia per la riproduzione (write() sull'uscita)
Thursday, April 22, 2004
Internet Media Group
56
Il progetto Open Media Streaming NeMeSI – Elaborazione real-time
Decodifica real-time ✔ Granularità temporali comparabili ✔
✔
✔
Time-slice dello scheduler nel kernel: 10ms Time-slice RTP: 20ms
Timer di sistema impreciso
select()
L'imprecisione aumenta con il carico di CPU
Code dati di dimensioni ridotte
Thursday, April 22, 2004
Internet Media Group
57
Il progetto Open Media Streaming NeMeSI – Buffer di Playout di sistema ✔
Host “general purpose”
Sistema operativo multitasking/multithreading Scheduler non real-time
Tollera le variazioni di carico ✔ Possibili realizzazioni ✔
Scheduler interno all'applicazione Buffer della scheda audio/video Coda di dati decodificati (dimensioni ridotte)
Thursday, April 22, 2004
Internet Media Group
58
Il progetto Open Media Streaming NeMeSI – Scheduler interno
✔
Timestamp Scheduling
✔
Schedulazione basata sul timestamp RTP Recupero implicito dei ritardi
Fast Cycles Scheduling
Nessun ciclo di “busy waiting” Recupero dei ritardi Feedback sulla coda di playout di sistema
Thursday, April 22, 2004
Internet Media Group
59
Il progetto Open Media Streaming NeMeSI – Plugin ✔
Audio:
✔
Video:
✔
MP3: VBR qualità CD (44.1KHz, 16 bit, stereo) GSM-AMR: VBR qualità voce (8Khz, 16 bit, mono) PCM-lineare: CBR qualità voce MPEG-1 Video
Tutti i codec libavcodec (FFMpeg)
MPEG-1/2, MPEG-4, H.26x Windows Media Video, Real Video, Sorenson AC3, AAC, Ogg Vorbis
Thursday, April 22, 2004
Internet Media Group
60
Il progetto Open Media Streaming NeMeSI – libavcodec ✔
Tutti i codec libavcodec
MPEG-1/2, MPEG-4, H.26x Windows Media Video, Real Video, Sorenson AC3, AAC, Ogg Vorbis ...
Thursday, April 22, 2004
Internet Media Group
61
Il progetto Open Media Streaming NeMeSI – API Plugin ✔
Primitive (API)
int decode(data, data_len, context); int get_plugin_pt(void);
Convenzione sul formato d'uscita ✔ Aggiunta ✔
Codice sorgente nell'albero di NeMeSI Libreria dinamica esterna già compilata
Thursday, April 22, 2004
Internet Media Group
62
Il progetto Open Media Streaming Work In Progress - Server
Perfezionamento dello scheduler ✔ Re-ingegnerizzazione del server ✔
Punto di accesso a risorse multimediali
Front-end di rete Gestore dei servizi
Flusso di byte vs. flusso di pacchetti
Generatore di pacchetti con caratteristiche real-time
Thursday, April 22, 2004
Internet Media Group
63
Il progetto Open Media Streaming Work In Progress - Server ✔
Streaming-adapted file format
✔
Link-adapted scheduler
✔
Supporto per algoritmi di trasmissione avanzati
Negoziazione delle capabilities
✔
Il server ignora il formato dei dati spediti
MPEG-7/21
Visione futuristica
Streaming Tree/Peer-to-peer HyperMedia Markup Language
Thursday, April 22, 2004
Internet Media Group
64
Il progetto Open Media Streaming Work In Progress - Client/Server ✔
Supporto di metadati
✔
Gestione delle licenze Creative Commons “Digital Rights Management”
Interfaccia utente DVD-like
MPEG-4 Accesso per capitoli, scene Supporto multilingue Sottotitoli
Thursday, April 22, 2004
Internet Media Group
65
Il progetto Open Media Streaming Work In Progress - Producer ✔
Generazione di file streaming-adapted
Off-line Live
Array di producer? ✔ Visione ✔
$ producer < /dev/video0 > /dev/streamer0
Thursday, April 22, 2004
Internet Media Group
66
Outro
Information Wants To Be
Free Thursday, April 22, 2004
Internet Media Group
67
FINE DEMO WLAN: SSID=Medialab Dynamic IP: DHCP http://192.168.1.1 http://streaming.polito.it
[email protected] [email protected] [email protected]
Thursday, April 22, 2004
Internet Media Group
68