Your SlideShare is downloading. ×
Les protocoles temps réels
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Les protocoles temps réels

171
views

Published on

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)

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)

Published in: Internet

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
171
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 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
  • 7. nAcademy Le 04 juin 2014 Neuros - Méthodologie 7
  • 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
  • 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. 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
  • 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. 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. nAcademy Le 04 juin 2014 Neuros - Merci pour votre attention. 22