Sei sulla pagina 1di 68

Note di Copyright

Concessione d'autore

Copyleft 2003 by

Juan Carlos De Martin - juancarlos.demartin@polito.it


Giampaolo Mancini - giampaolo.mancini@polito.it
Davide Quaglia - davide.quaglia@polito.it
Francesco Varano - francesco.varano@polito.it

È 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

Metodo di accesso ai dati multimediali che permette di
riprodurre i contenuti durante il trasferimento
✔ Flusso vs File

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

IntServ e DiffServ
✔ Modifiche all'infrastruttura

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

Sorgente Destinazione

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 d p b

Thursday, April 22, 2004 Internet Media Group 9


Una introduzione allo streaming
Soluzioni – Cambio di codifica dinamico

✔ Codec multimediali

Qualità diversa a parità di bitrate

Bitrate diverso a parità di qualità
✔ Application Data Unit (ADU)

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

Manipolazione dei dati >> operazioni di trasferimento
✔ Presentazione dei dati

Gestita direttamente a livello applicazione
✔ Application Data Unit

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)


Accesso ai contenuti

Gestione delle sessioni
✔ Real-time Transport Protocol (RTP)

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

MPEG-1, MPEG-2, MPEG-4

MP3, DVD, DivX
✔ ITU-T H.xxx

H.323, H.263, H.264

Microsoft NetMeeting, GnomeMeeting
✔ 3GPP/ETSI

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

Supporto parziale protocolli IETF

Documentazione
✔ Windows Media Player

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)



Solo client

Supporto per WMS, QuickTime Server, Real Server
✔ FFMpeg

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

http://streaming.polito.it
✔ Mailing list

omsp-developers@gemelli.polito.it

omsp-bugsreport@gemelli.polito.it

omsp-announce@gemelli.polito.it
✔ 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

12867 righe di codice in linguaggio ANSI C
✔ Numero di file

33 file sorgenti
✔ Compilazione

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 MULTICAST UNICAST


Real One o solo audio o
(Windows, Linux) audio/video solo video
Nemesi (Linux) no audio/video
Mplayer + Live.com
(Windows, Linux) audio/video audio/video
VideoLan
(Windows, Linux) audio/video no
Quicktime
(Windows) sperimentale no

Thursday, April 22, 2004 Internet Media Group 39


Il progetto Open Media Streaming
Fenice – Architettura

✔ Architettura modulare

Astrazione delle risorse

Insieme di interfacce
Modulo
trasversale

RTSP strato 3
SD RTP RTCP SDP 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 Processo B

1 2 3 4 1 2 3 4 5 6 7

Thursday, April 22, 2004 Internet Media Group 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 stream
default_presentation file_name BlackHoleSun.gsm-flo
file_name BlackHoleSun.mp3 payload_type 108
payload_type 96 clock_rate 8000
clock_rate 90000 audio_channels 2
audio_channels 2 encoding_name GSM
encoding_name MP3 sample_rate 8000
sample_rate 44100 coding_type frame
coding_type frame frame_len 0
frame_len 1152 pkt_len 20
stream_end stream_end

Thursday, April 22, 2004 Internet Media Group 45


Il progetto Open Media Streaming
Fenice – Media Entry

✔ Il ruolo del Media Entry

RTSP Session Media Entry

RTP Session Media Entry

RTSP Session Media Entry

RTP Session Media Entry

Thursday, April 22, 2004 Internet Media Group 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 20

0 20 40 60 80 80 100 120 140 160 180 200 220 time (ms)

MP3 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

47510 righe di codice in linguaggio ANSI C
✔ Numero di file

230 file sorgenti (un file per funzione)
✔ Compilazione

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 RTP packet
MP3 Payload Type
Header

GSM Data

PCM

AAC

Thursday, April 22, 2004 Internet Media Group 54


Il progetto Open Media Streaming
NeMeSI – Prestazioni

✔ Applicazione con caratteristiche real-time



Ricezione di pacchetti ogni (tipicamente) 20ms
✔ Allocazione dinamica troppo dispendiosa

Ad ogni malloc() corrisponde una system call che
attraversa il kernel
✔ Overhead

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

Nessuna allocazione dinamica per i dati

Scelta ottima in termini di velocità
✔ Buffer pool

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:

MP3: VBR qualità CD (44.1KHz, 16 bit, stereo)

GSM-AMR: VBR qualità voce (8Khz, 16 bit, mono)

PCM-lineare: CBR qualità voce
✔ Video:

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



Il server ignora il formato dei dati spediti
✔ Link-adapted scheduler

Supporto per algoritmi di trasmissione avanzati
✔ Negoziazione delle capabilities

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
omsp-developers@gemelli.polito.it
omsp-bugsreport@gemelli.polito.it
omsp-announce@gemelli.polito.it

Thursday, April 22, 2004 Internet Media Group 68