Vidéo et Voix sur IP
Dr. Yahia Benmoussa
[email protected]
Table des matières
1 Représentation numérique de la vidéo......................................................4
1.1 Échantillonnage spatiale...........................................................................4
1.1.1 Représentation Noir-et-blanc..................................................................5
1.1.1 Représentation RGB...............................................................................5
1.2 Échantillonnage temporelle......................................................................6
1.3 Nécessité de la compression des données vidéo......................................7
2 Principes de la compression Vidéo............................................................7
2.1 Représentation YUV..................................................................................7
2.2 Corrélation spatiale et temporelle............................................................8
2.2.1 Corrélation spatiale................................................................................8
2.2.2 Corrélation temporelle............................................................................9
2.3 Compression sans-perte (lossless) et avec-perte (lossy)..........................9
2.3.1 sans-perte ............................................................................................. 9
2.3.2 avec-perte ............................................................................................. 9
2.4 Standard de compressions vidéo..............................................................9
2.4.1 Le standard H.264................................................................................10
2.4.1.1 Prédiction.............................................................................................10
2.4.1.2 DCT.....................................................................................................10
2.4.1.3 Quantification......................................................................................10
2.4.1.4 Codage entropique...............................................................................10
2.5 Type d’image I,P,B...................................................................................11
3 Les conteneurs vidéo.............................................................................. 12
4 Transmission de la vidéo sur les réseaux IP.............................................12
4.1 Video over HTTP......................................................................................12
4.1.1 Avantages............................................................................................ 12
4.1.2 Inconvénients.......................................................................................13
4.2 RTP : Real Time Protocol.........................................................................13
4.3 Protocoles de signalisation RTSP et RTCP...............................................13
5 Transmission unicast vs multicast...........................................................15
5.1 Les adresses multicast............................................................................15
5.2 Avantage du multicast............................................................................16
6 Les proxy RTSP/RTP................................................................................. 16
6.1 Proxy Unicast-Unicast.............................................................................16
6.2 Proxy Unicast-Multicast...........................................................................16
7 Téléphonie sur IP..................................................................................... 17
7.1 Définition.................................................................................................17
1.2 Téléphone physique................................................................................17
7.1.1 Téléphone logiciel (soft phone).............................................................17
7.2 Protocole de transport............................................................................17
7.3 Protocole de signalisation.......................................................................18
7.4 Le protocole SIP......................................................................................18
7.5 Modèle de communication SIP................................................................18
8 Visio-conférence...................................................................................... 22
1 TD N°1 : Compression vidéo....................................................................24
2 TD N°2 : RTSP/RTP................................................................................... 26
3 TD N°3 : Proxy RTP/RTSP.........................................................................28
4. TD N° 4 : Session Initiation Protocol (SIP).................................................30
4 TP N°1 : Compression vidéo....................................................................32
4.1 Format YUV.............................................................................................32
4.2 Compression H.264.................................................................................32
5 TP N°2 : Transmission unicast de la vidéo via un réseau.........................34
5.1 Téléchargement progressif......................................................................34
5.2 Transmission vidéo en RTP/RTSP.............................................................34
5.3 Transmission vidéo en temps réel avec RTP/RTSP..................................35
6 TP N°3 : Transmission video multicast.....................................................36
7 TP N°4 : Proxy vidéo................................................................................ 37
7.1 Proxy RTSP Unicast->Unicast..................................................................37
7.2 Proxy Unicst-Multicast.............................................................................38
8 TP N° 5 :Session Initiation Protocole : Serveur SIP...................................39
8.1 Installation et exécution du serveur kamailio.........................................39
8.2 Installation et configuration de twinkle...................................................39
8.3 Installation et configuration de linphone sous android...........................40
8.4 Test de l’installation................................................................................40
1 Représentation numérique de la vidéo
Pour représenter numériquement une vidéo, on doit comprendre comment est
représenter une photo numérique en utilisant l’échantillonnage spatiale.
1.1 Échantillonnage spatiale
Illustration 1: Échantillonnage spatiale d'une image
L’échantillonnage spatiale consiste à diviser une image en de petite parties
élémentaires appelée « pixel ». Ensuite, dans un dispositif acquisition
numérique d’image (Ex. Caméra), une image est projetée sur un capteur
photo-sensible qui est composé d’une matrice de micro-capteurs. Chaque
micro-capteur génère un signal électrique analogique dont la tension est
proportionnelle à l’intensité de la lumière. Ce signal est ensuite numérisé avec
un convertisseur A/N. Par exemple si la numérisation est sur 8 bits, alors un
pixel avec une intensité lumineuse maximale est représenté par le nombre 255
(2⁸-1) et le pixel avec une intensité lumineuse minimale est représenté par 0.
1.1.1 Représentation Noir-et-blanc
Le format de représentation d’une mage ou chaque pixel est représente par un
seul nombre reflétant son intensité lumineuse est dit noir-et-blanc. Dans ce
cas, la taille d’une image numérique est déterminé par sa résolution qui est
définie par le nombre de lignes (hauteur) et de colonnes (largeur) de la matrice
d’échantillonnage. Par exemple :
Une image HD, c’est 1280 (colonnes) x 720(lignes) = 921600 octets
Une image Full DH, c’est 1920 (colonnes) ×1080 (lignes) = 2073600
octets.
1.1.1 Représentation RGB
Pour représenter une image en couleur, chaque pixel est divisé en 3
composantes de couleurs principales : Rouge, Vert et Bleu. Cette
représentation est appelée : RGB. Par exemple, le jaune est la composition du
rouge et du vert tel que illustré dans la figure 2. La figure 3 montre des
exemples de code RGB de plusieurs couleurs. Ainsi, dans la représentation
RGB, chaque pixel est codé à l’aide de 3 octets.
Illustration 2: Représentation RGB
Illustration 3: Exemples de couleurs RGB
1.2 Échantillonnage temporelle
L’échantillonnage temporelle consiste à effectuer des échantillonnages spatiaux
périodiquement, par exemple, 10 fois par seconde. La fréquence
d’échantillonnage est appelée FPS : Frame per second.
L’affichage consécutifs des image ainsi capturé donne l’illusion d’un mouvement
de l’image. Pour que l’œil humaine ne s’aperçoive pas de la coupure entre
deux images consécutive, il faut que le FPS soit supérieur à 24 image par
seconde.
1.3 Nécessité de la compression des données vidéo
Quel serait la taille d’un filme en codage RGB et ayant les propriétés suivantes :
Résolution : Full HD : 1980x1080
FPS : 30
Durée : 2 Heures
Taille en octet = 1920x1080x3*30*3600*2= 1.34×10¹² octets = 1251 GO. Soit
environ 1.2 terra-octet !
Le codage RGB est un format non-compressé qui nécessite des capacités de
stockage énorme qui rend difficile la transmission des données vidéo.
2 Principes de la compression Vidéo
L’objectif de la compression vidéo est de réduire la taille des données vidéo afin
de faciliter leur transmission. Dans ce qui suit nous présenterons les principales
techniques utilisé pour la compression des données vidéo.
2.1 Représentation YUV
La représentation YUV a comme objectif de transformer le codage RGB en un
espace colorimétrique en trois composantes. La première, Y, représente la
luminescence U et V, représentent la chrominance selon la formule illustrée ci-
dessous.
Illustration 4: Conversion RGB/YUV
L’œil humaine étant moins sensible aux couleurs qu ‘à la luminescence, on peut
sous-échantillonner les composantes de couleurs sans que l’œil humaine ne
s’en aperçoive.
Par exemple, avec un sous-échantillonnage 4 :2 :0, un groupe de 4 pixel
nécessite donc 4 composantes Y et 1 composante Y et 1 composante V. La
taille nécessaire pour représenter ce groupe de 4 pixel est de 6 octets à la
place 12 octets en format RGB. La taille de stockage est réduite de 50 %
2.2 Corrélation spatiale et temporelle
Une autre technique utilisée dans la compression des données vidéo est
l’exploitation de la redondance des données. En effet, à la place d’envoyer
toutes les données vidéo, on envoie que les plus importantes Di. Les données
qui se répètent Dr, on les envoie sous forme de (D, R, V) ou
Di : est la donnée dont dépend Dr
R : les résidus qui représente Di - Dr
V : Vecteur de mouvent qui précise l’emplacement de Di.
2.2.1 Corrélation spatiale
Dans le cas ou la redondance de données se produit dans la même image on
parle de corrélation spatiale. Par exemple, c’est le cas ou une image contient
un arrière plan qui ne varie pas d’une zone à une autre.
2.2.2 Corrélation temporelle
Dans le cas ou la redondance de données se produit entre des images
différentes, on parle de corrélation spatiale. Par exemple, c’est le cas ou un
objets se déplace dans le temps d’une zone de l’image vers une autre.
2.3 Compression sans-perte (lossless) et avec-perte
(lossy)
La compression de données en générale est de deux types :
2.3.1 sans-perte
Dans ce cas, on peut récupérer les données originales entièrement à partir de
la donnée compressée
2.3.2 avec-perte
Dans ce cas, on ne peut récupérer que partiellement les données originales à
partir des données compressées.
2.4 Standard de compressions vidéo
Il existe plusieurs standards de compression vidéo. On peut citer comme
exemple les standards développés par :
MPEG (Moving Picture Expert Group) tels que MPEG2, H264,
H265 (HEVC)
Google : VP8 et VP9
Alliance for Open Media : AV1
2.4.1 Le standard H.264
Malgré qu’il est assez ancien (2003), H.264 est l’un des standard de
compression les plus utilisés. Dans H.264, chaque image est divisé en groupes
de 16x16 pixels appelés macro-bloc (MB). Sur ces MB, on appliques les
traitent décrit ci-dessous.
2.4.1.1 Prédiction
La prédiction consiste à trouver les corrélations spatiales (Intra-prédiction) ou
temporelle (inter-prédiction) entre les différents MB contenu dans les images
(frames). Le résultat de ce traitement est un MB de référence, des résidus R et
un vecteur de mouvement V.
2.4.1.2 DCT
La Transformée de Fourrier Directe a pour objectif de hiérarchiser l’information
selon sa priorité. En effet, l’information importante va se voir affectée un
coefficient élevé et l’information la moins importante va se voir affectée un
coefficient faible.
2.4.1.3 Quantification
Cette phase a pour objectif à éliminer l’information la moins importante en
divisant par un coefficient appelé QP (Quantification parameter). Tous les
coefficients de Fourrier en dessous de QP seront annulés. L’information
associée à ces coefficient sera perdu définitivement. C’est ici que se produit
la perte d’information.
2.4.1.4 Codage entropique
Le codage entropique permet d ‘améliorer encore la compression de données
en utilisant un algorithmes de compression sans perte.
Illustration 5: Étapes de la compression H.264
2.5 Type d’image I,P,B
Dans le standard H.264, il existe 3 types d’images :
Image I (Intra) : c’est une image dont tous les MB dépendent d’autres
MB qui se trouvent dans l’image elle-même.
Image P (Past): C’est une image dont les MB dépendent d’autres MB
qui se trouvent dans l’image elle-même ou dans une image passée.
Image B (Past): C’est une image dont les MB dépendent d’autres MB
qui se trouvent dans l’image elle-même, dans une image passée ou dans
une image future.
On note que si la vidéo est destiné à être transmise en réseau, il est
recommandé d’insérer 1 image de type I chaque 1 seconde pour améliorer la
mésalliance par rapport à la perte de paquet. En effet, si une image I est perdu
alors toutes les images dépendant ne pourront pas être décodés. Un Groupes
d’image qui commence par une image I suivie par plusieurs image de type P ou
B est appelé GOP (Group of Picture).
3 Les conteneurs vidéo
4 Transmission de la vidéo sur les réseaux IP
4.1 Video over HTTP
Le moyen le plus simple de transmettre de la vidéo via les réseau IP est
d’utiliser le protocole HTTP. Le contenu vidéo peut être hébergé au niveau d’un
serveur Web puis récupéré et décodé par un navigateur Web.
4.1.1 Avantages
Simplicité
N’est pas bloqué pas les fare-feu
Possibilité d’utiliser l’infrastructure existante.
4.1.2 Inconvénients
Grande latence
Manque de contrôle : Il faut télécharger la vidéo puis la décoder.
Lenteur à cause de l’utilisation de TCP.
Support du mode Unicast seulement.
4.2 RTP : Real Time Protocol
RTP (Real Time Protocol) est un protocole dédié au transport des données
multimédia (vidéo et audio). RTP est un protocole de la couche application et peut
utiliser UDP ou TCP. Dans le cas du protocole UDP, les deux modes de transport
unicast et multicast sont supportés.
Dans un paquet RTP, on etrouve principalement des information sur le temps
associé au données multimédia (timestamp).
Illustration 6: Format d'un paquet RTP
4.3 Protocoles de signalisation RTSP et RTCP
Le protocole RTP est souvent utilisé conjointement avec des protocoles de
signalisation tels que RTSP et RTCP.
RTSP(Real Time Streaming Protocole) permet de d’échanger des information
de contrôle entre un client multimédia et un serveur multimédia. Par ailleurs,
RTCP (Real Time Control Protocol) permet d’échanger périodiquement des
informations sur la qualité de service entre le client et le serveur.
La figure ci-dessous explique les étape pour l’établissent d’une session
multimédia entre un client et un serveur :
OPTIONS : Ce message demande au serveur de préciser toutes le
commandes RTSP supportées. Le serveur peut répondre par :
OPTIONS. DESCRIBE, SETUP, PLAY, PAUSE, TEAR DOWN.
DESCRIBE : Ce message demande au serveur d’envoyer une
description du média que le client souhaite récupérer. Le serveur répond
par exemple par le type (audio ou vidéo) ainsi que le standard de
compression utilisé (Ex. H.264).
SETUP : Ce message précise au serveur les numéro de port que client
souhaite utiliser pour la réception des donnée multimédia. Il doit préciser
2 numéros de port consécutifs : le premier pour RTP et le second pour
RTCP. Le serveur répond à sont tour par les deux numéro de port source
qu’il va utiliser pour envoyer les paquets RTP et RTCP.
PLAY : Ce message demande au serveur de commencer la diffusion
des données multimédia ainsi que les messages RTCP Send Report
(SR).
PAUSE : Ce message demande au serveur d’arrêter la diffusion des
données multimédia ainsi que les messages RTCP Send Report (SR).
TREAR DOWN : Ce message demande au serveur de terminer le
session multimédia en cours.
Illustration 7: RTSP, RTP et RTCP
5 Transmission unicast vs multicast
Le multicast est plus efficace que l'unicast pour diffuser des contenus
simultanément vers une large audience. En streaming unicast, on envoit
l'information autant de fois qu'il y a de connexions, d'où gaspillage de temps, de
ressources du serveur et surtout de bande passante.
Le multicast IP diffère également du broadcast, puisque le message est
seulement délivré à un groupe auparavant annoncé à l'expéditeur, et non à tous
les utilisateurs du réseau. En multicast, chaque paquet n'est émis qu'une seule
fois et sera routé vers toutes les machines du groupe de diffusion sans que le
contenu soit dupliqué sur une quelconque ligne physique ; c'est donc le réseau
qui se charge de reproduire les données.
5.1 Les adresses multicast
La communication multicast se fait en UDP vida des adresse IP réservée
appartenant à l’une des plages suivantes :
224.0.0.0/8
232.0.0.0/8
233.0.0.0/8
239.0.0.0/8
5.2 Avantage du multicast
La transmission vidéo multicast permet d’optimiser :
Les ressources de calcul au niveau du serveur (la duplication de paquets
est faite au niveau du réseau).
La bande passante entre la source multicast et les clients
6 Les proxy RTSP/RTP
Les proxy RTSP/RTP sont de deux types :
6.1 Proxy Unicast-Unicast
6.2 Proxy Unicast-Multicast
7 Téléphonie sur IP
7.1 Définition
La téléphonie IP désigne un mode de téléphonie qui utilise le protocole IP afin
d’acheminer toutes les communications téléphoniques. Elle a pour objectif de
fournir une expérience utilisateur semblable à celle de la téléphonie classique à
base de Réseau Téléphonique Commuté (RTC).
Les terminaux servant au utilisateur s d’effectuer des appels téléphonique via
les réseau IP sont de deux types :
1.2 Téléphone physique
Il est semblable au téléphone classique, cependant il se connecte au réseau IP
via une prise RJ45.
Téléphone IP Cisco
7.1.1 Téléphone logiciel (soft phone)
Il peut être installé sous forme d’une application sur différent type de système
d’exploitation (Windows, Linux, Mac, Android).
7.2 Protocole de transport
En général, pour acheminer les donnée multimédia, on utilise dans la
téléphonie sur IP, le protocole RTP.
7.3 Protocole de signalisation
Par contre, pour la signalisation, la téléphonie sur IP utilise un protocole adapté
qui offre plus de possibilités par rapport à RTSP pour la gestion de :
la mobilité des utilisateurs.
le renvoi des d’appels.
État des utilisateurs (Injoignable, occupé, en cours d’appel, ...).
7.4 Le protocole SIP
Le protocole SIP gère la signalisation pour établir la connexion entre deux
utilisateurs SIP. Il est basé sur le format texte comme RTSP et HTTP.
SIP utilise le port 5060 et supporte les protocole TCP ou UDP contrairement à
RTSP qui ne supporte que TCP.
7.5 Modèle de communication SIP
Dans une communication SIP, on retrouve deux types d’agent :
UAC ( User Agent Client ) : Un agent qui envoi une requête SIP
UAS ( User Agent Server ) ; Un agent qui reçoit une requête SIP et répond
par une message.
Un élément dans un réseau SIP peut être UAC et UAS en même temps. Par
exemple, un soft-phone qui initie un appel est un UAC. Il devient un UAS s’il
reçoit un appel.
Pour qu’une session d’appel soit établie entre deux agents, il est nécessaire
d’utiliser des serveurs SIP. Il en existent plusieurs types :
Registrar : Un serveur qui gère l’enregistrement, l’authentification et la
localisation des agents. Il garde une correspondance entre l’identifiant SIP
d’un agent et son adresse IP. Il est souvent localisé dans le proxy.
Proxy : Un serveur qui reçoit les requêtes SIP des agent, localise le
destinataire et route l’appel vers le destinataire final ou un autre proxy.
La figure ci-dessous explique les étapes de l’établissent d’une session
multimédia entre deux utilisateur SIP :
1. Chaque agent doit s’enregistrer au niveau du serveur Registrar.
2. Le registrar confirme que l’enregistrent d’est effectué correctement.
3. L’appelant (ALICE) initie un appel vers l’appelant (BOB) en envoyant un
message INVITE vers le proxy.
4. Le Proxy envoie une requête au serveur Registrar pour trouver la
localisation de l’anget de Bob
5. Le Registrar répond par la localisation de l’UAS de Bob.
6. Le proxy envoie un message INVITE à l’UAS de Bob.
7. L’UAS de Bob envoie un message RINGING au proxy pour l’informer
que le destinataire en entrain d’être notifié de l’appel.
8. Le Proxy retransmet le message RINGING vers l’UAC de Alice.
9. Quand l’UAS de Bob décroche, il envoie un message OK (INVITE) au
proxy.
10. Le Proxy retransmet le message OK (INVITE) vers l’UAC de Alice.
11. L’UAC de Alice envoie un message ACK au Proxy.
12. Le proxy retransmet le message ACK vers l’UAC de Alice.
La communication entre Alice et Bob peut commencer en utilisant RTP et sans
passer par le proxy.
Les informations sur les media ainsi que les numéros de ports RTP sont
négociés dans le les message :
INVITE pour le type de média et les numéro de port RTP de l’appelant
OK (INVITE) pour le type de média et les numéro de port RTP de
l’appelé.
8 Visio-conférence
Travaux Dirigés
1 TD N°1 : Compression vidéo
Exercice 1
Quelles est la taille en octets de la séquence vidéo ayant les propriétés
suivantes ?
◦ durée : 1 mn
◦ FPS : 25
◦ résolution : CIF (352x240)
avec chacun des codages suivants :
◦ RGB
◦ YUV
◦ H.264
Exercice 2
1. Soit une vidéo full HD (1920x1080) d’une durée de 1 heure et 30 minutes
et d’un FPS de 30. Quel est le tau de compression H.264 nécessaire
pour :
a) pouvoir enregistrer la vidéo dans un DVD de 4.3 GO
b) transmettre la vidéo dans une réseau d’une bande passante de 4
Mb/s
2. Définir les différents type d’images dans le standards de compression
H.264.
3. Comparer entre les tailles des différents type d’images dans H.264 puis
expliquer cette différence.
4. Expliquer la phase de quantification dans H.264
5. Pourquoi la perte d’information dans la phase de quantification H.264
est irréversible.
Exercice 3
Soit une camera IP d’une résolution HD (1280x720) et d’un FPS de 25. On
dispose de 100 Go sur le disque pour stocker les enregistrements de cette
camera. Quelle est la durée d’enregistrement maximale si la vidéo de la camera
est enregistrée en :
◦ YUV
◦ H264 avec un bitrate de 2 MO/s
1. Pourquoi les images de type I ont une taille plus grande que les images
de type P ?
2. Quel est la définition d’un conteneur multimédia. Citer 3 exemples.
2 TD N°2 : RTSP/RTP
Exercice 1 :
1) Expliquer le rôle de chacun des protocoles suivants :
a) RTSP
b) RTP
c) RTCP
2) Montrer les différentes étapes de l’établissent d’une connexion
RTSP/RTP en expliquant le rôle de chaque message.
3) A quel étape se fait le choix du protocole de trasport UDP ou TCP ?
4) Quels sont les avantages et les inconvénients de la diffusion vidéo en
RTP/TCP par rapport à RTP/UDP ?
5) Quel est le numéro de port standard de RTP ?
6) Comparer en la latence de protocoles suivants pour la transmission de la
vidéo
a) RTP over TCP
b) HTTP
c) RTP over UDP
Exercice 2
1) Peut-on diffuser de la vidéo RTP/TCP en multicast ? Expliquer votre
réponse.
2) Expliquer l’avantage de la transmission vidéo multicast par rapport à
unicast.
3) Expliquer le cas ou il est impossible d’utiliser le multicast entre le serveur
et le client de vidéo streaming ?
Exercice 3
Dans un tableau, préciser et justifier le protocole de transport vidéo (HTTP,
RTP) le protocole de transport réseau (TCP ou UDP) et le mode de transport
(unicast/multiast) utilisés pour chacune des applications suivantes :
a) IP TV dans un réseau local
b) Vidéo surveillance dans une réseau local
c) Vidéo surveillance dans dans Internet
d) VoD (Youtube, Netflix, ...) dans internet
e) Diffusion des horaires de départ/arrivée des vols dans une un grand
aéroport.
protocole de protocole de Justification
transport vidéo transport réseau
1
2
3
4
5
3 TD N°3 : Proxy RTP/RTSP
Exercice 1
Les Camera-1 (2MO/s) et Camera-2 (3 MO/s) sont dans Internet. Le
Client-1 et Client-2 accèdent à la Camera-1 via un proxy unicast et
unicast. Les Client-3, Client-4 et Client-5 accèdent à Camera-2 via un
proxy unicast/mulitcast.
Calculer la bande passante utilisée dans Internet et dans le réseau
local.
Exercices 2
Montrer par un schéma la localisation de la charge de calcul de l’utilisation de la
bande passante dans chacun des cas suivants :
1. Connexion direct entre les clients RTP et le serveur RTP
2. Connexion entre les clients RTP et le serveur RTP via un proxy Unicast-
Unicast
3. Connexion entre les clients RTP et le serveur RTP via un proxty
Unicast-Multicast
4. TD N° 4 : Session Initiation Protocol (SIP)
Exercice 1 :
1. Quelles sont les fonctionnalités supplémentaire offerte par SIP par
rapport à RTSP ?
2. Quel est le role des serveur Registrar et Proxy dans un réseau SIP ?
3. Expliquer l’établissement d’une session SIP entre deux utilisateurs via
un proxy en montrant le cheminement des messages SIP et RTP.
4. Dans quel phase se fait la négociation des ports RTP dans SIP ?
Travaux Pratiques
4 TP N°1 : Compression vidéo
Objectif :
Comprendre les format de représentation de vidéo non compressés RGB
et YUV.
Maîtriser la compression vidéo avec ffmpeg
Estimer le taux de compression d’un codeur vidéo
4.1 Format YUV
Télécharger ce fichier RGB et l’enregistrer sous le nom video.rgb. La résolution de ce
fichier est 352x288.
3. Trouver la taille du fichier à l’aide de la commande Linux du
4. Convertir ce fichier au format yuv à l’aide de la commande :
ffmpeg -pix_fmt rgb24 -s 352x288 -i video.rgb -pix_fmt yuv420p video.yuv
5. Comparer la taille du fichier YUV avec celle du fichier RGB.
6. Sachant que le FPS=30, trouver le nombre de frames (images) contenues dans
cette séquence vidéo ainsi que sa durée.
4.2 Compression H.264
f) A l’aide de ffmpeg, compresser le fichier video.yuv dans un ficher video.264 en
utilisant le standard vidéo 264.
g) Compresser video.yuv dans un fichier video.mkv.
h) Retrouver les propriétés de compression de ce ficher à l’aide de la commande
ffprobe.
i) Calculer le taux de compression réalisé par H.264 après l’encodage de ce
fichier.
Rappel commande ffmpeg
ffmpeg -s 176x144 -r 30 -i video.yuv -r 15 -b:v 128k -v:c h264 video.264
-s -> la résolution de la vidéo
-r -> le FPS de la vidéo
-i -> le nom du fichier d’entrée
-b :v -> le bitrate de la vidéo de sortie. Exemples :
128k c’est 128 kb/s.
1m, c’est 1mb/s.
-v:c -> le nom du standard de compression. Exemples :
h264
hevc
vp8
vp9
Remarques :
Toutes les options qui viennent avant le nom de fichier d’entré
concernent le fichier d’entrée.
Toutes les options qui viennent après le nom de fichier d’entré
concernent le fichier de sortie.
Cours Vidéo et Voix sur IP
5 TP N°2 : Transmission unicast de la vidéo via un réseau
Objectifs :
Comprendre les différents protocole de transmission vidéo :
◦ Téléchargement progressif avec HTTP
◦ Temps réel avec RTSP/RTSP
▪ live555MediaServer sous Linux
▪ « RTSP camera server » sous Android
5.1 Téléchargement progressif
On utilise le mode téléchargement progressif via HTTP afin de pouvoir transmettre le
fichier vidéo « video.mp4 » (généré lors du précédant TP). Pour réaliser cet objectif, il est
demandé de :
1. Installer le serveur Web apache puis enregistrer le fichier video.mkv dans le
répertoire /var/www/html
2. Accéder au contenu de ce fichier à partir d’un navigateur Web
3. Créer une page HTML avec une balise <video> qui accède au contenu du fichier
video.mp4 hébergé au niveau du serveur.
4. Quels sont les avantage et les inconvénient du téléchargement progressif des
vidéo.
5.2 Transmission vidéo en RTP/RTSP
On utilise les protocole RTSP/RTP afin de transmettre le fichier vidéo « video.mkv »
(généré lors du précédant TP). Pour réaliser cet objectif, il est demandé de :
1. Installer le serveur multimédia live555 avec la commande apt-get install
# sudo apt-get install livemedia-utils
Remarque : si le package livemedia-utils n’est pas disponible, vous pouvez faire une
installation à partir des sources :
34
Cours Vidéo et Voix sur IP
$ wget https://download.videolan.org/pub/contrib/live555/live.2023.01.11.tar.gz
$ tar xvzf live.2023.01.11.tar
$ cd live
$ ./genMakefile linux
$ make
$ sudo make install
2. Créer un répertoire « media » puis copier le ficher video.mkv dans ce répertoire
puis exécuter la commande live555MediaServer dans ce répertoire.
3. Noter l’URL pour accéder au contenu multimédia disponible dans le serveur
live555MediaServer. Quel protocole utilise live555MediaServer et sur quel numéro
de port il écoute ?
4. A l’aide de la commande ffplay, accéder au fichier video.mkv en utilisant RTSP/RTP.
(ffplay rtsp://@ IP/video.mkv)
5. Refaire l’opération en exécutant un analyseur de paquets réseaux en même temps.
Trouver les numéro de port RTP et RTCP puis identifier les commande RTSP de
base.
5.3 Transmission vidéo en temps réel avec RTP/RTSP
Dans cette exercice, on utilise l’application mobile RTSP Camera pour simuler une caméra
de vidéo surveillance avec un smartphone.
1. Installer l’application « RTSP camera server » dans votre smartphone.
2. Configurer votre smartphone comme « point d’accès » en activant le partage de la
connexion puis connecter votre PC au réseau Wifi de votre smartphone.
3. Activer la capture vidéo dans l’application « RTSP camera server » et noter
l’adresse IP de votre smartphone.
4. Sur votre PC, afficher la capture vidéo de l’application « RTSP camera server »
avec la commande ffplay rtsp://@IP:5554
35
Cours Vidéo et Voix sur IP
6 TP N°3 : Transmission video multicast
Objectifs :
Comprendre les avantage de la transmission vidéo multicast par rapport à la
transmission vidéo unicast.
Exercice 1
1. Créer un répertoire « media » puis copier le ficher test.ts dans ce répertoire puis
exécuter la commande testMPEG2TransportStreamer sans ce répertoire.
2. Exécuter en suite la commande ffplay rtp://@239.255.42.42:1234.
3. Que représente l’adresse 239.255.42.42 ?
4. Exécuter plusieurs instance de la commande ffplay rtp://@239.255.42.42:1234
puyis évaluer l’impact sur la bande passante.
36
Cours Vidéo et Voix sur IP
7 TP N°4 : Proxy vidéo
Objectifs :
Comprender les avatange de l’utilisation des proxy
◦ unicast-unicast
◦ unicast→ mulitcast
7.1 Proxy RTSP Unicast->Unicast
On propose d’améliorer les performance su streaming RTSP/RTP en utilisant un proxy.
L’objectif du proxy est de maintenir une seul connexion RTSP/RTP avec la caméra et de
la distribuer vers plusieurs client RTSP/RTP. Pour réaliser cet objectif :
5. Exécuter live555ProxyServer rtsp://@ camera:5554 puis noter l’URL de connexion
affiché par le proxy.
6. Sur les PCs, utiliser l’URL rtsp://@ proxy:8554/proxyStream pour se connecter à la
caméra via le proxy.
7. Quel est l’avantage d’une telle solution ?
4) Avec l’outils gnome-system-monitor, évaluer, en terme de nombre de PC, la bande
passante entre le proxy les PC.
37
Cours Vidéo et Voix sur IP
7.2 Proxy Unicst-Multicast
Afin d’optimiser l’utilisation de la bande passante, on se propose d’utiliser un proxy RTP
unicast vers mulitcast. Ce proxy se connecte à une caméra RTSP en unicast puis diffuser
la vidéo en mulitcast vers plusieurs PC. Pour réaliser cet objectif :
2. Installer vlc
3. Exécuter la commande
cvlc rtsp://192.168.43.1:5554 --sout
'#rtp{dst=239.255.42.42,port=1234,name=stream,
sdp=file:///tmp/camera.sdp}'
4. Récupérer le fichier sdp générer puis le copier sur le PC
5. Que contient ce fichier ?
6. Sur les PC, exécuter la commande ffplay camera.sdp
7. Avec l’outils gnome-system-monitor, évaluer, en terme de nombre de PC, la bande
passante entre le proxy les PC.
38
Cours Vidéo et Voix sur IP
8 TP N° 5 :Session Initiation Protocole : Serveur SIP
Objectif du TP
Mettre en œuvre un serveur SIP avec kamailio pour implémenter les fonctionnalité
Registrar et Proxy.
Utiliser le soft-phone Twinkle sous Linux
Utiliser le soft-phone linphone sous Android
Établir un appel SIP entre Twinkle (Linux) et Linphone (Android) via le proxy
kamailio (Linux).
8.1 Installation et exécution du serveur kamailio
Sous Linux, installer les packages kamailio puis vérifier qu’il écoute bien sur les numéro
de port TCP et UDP 5060.
$ apt-get install kamailio
$ sudo systemctl start kamailio
$ netstat -apn –inet | grep kamailio
8.2 Installation et configuration de twinkle
$ apt-get install twinke
Exécuter twinkle puis créer un profile avec les propriétés suivantes :
Nom utilisateur : 100
Adresse proxy : mettre l’adresse du serveur kamailio
protocole de transport : UDP
Remarque : si vous exécutez twinkle sur le même ordinateur de kamailio,
configurez un autre numéro de port SIP différent (Ex. 5070) dans les paramètres réseau
pour éviter un conflit de port.
39
Cours Vidéo et Voix sur IP
8.3 Installation et configuration de linphone sous android
Installer linphone à partir de Google Play Store.
Exécuter linephone puis créer un profile avec les propriétés suivantes :
Nom utilisateur : 200
Adresse proxy : mettre l’adresse du serveur kamailio
protocole de transport : UDP
8.4 Test de l’installation
Vérifiez que les deux clients sont connectés à kamailio puis effectuez un appel à partir de
Twinke vers linphone.
Dans wireshark, retrouvez les messages SIP INVITE et RINGING.
40