Contenu connexe
Similaire à ServEng_S7.pdf
Similaire à ServEng_S7.pdf (20)
ServEng_S7.pdf
- 3. Media handling
3 Semestre 5
© Slimane.bah@emi.ac.ma
Challenges
La transmission de paquets sur Internet implique les challenges
suivants :
• Ajout de délai
sol : udp ou tcp ?
• Perte de paquets
sol : udp ou tcp ?
• Arrivée des paquets en désordre
Affecte les media temps-réel et quasi-temps réel
- 4. Media handling
4 Semestre 5
© Slimane.bah@emi.ac.ma
Jitter
› Il est définit comme étant la variation dans les délais de réception
des paquets
› Pour la transmission de la voix/vidéo le délai doit être constant
(échantillonnage : Théorème de Nyquist)
Freq. Voix humaine = 300 – 3400Hz Freq. Échantillonnage = 8000 Hz
1 échantillon toute les 125 sec
Emission
Réception
Flux stable de paquet
Flux reçu : congestion, traitement intermédiaire
- 7. Media handling
7 Semestre 5
© Slimane.bah@emi.ac.ma
Jitter
La solution consiste à utiliser un buffer
A la réception, attendre un moment au lieu de jouer le media dès sa
réception
Playout
Buffer
Emission
Réception
Play
- 9. Media handling
9 Semestre 5
© Slimane.bah@emi.ac.ma
Jitter
Playout Buffer
Plus le buffer est grand
Mieux le Jitter est contrôlé
Mais délai
Borne Sup.
Besoin du temps
Playout Buffer
- 12. RTP
12 Semestre 5
© Slimane.bah@emi.ac.ma
Media transport : RTP (Real-Time Protocol)
• RTP est un protocole Internet pour le transport de media
temps-réel
• Il est composé d’une partie Data et une partie Contrôle
• RTP transporte les données
• RTCP contrôle ce transport (mesures : jitter, paquets perdus…)
• Le numéro de port de RTCP = port RTP + 1
• Over UDP
• L’Audio et la vidéo voyagent dans deux flux différents
- 13. RTP
13 Semestre 5
© Slimane.bah@emi.ac.ma
Media transport : RTP (Real-Time Protocol)
• Apports de RTP :
• Multicasting
• Identification de la source
• Gestion de différents type de media (#codecs)
• Détection des pertes de données
• Ordonnancement des paquets
• Synchronisation : Timestamping
- 14. RTP
14 Semestre 5
© Slimane.bah@emi.ac.ma
Media transport : RTP (Real-Time Protocol)
version (Ver.) CSRC count (CC)
padding (P) marker (M) : debut de talkspurt
extension (X) payload type (PT) = codec
- 15. RTP
15 Semestre 5
© Slimane.bah@emi.ac.ma
Media transport : RTP (Real-Time Protocol)
Payload type : Audio/video
- 16. RTP
16 Semestre 5
© Slimane.bah@emi.ac.ma
Media transport : RTP (Real-Time Protocol)
Silence Vs perte de paquets
- 17. RTP
17 Semestre 5
© Slimane.bah@emi.ac.ma
Media transport : RTP (Real-Time Protocol)
Silence Vs perte de paquets
Buffer récepteur
Seq 100 Seq 101 Seq 103
- 18. RTP
18 Semestre 5
© Slimane.bah@emi.ac.ma
Media transport : RTP (Real-Time Protocol)
RTCP :
Synchronisation
Audio/video
- 19. TPs
19 Semestre 5
© Slimane.bah@emi.ac.ma
Phase 1:
a) Établir un flux RTP ;
b) Établir une liaison signalisation SIP (avant RTP)
c) Passer par un softswitch (SIP)
1. SIP
1. SIP
RTP
1. SIP
2.
- 20. 20
Phase 2 : Choisir un VAS et l’implémenter dans le softswitch
SIP
SIP
SIP
SIP
SIP SIP SIP
RTP
RTP
SIP
Servlets
Semestre 5
© Slimane.bah@emi.ac.ma
TPs
RTP
RTP
- 21. 21
Phase 3 : Ajout VAS dans le serveur d’application SIP servlets
SIP
SIP
SIP
SIP
SIP SIP SIP
RTP
RTP
Semestre 5
© Slimane.bah@emi.ac.ma
TPs
- 23. Programmation RTP
23 Semestre 5
© Slimane.bah@emi.ac.ma
Java Media Framework
• JMF est une API java pour gérer un flux multimédia
• JMF facilite le développement d’applications multimédia
• Supporte audio et vidéo
• Acquisition du media à partir de sa source
• Transmission et réception du media via RTP/RTCP
- 25. Programmation RTP
25 Semestre 5
© Slimane.bah@emi.ac.ma
JMF
Récap.
file
DataSource Processor
DataSource
DataSource
SessionManager
DataSink
file
Capture
(Mic, Camera)
RTP Transmission
Network
SessionManager
DataSource
DataSource
DataSource
Processor
Player
DataSink
DataSource DataSink
RTP Reception
file
file
Network
- 26. Programmation RTP
26 Semestre 5
© Slimane.bah@emi.ac.ma
JMF
• Media streams
Pour obtenir un flux Media (input) il faut spécifier sa localisation et le
protocole pour y accéder sous forme de URL ou Media Locator
Ex : Obtenir un flux media à partir :
• D’un fichier « file:// » URL
• D’un fichier dans un serveur « http:// » URL
• Du réseau « rtp:// » Media Locator
• D’une capture de la carte son «dsound:// » « javasound:// »
Media Locator
- 27. Programmation RTP
27 Semestre 5
© Slimane.bah@emi.ac.ma
JMF
• Media streams
Un flux média peut être composé de plusieurs canaux (audio, vidéo)
appelés track.
Un track est identifié par :
- Type : audio, vidéo
- Format : comment il est structuré, taux échantillonnage, bits
par échantillon…
- 28. Programmation RTP
28 Semestre 5
© Slimane.bah@emi.ac.ma
JMF
• Media streams
Un flux média peut être composé de plusieurs canaux (audio, video)
appelés track.
Un track est identifié par :
- Type : audio, vidéo
- Format : comment il est structuré, taux échantillonnage, bits
par échantillon…
- 30. Programmation RTP
30 Semestre 5
© Slimane.bah@emi.ac.ma
JMF
Les entités du JMF
• Manager : Création du Player, processor, data sink, data source
• Data Source
• Player
• Processor
• Data Sink
• Session Manager
- 32. Programmation RTP
32 Semestre 5
© Slimane.bah@emi.ac.ma
JMF
Data source encapsule un flux media.
Peut représenter le flux à différentes étapes du processus
MediaLocator ml=new MediaLocator("file://c:music.wav");
DataSource ds= Manager.createDataSource(ml);
- 33. Programmation RTP
33 Semestre 5
© Slimane.bah@emi.ac.ma
JMF
La classe Format représente le format du flux media.
2 sous classes : AudioFormat et VideoFormat
Ex. un objet AudioFormat est créé en spécifiant :
- type d’encodage - nbr de bits par échantillon
- taux d’échantillonnage - nbr de canaux
AudioFormat af=new AudioFormat (AudioFormat.GSM, 8000, 8, 1);
- 34. Programmation RTP
34 Semestre 5
© Slimane.bah@emi.ac.ma
JMF
Player traite et présente le media (joue le media)
Le media est présenté au player sous forme de Data source
Player p=Manager.createPlayer(ds);
p.start();
- 35. Programmation RTP
35 Semestre 5
© Slimane.bah@emi.ac.ma
JMF
Processor peut contrôler le media.
Il peut multiplexer, démultiplexer, coder, décoder, appliquer des effets
sur un media
Processor p=Manager.createProcessor(ds);
//p.configure() ; p.realize() ; p.start(); p.getDataOutput();..
- 36. Programmation RTP
36 Semestre 5
© Slimane.bah@emi.ac.ma
JMF
Data sink permet de mettre le flux à disposition d’une destination.
DataSink dsink=Manager.createDataSink(ds, ml);
dsink.open(); //ouvre la connection à la dest. spécifiée par ml (mediaLocator)
dsink.start(); //démarre le transfert
- 37. Programmation RTP
37 Semestre 5
© Slimane.bah@emi.ac.ma
JMF
SessionManager est utilisé lors de réception/l’envoi d’un flux
du/vers le réseau.
• Il offre un contrôle sur la session RTP contrairement au DataSink
• Gère le canal RTCP
• Permet de : démarrer/Arrêter une session RTP, créer un flux à
envoyer, ajouter/supp. des pairs, obtenir des statistiques,…
- 38. Programmation RTP
38 Semestre 5
© Slimane.bah@emi.ac.ma
JMF
SessionManager
• SessionManager est basé sur les objets RTP Stream et des Listeners.
• RTPStream class : SendStream et ReceiveStream
• Listeners pemettent d’alerter lors des événements relatifs à la
session RTP :
- SendStreamListener : informe sur l’état du flux envoyé
- ReceiveStreamListener : informé de la réception d’un paquet RTP
via la méthode update( )
- 39. Programmation RTP
39 Semestre 5
© Slimane.bah@emi.ac.ma
JMF SessionManager : envoi
RTPSessionMgr sm =new RTPSessionMgr();
sm.initSession(rtpIPsrc, rtpPORTsrc, rtcpIPsrc, rtcpPORTsrc, …);
sm.startSession(rtpIPdest, rtpPORTdest, rtcpIPdest,
rtcpPORTdest,…);
//pour démarrer la transmission il faut créer un DataSource avec son MediaLocator
//puis créer le flux d’envoi
SendStream ss=sm.createSendStream(ds,1);
ss.start(); //début de la transmission
Sous forme de SessionAddress
- 40. Programmation RTP
40 Semestre 5
© Slimane.bah@emi.ac.ma
JMF
SessionManager : réception
Un Stream entrant est détecté par le Listener qui génère un
événement ReceivedStreamEvent
public class MyReceiveStreamListener implements ReceiveStreamListener {
public void update(ReceiveStreamEvent event) {
if (event instanceof NewReceiveStreamEvent){
rs=event.getReceiveStream();
DataSource rDS=rs.getDataSource();
}
}
}
- 41. Programmation RTP
41 Semestre 5
© Slimane.bah@emi.ac.ma
JMF
SessionManager : réception
Un Stream entrant est détecté par le Listener qui génère un
événement ReceivedStreamEvent
MySessionManager.addReceiveStreamListener(this);
…
ReceiveStream rs= event.getReceiveStream();
//Il suffit de convertir le flux obtenu en Data Source
DataSource ds=rs.getDataSource();
- 42. Programmation RTP
42 Semestre 5
© Slimane.bah@emi.ac.ma
JMF
Récap.
file
DataSource Processor
DataSource
DataSource
SessionManager
DataSink
file
Capture
(Mic, Camera)
RTP Transmission
Network
SessionManager
DataSource
DataSource
DataSource
Processor
Player
DataSink
DataSource DataSink
RTP Reception
file
file
Network