Présentation à la nAcademy (Juin 2014) : Les protocles temps réels par Ezzaouia Mohamed (source original : http://fr.slideshare.net/funstyle511/les-protocles-temps-reels)
1. NEUROS - tous droits réservés
Neuros – 20 rue de Mogador 75009 Paris - Tél : 01 47 03 43 65nAcademy Le 04 juin 2014 Neuros -
Les Protocoles Temps Réels
Ezzaouia Mohamed
2. nAcademy Le 04 juin 2014 Neuros -
• DEFINITIONS:
RTP/RTCP pour le transport temps réel.
RTSP pour la gestion d’une session streaming.
SIP pour Session Initiation Protocol.
• APPLICATIONS:
• EXEMPLE : CODE
Plan
2
3. nAcademy Le 04 juin 2014 Neuros -
Qu’est ce que le transport de données en temps réel ?
•Satisfaire des contraintes de Temps.
DEFINITION : Le transport de données
3
4. nAcademy Le 04 juin 2014 Neuros -
• Quels sont les protocoles temps réels existant ?
→RTP : Real-Time Transport Protocol [ RFC 1889 ]
→RTCP : RTP Control Protocol [ RFC 1889 ]
→RTSP : Real-Time Streaming Protocol [ RFC 2326 ]
→SDP : Session Description Protocol [ RFC 2327 ]
→SIP: Session Initiation Protocol [ RFC 3265 ]
DEFINITION : Protocoles temps réels
4
5. nAcademy Le 04 juin 2014 Neuros -
• Protocoles au dessus de UDP adaptés au besoin temps réel
→RTP : pour l’acheminement des données.
→RTCP : pour échanger des messages de contrôles.
DEFINITION : RTP
5
RTP
UDP
6. nAcademy Le 04 juin 2014 Neuros -
• RTSP : REAL TIME STREAMING PROTOCOL
→Ciblé vers le multimédia.
→Fonctionnalités fournies au client :
url pour rechercher un média sur le serveur
Commande pour avancer, rembobiner, pause, play…
→Les requêtes de contrôle RTSP utilisent TCP.
→S’appuie sur RTP/RTCP.
DEFINITION : RTSP
6
RTSP
TCP
8. nAcademy Le 04 juin 2014 Neuros -
→SETUP : Le client demande l’allocation des ressources pour le
flux demandé
→PLAY : Le client demande la transmission
→PAUSE : Le client demande au serveur d’arrêter
momentanément le flux
→TEARDOWN : Le client demande au serveur de libérer les
ressources associées au flux
Déroulement de la méthodologie
8
9. nAcademy Le 04 juin 2014 Neuros -
• SIP : SESSION INITIATION PROTOCOL
les télécommunications multimédia.
la téléphonie par internet (La VoIP).
DEFINITION : SIP
9
10. nAcademy Le 04 juin 2014 Neuros -
APPLICATIONS : Média
10
11. nAcademy Le 04 juin 2014 Neuros -
APPLICATIONS : Réalité augmentée
11
12. nAcademy Le 04 juin 2014 Neuros -
APPLICATIONS : VoIP
12
13. nAcademy Le 04 juin 2014 Neuros -
APPLICATIONS : Visio
13
14. nAcademy Le 04 juin 2014 Neuros -
• La librairie rtsp.c :
/* send RTSP SETUP request */
static void rtsp_setup(CURL *curl, const char *uri, const char
*transport)
{
CURLcode res = CURLE_OK; printf("nRTSP: SETUP %sn", uri);
printf(" TRANSPORT %sn", transport);
my_curl_easy_setopt(curl, CURLOPT_RTSP_STREAM_URI, uri);
my_curl_easy_setopt(curl, CURLOPT_RTSP_TRANSPORT, transport);
my_curl_easy_setopt(curl, CURLOPT_RTSP_REQUEST,
(long)CURL_RTSPREQ_SETUP); my_curl_easy_perform(curl);
}
EXEMPLE : CODE : (1/7)
14
15. nAcademy Le 04 juin 2014 Neuros -
• /* send RTSP PLAY request */
static void rtsp_play(CURL *curl, const char *uri, const char
*range)
{
CURLcode res = CURLE_OK; printf("nRTSP: PLAY %sn", uri);
my_curl_easy_setopt(curl, CURLOPT_RTSP_STREAM_URI, uri);
my_curl_easy_setopt(curl, CURLOPT_RANGE, range);
my_curl_easy_setopt(curl, CURLOPT_RTSP_REQUEST,
(long)CURL_RTSPREQ_PLAY); my_curl_easy_perform(curl);
}
EXEMPLE : CODE : (2/7)
15
17. nAcademy Le 04 juin 2014 Neuros -
• /* main app */
int main(int argc, char * const argv[])
{ /* quelques traitement…*/
…
const char *url = argv[1];
char *uri = malloc(strlen(url) + 32);
…
/* encore quelques autre traitement …*/
…
/* request session description and write response to sdp file */
rtsp_describe(curl, uri, sdp_filename);
/* get media control attribute from sdp file */
get_media_control_attribute(sdp_filename, control);
EXEMPLE : CODE : (4/7)
17
18. nAcademy Le 04 juin 2014 Neuros -
/* setup media stream */
sprintf(uri, "%s/%s", url, control);
rtsp_setup(curl, uri, transport);
/* start playing media stream */
sprintf(uri, "%s/", url); rtsp_play(curl, uri, range);
printf("Playing video, press any key to stop ...");
_getch(); printf("n");
/* teardown session */
rtsp_teardown(curl, uri);
…
}
EXEMPLE : CODE : (5/7)
18
19. nAcademy Le 04 juin 2014 Neuros -
Streamer un fichier flv avec PHP :
<?php
$seekat = $_GET["position"]; // Position de début de lecture
$file = $_GET["file"]; // Fichier FLV à streamer
//Effacement du cache
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
EXEMPLE : CODE : (6/7)
19