7
Résultats des tests de bande-passante Ce rapport présente les différentes manières de contrôler le débit du flux vidéo d’une caméra IP, lorsquon streame celui-ci dun ordinateur à un autre en utilisant Gstreamer. Ce contrôle se fait via les paramètres affectés à la ligne de commande lançant l émetteur de flux vidéo. Cette commande est la suivante : gst-launch -v rtspsrc location=rtsp:// x.x .x .x:554/mpeg4/media.amp ! queue ! decodebin ! capsfilter caps="video/x-raw-yuv" ! theoraenc ! rtptheorapay ! .send_rtp_sink gstrtpsession name=session .send_rtp_src ! udpsink port=5000 host= X.X.X.X session.send_rtcp_src ! udpsink port=5001 host= X.X.X.X où x.x.x.x est à remplacer par l’adresse IP de la caméra IP, et X.X.X.X par l’adresse IP de lordinateur où se trouve le récepteur vers lequel on veut streamer le flux vidéo de la caméra. Les paramètres influant sur le débit du flux vidéo sont les suivants : - Le framerate (paramètre du capsfilter) - La hauteur et la largeur de la vidéo (paramètres du capsfilter, toujours) - Le bitrate (paramètre de l’encodeur Theora) - Le paramètre quality (paramètre de l’encodeur Theora) Remarque : toutes les données présentes dans les graphes sont des données approximatives. En effet, la taille du flux vidéo est soumise aux aléas du trafic sur la bande passante. Il se peut donc qu’il y ait une variation d’à peu près 10 Kbps pour les petits débits, et une variation montant jusqu’à 40 Kbps pour les débits plus importants. Le framerate Le framerate détermine le nombre d’images à la seconde. Donc plus celui-ci est petit, plus la part de bande passante consommée par le flux vidéo sera petite. Cest le paramètre qui a le plus dinfluence sur le débit final. Sa plage de valeurs dépend de l’encodeur vidéo utilisé. Dans le cas de l’encodeur Theora ici utilisé, il peut aller de 0 image par seconde à 2147483647 images à la seconde. Le système d’exploitation du récepteur n’influe pas sur le débit du flux vidéo, comme le démontre le graphe ci-dessous :

Test de bande passante streaming GStreamer

Embed Size (px)

DESCRIPTION

Rapport de Marléne Hildebrand sur la consommation de bande passante (en streaming) avec plusieurs paramètres de GStreamer.

Citation preview

Page 1: Test de bande passante streaming GStreamer

Résultats des tests de bande-passante

Ce rapport présente les différentes manières de contrôler le débit du flux vidéo d’une caméra IP,

lorsqu’on streame celui-ci d’un ordinateur à un autre en utilisant Gstreamer. Ce contrôle se fait via

les paramètres affectés à la ligne de commande lançant l’émetteur de flux vidéo. Cette commande

est la suivante :

gst-launch -v rtspsrc location=rtsp:// x.x .x .x:554/mpeg4/media.amp ! queue ! decodebin !

capsfilter caps="video/x-raw-yuv" ! theoraenc ! rtptheorapay ! .send_rtp_sink gstrtpsession

name=session .send_rtp_src ! udpsink port=5000 host= X.X.X.X session.send_rtcp_src ! udpsink

port=5001 host= X.X.X.X

où x.x.x.x est à remplacer par l’adresse IP de la caméra IP, et X.X.X.X par l’adresse IP de

l’ordinateur où se trouve le récepteur vers lequel on veut streamer le flux vidéo de la caméra.

Les paramètres influant sur le débit du flux vidéo sont les suivants :

- Le framerate (paramètre du capsfilter)

- La hauteur et la largeur de la vidéo (paramètres du capsfilter, toujours)

- Le bitrate (paramètre de l’encodeur Theora)

- Le paramètre quality (paramètre de l’encodeur Theora)

Remarque : toutes les données présentes dans les graphes sont des données approximatives. En

effet, la taille du flux vidéo est soumise aux aléas du trafic sur la bande passante. Il se peut donc qu’il

y ait une variation d’à peu près 10 Kbps pour les petits débits, et une variation montant jusqu’à 40

Kbps pour les débits plus importants.

Le framerate Le framerate détermine le nombre d’images à la seconde. Donc plus celui-ci est petit, plus la part

de bande passante consommée par le flux vidéo sera petite. C’est le paramètre qui a le plus

d’influence sur le débit final. Sa plage de valeurs dépend de l’encodeur vidéo utilisé. Dans le cas de

l’encodeur Theora ici utilisé, il peut aller de 0 image par seconde à 2147483647 images à la seconde.

Le système d’exploitation du récepteur n’influe pas sur le débit du flux vidéo, comme le démontre le

graphe ci-dessous :

Page 2: Test de bande passante streaming GStreamer

Les modifications à apporter à la commande afin de fixer le framerate sont ici représentées en

vert :

gst-launch -v rtspsrc location=rtsp://x.x .x .x:554/mpeg4/media.amp ! queue ! decodebin ! queue

! videorate ! capsfilter caps="video/x-raw-yuv,framerate=(fraction)1/3" ! theoraenc ! rtptheorapay !

.send_rtp_sink gstrtpsession name=session .send_rtp_src ! udpsink port=5000 host=X.X.X.X

session.send_rtcp_src ! udpsink port=5001 host=X.X.X.X

Le bitrate Le bitrate impose, en théorie, le débit du flux vidéo. Il est compris entre 0 et 3000, et se

compte en kilo bits par seconde (Kbps). Cependant, il arrive souvent que la valeur réelle du bitrate ne

corresponde pas à la valeur imposée en théorie. Par exemple, lorsque le framerate est très bas, peu

importe la valeur qu’on a assignée au bitrate, il vaudra toujours entre 25 et 35 Kbps. En effet, vous

pouvez voir sur les graphes ci-dessous que, bien que le bitrate imposé ait une influence sur le débit

effectif, ce dernier reste essentiellement dominé par la valeur du framerate. Ainsi, pour un framerate

élevé, le débit restera élevé, et pour un framerate bas, il restera bas. De plus, vous pouvez également

voir que le bitrate effectif ne dépend pas du système d’exploitation du récepteur, puisque les valeurs

sont très similaires entre Linux et Windows.

0

200

400

600

800

1000

1200

1400

(1/3) 1 5 15

bit

(en

Kb

ps)

Nombre d'images par seconde

Fig. 1.1. : Evolution du débit en fonction du framerate

De Linux à Windows

De Linux à Linux

Page 3: Test de bande passante streaming GStreamer

Les paramètres à modifier afin d’imposer le bitrate sont ici représentés en vert :

gst-launch -v rtspsrc location=rtsp:// x.x .x .x:554/mpeg4/media.amp ! queue ! decodebin !

capsfilter caps="video/x-raw-yuv" ! theoraenc bitrate=128 ! rtptheorapay ! .send_rtp_sink

gstrtpsession name=session .send_rtp_src ! udpsink port=5000 host= X.X.X.X session.send_rtcp_src !

udpsink port=5001 host= X.X.X.X

0100200300400500600700800900

32 128 256 768Val

eu

r d

u b

itra

te r

éel

(en

Kb

ps)

Valeur du bitrate imposé (en Kbps)

Fig. 2.1. : Correspondance entre bitrate théorique et effectif lors d'une transmission

de Linux à Windows

(1/3) image par seconde

1 image par seconde

5 images par seconde

0100200300400500600700800900

32 128 256 768Val

eur

du

bit

rate

el (

en K

bp

s)

Valeur du bitrate imposé (en Kbps)

Fig. 2.2. : Correspondance entre bitrate théorique et effectif lors d'une transmission

de Linux à Linux

1/3 image pas seconde

1 image par seconde

5 images par seconde

Page 4: Test de bande passante streaming GStreamer

La taille de l’image Curieusement, modifier les paramètres « width » et « height » du caps influe

considérablement sur le débit du flux vidéo, bien qu’en théorie il ne devrait pas y avoir moins

d’informations circulant dans le cas d’une image plus petite. En effet, comme vous pouvez le voir sur

le graphe ci-dessous, dans le cas d’un framerate d’une image à la seconde, augmenter la taille de

l’image affichée augmente considérablement le débit du flux vidéo.

Les paramètres width et height peuvent prendre des valeurs comprises entre 1 et

2147483647 pixels dans le cas de l’encodeur Theora. Cependant, il est intéressant de souligner que la

valeur du bitrate l’emporte sur le format de l’image, c’est-à-dire que si l’on impose un bitrate ainsi

qu’un format d’image, c’est la valeur du bitrate qui va se révéler être déterminant pour la valeur du

débit réel. Par exemple, toujours avec un framerate d’une image par seconde, si l’on impose une

taille d’image de 800x600, ou de 600x450, et un bitrate de 32 Kbps, on finit par obtenir un débit

effectif de 45/50Kbps, ce qui correspond bien, comme on peut le voir sur la figure 2.1., à la valeur

que l’on aurait obtenu si l’on avait pas imposé de taille. Cependant, si le débit obtenu avec le format

d’image utilisé est inférieur à celui obtenu avec le bitrate utilisé, il se peut que le débit final soit

considérablement diminué par rapport à la valeur obtenue avec un tel bitrate. Par exemple, pour un

bitrate de 768 avec une image de 240x180, on obtient un débit de 145 Kbps. Ce qui est largement

inférieur au débit de 350 Kbps qu’on obtiendrait normalement avec un tel bitrate, mais cela reste

supérieur au débit de 20 Kbps imposé par une image de 240x180. Le débit final est donc influencé

par cette petite taille, sans qu’elle ne le détermine entièrement pour autant.

0

20

40

60

80

100

120

140

240x180 320x240 600x450 800x600

bit

(en

Kb

ps)

Taille de l'image affichée (en pixels)

Fig. 3.1. : Evolution du débit en fonction de la taille de l'image

De Linux à Windows

De Linux à Linux

Page 5: Test de bande passante streaming GStreamer

Sur le graphe ci-dessus, on peut clairement voir qu’une petite taille de fenêtre entraîne une

diminution du débit par rapport au débit imposé. Cependant, plus on agrandit la fenêtre, plus le

débit effectif se rapproche de la valeur qu’il aurait prise avec le bitrate imposé.

(Remarque : certaines valeurs sont manquantes pour une fenêtre de 800x600. En fait, les

valeurs de bitrate 256 et 768 sont trop élevées pour qu’on puisse les combiner à une fenêtre aussi

grande, et Gstreamer ne supporte pas cette combinaison. Cela provoque des pertes qui dégradent

l’image et ne permettent pas de stabiliser le débit.)

Les paramètres à ajouter afin de modifier la taille de l’image sont ici en vert :

gst-launch -v rtspsrc location=rtsp:// x.x .x .x:554/mpeg4/media.amp ! queue ! decodebin !

queue ! videoscale ! capsfilter caps="video/x-raw-yuv,width=320,height=240" ! theoraenc !

rtptheorapay ! .send_rtp_sink gstrtpsession name=session .send_rtp_src ! udpsink port=5000 host=

X.X.X.X session.send_rtcp_src ! udpsink port=5001 host= X.X.X.X

Le paramètre quality Ce paramètre de l’encodeur Theora définit la qualité de l’image encodée, entre des valeurs

allant de 0 à 63. Bien évidemment, plus la qualité est bonne, plus le débit est important. Cependant,

il faut savoir que lorsqu’on impose une qualité d’image à l’encodeur, le bitrate n’a plus d’effet, c’est-

à-dire que peu importe le bitrate que l’on impose, ça ne changera rien au débit final à partir du

moment qu’on a imposé une qualité d’image. Le graphe ci-dessous illustre le phénomène. On a

imposé un format d’image de 320x240, un framerate d’une image à la seconde, et pour chaque

bitrate, on a fait varier la qualité d’image. On peut voir clairement que quelque soit le bitrate, le

débit final reste le même pour une qualité d’image donnée.

0

50

100

150

200

250

300

350

400

32 128 256 768

bit

eff

ect

if (

en K

bp

s)

Valeur du bitrate imposé (en Kbps)

Fig. 3.2. : Evolution du débit en fonction du bitrate et du format de l'image

Taille par défaut

240x180

320x240

600x450

800x600

Page 6: Test de bande passante streaming GStreamer

Bien évidemment, pour une même valeur de qualité, plus la taille de l’image sera grande,

plus le débit final sera important. Le graphe ci-dessous donne quelques valeurs de débit obtenu en

fonction de la taille de l’image et de sa qualité, et ce pour un framerate d’une image à la seconde :

(Remarque : là encore, les valeurs de 46 et de 63 pour la qualité d’image sont trop élevées

pour être compatibles avec un format d’image de 800x600, et entraînent des flux instables. C’est

pourquoi ces données sont absentes de ce graphe.)

De la même manière, le débit n’est pas le même pour une qualité donnée selon le framerate

que l’on applique au flux vidéo. Le débit effectif va alors diminuer avec la qualité et le framerate,

0

50

100

150

200

250

2 32 63

bit

eff

ect

if (

en K

bp

s)

Qualité de l'image sur une échelle de 0 à 63

Fig. 4.1. : Evolution du débit en fonction de la qualité et du bitrate imposé

bitrate de 32 Kbps

bitrate de 128 Kbps

bitrate de 256 Kbps

bitrate de 768 Kbps

0

50

100

150

200

250

300

350

2 16 32 46 63

Déb

it e

ffec

tif

(en

Kb

ps)

Qualité de l'image sur une échelle de 0 à 63

Fig. 4.2. : Evolution du débit en fonction de la qualité et du format de l'image

240x180

320x240

600x450

800x600

Page 7: Test de bande passante streaming GStreamer

comme le montre le graphe suivant, où les valeurs ont été calculées pour une image de format

320x240 pixels :

Vous pouvez voir ici, en vert, le paramètre à ajouter afin de fixer la qualité de l’image :

gst-launch -v rtspsrc location=rtsp://x.x .x .x:554/mpeg4/media.amp ! queue ! decodebin ! capsfilter

caps="video/x-raw-yuv" ! theoraenc quality=32 ! rtptheorapay ! .send_rtp_sink gstrtpsession

name=session .send_rtp_src ! udpsink port=5000 host=X.X.X.X session.send_rtcp_src ! udpsink

port=5001 host=X.X.X.X

0

100

200

300

400

500

600

700

800

900

2 16 32 46 63

bit

eff

ect

if (

en K

bp

s)

Qualité de l'image sur une échelle de 0 à 63

Fig. 4.3. : Evolution du débit en fonction de la qualité d'image et du framerate

1 image toutes les 3 secondes

1 image à la seconde

5 images par seconde