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...
nAcademy Le 04 juin 2014 Neuros -
• DEFINITIONS:
 RTP/RTCP pour le transport temps réel.
 RTSP pour la gestion d’une ses...
nAcademy Le 04 juin 2014 Neuros -
Qu’est ce que le transport de données en temps réel ?
•Satisfaire des contraintes de Tem...
nAcademy Le 04 juin 2014 Neuros -
• Quels sont les protocoles temps réels existant ?
→RTP : Real-Time Transport Protocol [...
nAcademy Le 04 juin 2014 Neuros -
• Protocoles au dessus de UDP adaptés au besoin temps réel
→RTP : pour l’acheminement de...
nAcademy Le 04 juin 2014 Neuros -
• RTSP : REAL TIME STREAMING PROTOCOL
→Ciblé vers le multimédia.
→Fonctionnalités fourni...
nAcademy Le 04 juin 2014 Neuros -
Méthodologie
7
nAcademy Le 04 juin 2014 Neuros -
→SETUP : Le client demande l’allocation des ressources pour le
flux demandé
→PLAY : Le c...
nAcademy Le 04 juin 2014 Neuros -
• SIP : SESSION INITIATION PROTOCOL
 les télécommunications multimédia.
 la téléphonie...
nAcademy Le 04 juin 2014 Neuros -
APPLICATIONS : Média
10
nAcademy Le 04 juin 2014 Neuros -
APPLICATIONS : Réalité augmentée
11
nAcademy Le 04 juin 2014 Neuros -
APPLICATIONS : VoIP
12
nAcademy Le 04 juin 2014 Neuros -
APPLICATIONS : Visio
13
nAcademy Le 04 juin 2014 Neuros -
• La librairie rtsp.c :
/* send RTSP SETUP request */
static void rtsp_setup(CURL *curl,...
nAcademy Le 04 juin 2014 Neuros -
• /* send RTSP PLAY request */
static void rtsp_play(CURL *curl, const char *uri, const ...
nAcademy Le 04 juin 2014 Neuros -
• /* send RTSP TEARDOWN request */
static void rtsp_teardown(CURL *curl, const char *uri...
nAcademy Le 04 juin 2014 Neuros -
• /* main app */
int main(int argc, char * const argv[])
{ /* quelques traitement…*/
…
c...
nAcademy Le 04 juin 2014 Neuros -
/* setup media stream */
sprintf(uri, "%s/%s", url, control);
rtsp_setup(curl, uri, tran...
nAcademy Le 04 juin 2014 Neuros -
Streamer un fichier flv avec PHP :
<?php
$seekat = $_GET["position"]; // Position de déb...
nAcademy Le 04 juin 2014 Neuros -
// Ajout des bon headers
header("Content-Type: video/x-flv");
if($seekat != 0) {
print("...
nAcademy Le 04 juin 2014 Neuros -
• http://fr.wikipedia.org/wiki/Real-time_Transport_Protocol
• http://fr.wikipedia.org/wi...
nAcademy Le 04 juin 2014 Neuros -
Merci pour votre attention.
22
Prochain SlideShare
Chargement dans…5
×

Les protocoles temps réels

777 vues

Publié le

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)

Publié dans : Internet
0 commentaire
1 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
777
Sur SlideShare
0
Issues des intégrations
0
Intégrations
4
Actions
Partages
0
Téléchargements
0
Commentaires
0
J’aime
1
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Les protocoles temps réels

  1. 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. 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. 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. 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. 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. 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
  7. 7. nAcademy Le 04 juin 2014 Neuros - Méthodologie 7
  8. 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. 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. 10. nAcademy Le 04 juin 2014 Neuros - APPLICATIONS : Média 10
  11. 11. nAcademy Le 04 juin 2014 Neuros - APPLICATIONS : Réalité augmentée 11
  12. 12. nAcademy Le 04 juin 2014 Neuros - APPLICATIONS : VoIP 12
  13. 13. nAcademy Le 04 juin 2014 Neuros - APPLICATIONS : Visio 13
  14. 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. 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
  16. 16. nAcademy Le 04 juin 2014 Neuros - • /* send RTSP TEARDOWN request */ static void rtsp_teardown(CURL *curl, const char *uri) { CURLcode res = CURLE_OK; printf("nRTSP: TEARDOWN %sn", uri); my_curl_easy_setopt(curl, CURLOPT_RTSP_REQUEST, (long)CURL_RTSPREQ_TEARDOWN); my_curl_easy_perform(curl); } EXEMPLE : CODE : (3/7) 16
  17. 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. 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. 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
  20. 20. nAcademy Le 04 juin 2014 Neuros - // Ajout des bon headers header("Content-Type: video/x-flv"); if($seekat != 0) { print("FLV"); print(pack('C', 1 )); print(pack('C', 1 )); print(pack('N', 9 )); print(pack('N', 9 )); } $fh = fopen($file, "rb"); fseek($fh, $seekat); while (!feof($fh)) { print (fread($fh, 16384)); } fclose($fh); ?> EXEMPLE : CODE : (7/7) 20
  21. 21. nAcademy Le 04 juin 2014 Neuros - • http://fr.wikipedia.org/wiki/Real-time_Transport_Protocol • http://fr.wikipedia.org/wiki/Real_Time_Streaming_Protocol • http://fr.wikipedia.org/wiki/Session_Initiation_Protocol • http://level7systems.co.uk/en/blog/Click+to+Call+with+PHP-SIP • http://www.rap.prd.fr/pdf/technologie_streaming.pdf • http://www.c-p-f.org/php-Faire_du_streaming_en_PHP-a28.html • https://developers.google.com/youtube/v3/live/code_samples/php • http://www.jeuweb.org/showthread.php?tid=5057 • http://curl.haxx.se/libcurl/c/rtsp.html • http://net7mma.codeplex.com/ SOURCES : 21
  22. 22. nAcademy Le 04 juin 2014 Neuros - Merci pour votre attention. 22

×