SlideShare ist ein Scribd-Unternehmen logo
1 von 22
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
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
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
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
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
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
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 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
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
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, 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
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
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
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
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
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
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
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
nAcademy Le 04 juin 2014 Neuros -
Merci pour votre attention.
22

Weitere ähnliche Inhalte

Andere mochten auch

Presentaciónasdf
PresentaciónasdfPresentaciónasdf
Presentaciónasdfmoritau_u
 
Comunidad de hoy
Comunidad de hoyComunidad de hoy
Comunidad de hoyDoraine2014
 
01 el gobernador militar bermudez de castro
01 el gobernador militar bermudez de castro01 el gobernador militar bermudez de castro
01 el gobernador militar bermudez de castroaulamilitar
 
19 castellonenses muertos en los campos nazis de exterminio
19 castellonenses muertos en los campos nazis de exterminio19 castellonenses muertos en los campos nazis de exterminio
19 castellonenses muertos en los campos nazis de exterminioaulamilitar
 
Dispositivos perifericos flor
Dispositivos perifericos florDispositivos perifericos flor
Dispositivos perifericos flordadf100
 
Fracasos tecnologicos
Fracasos tecnologicosFracasos tecnologicos
Fracasos tecnologicosANTHONYRVJ
 
Gaceta del aula 137
Gaceta del aula 137Gaceta del aula 137
Gaceta del aula 137aulamilitar
 
Educación Ambiental
Educación AmbientalEducación Ambiental
Educación AmbientalRosaura10
 
Carac.aguas(act.2)
Carac.aguas(act.2)Carac.aguas(act.2)
Carac.aguas(act.2)Jaanethgleez
 
Clase presentación
Clase presentaciónClase presentación
Clase presentaciónmorayclaw
 
Actividad 3 sujey
Actividad 3 sujeyActividad 3 sujey
Actividad 3 sujeySujey A'g
 
100% vence avec philippe perret notre programme pour faire gagner vence
100% vence avec philippe perret notre programme pour faire gagner vence100% vence avec philippe perret notre programme pour faire gagner vence
100% vence avec philippe perret notre programme pour faire gagner vencePerret2014
 
22 el brigadier francisco vallés roselló
22 el brigadier francisco vallés roselló22 el brigadier francisco vallés roselló
22 el brigadier francisco vallés rosellóaulamilitar
 
El proceso de comunicación
El proceso de comunicaciónEl proceso de comunicación
El proceso de comunicaciónarmandomv0704
 
02 amado granell mesado
02 amado granell mesado02 amado granell mesado
02 amado granell mesadoaulamilitar
 
WORD; SEGUNDA PARTE DEL PROYECTO
WORD; SEGUNDA PARTE DEL PROYECTOWORD; SEGUNDA PARTE DEL PROYECTO
WORD; SEGUNDA PARTE DEL PROYECTOhenrygarcia0301
 

Andere mochten auch (20)

Presentaciónasdf
PresentaciónasdfPresentaciónasdf
Presentaciónasdf
 
PARÉ
PARÉPARÉ
PARÉ
 
Comunidad de hoy
Comunidad de hoyComunidad de hoy
Comunidad de hoy
 
01 el gobernador militar bermudez de castro
01 el gobernador militar bermudez de castro01 el gobernador militar bermudez de castro
01 el gobernador militar bermudez de castro
 
19 castellonenses muertos en los campos nazis de exterminio
19 castellonenses muertos en los campos nazis de exterminio19 castellonenses muertos en los campos nazis de exterminio
19 castellonenses muertos en los campos nazis de exterminio
 
Dispositivos perifericos flor
Dispositivos perifericos florDispositivos perifericos flor
Dispositivos perifericos flor
 
Fracasos tecnologicos
Fracasos tecnologicosFracasos tecnologicos
Fracasos tecnologicos
 
Gaceta del aula 137
Gaceta del aula 137Gaceta del aula 137
Gaceta del aula 137
 
Educación Ambiental
Educación AmbientalEducación Ambiental
Educación Ambiental
 
Carac.aguas(act.2)
Carac.aguas(act.2)Carac.aguas(act.2)
Carac.aguas(act.2)
 
Clase presentación
Clase presentaciónClase presentación
Clase presentación
 
EsiGate réunion dev #3 30-09-2013
EsiGate réunion dev #3 30-09-2013EsiGate réunion dev #3 30-09-2013
EsiGate réunion dev #3 30-09-2013
 
Actividad 3 sujey
Actividad 3 sujeyActividad 3 sujey
Actividad 3 sujey
 
Construccion
ConstruccionConstruccion
Construccion
 
100% vence avec philippe perret notre programme pour faire gagner vence
100% vence avec philippe perret notre programme pour faire gagner vence100% vence avec philippe perret notre programme pour faire gagner vence
100% vence avec philippe perret notre programme pour faire gagner vence
 
22 el brigadier francisco vallés roselló
22 el brigadier francisco vallés roselló22 el brigadier francisco vallés roselló
22 el brigadier francisco vallés roselló
 
El proceso de comunicación
El proceso de comunicaciónEl proceso de comunicación
El proceso de comunicación
 
02 amado granell mesado
02 amado granell mesado02 amado granell mesado
02 amado granell mesado
 
OdontyMax - Manual de Marca
OdontyMax - Manual de MarcaOdontyMax - Manual de Marca
OdontyMax - Manual de Marca
 
WORD; SEGUNDA PARTE DEL PROYECTO
WORD; SEGUNDA PARTE DEL PROYECTOWORD; SEGUNDA PARTE DEL PROYECTO
WORD; SEGUNDA PARTE DEL PROYECTO
 

Ähnlich wie Les protocles temps reels

Présentation Système d’exploitation Open Source Lepton - MEITO Mai 2014
Présentation Système d’exploitation Open Source Lepton - MEITO Mai 2014Présentation Système d’exploitation Open Source Lepton - MEITO Mai 2014
Présentation Système d’exploitation Open Source Lepton - MEITO Mai 2014O10ée
 
infrastructure de données et de service THEIA et calcul à distance
infrastructure de données et de service THEIA et calcul à distance infrastructure de données et de service THEIA et calcul à distance
infrastructure de données et de service THEIA et calcul à distance Desconnets Jean-Christophe
 
Firewall opensource et gestion de configuration pour l'infrastructure
Firewall opensource et gestion de configuration pour l'infrastructureFirewall opensource et gestion de configuration pour l'infrastructure
Firewall opensource et gestion de configuration pour l'infrastructureJohan Moreau
 
OpenStack dans la pratique
OpenStack dans la pratiqueOpenStack dans la pratique
OpenStack dans la pratiqueOsones
 
Présentation IPV6 ANWARNET 2010
Présentation IPV6 ANWARNET 2010Présentation IPV6 ANWARNET 2010
Présentation IPV6 ANWARNET 2010Fadi Gouasmia
 
Formation libre OpenStack en Français
Formation libre OpenStack en FrançaisFormation libre OpenStack en Français
Formation libre OpenStack en FrançaisOsones
 
Zenika matinale spark-zeppelin_ml
Zenika matinale spark-zeppelin_mlZenika matinale spark-zeppelin_ml
Zenika matinale spark-zeppelin_mlZenika
 
Retour d'expérience : Mise en place de l'ENT v4 à l'UPMC
Retour d'expérience : Mise en place de l'ENT v4 à l'UPMCRetour d'expérience : Mise en place de l'ENT v4 à l'UPMC
Retour d'expérience : Mise en place de l'ENT v4 à l'UPMCLudovic A
 
2008 - Eyrolles - Reseaux et Telecom.pdf
2008 - Eyrolles - Reseaux et Telecom.pdf2008 - Eyrolles - Reseaux et Telecom.pdf
2008 - Eyrolles - Reseaux et Telecom.pdfMartinTraore
 
L’exploitation d’OSM par l’AURH et ses avantages pour le projet européen « We...
L’exploitation d’OSM par l’AURH et ses avantages pour le projet européen « We...L’exploitation d’OSM par l’AURH et ses avantages pour le projet européen « We...
L’exploitation d’OSM par l’AURH et ses avantages pour le projet européen « We...Jean-François MARY
 
Dw723 g formation-programmation-pour-infosphere-streams-v3-avec-spl
Dw723 g formation-programmation-pour-infosphere-streams-v3-avec-splDw723 g formation-programmation-pour-infosphere-streams-v3-avec-spl
Dw723 g formation-programmation-pour-infosphere-streams-v3-avec-splCERTyou Formation
 
Certifier son système d’archivage marque NF 461, le plus dur est de s’y mettr...
Certifier son système d’archivage marque NF 461, le plus dur est de s’y mettr...Certifier son système d’archivage marque NF 461, le plus dur est de s’y mettr...
Certifier son système d’archivage marque NF 461, le plus dur est de s’y mettr...Christian Dubourg
 
Architecture d'annuaire hautement disponible avec OpenLDAP
Architecture d'annuaire hautement disponible avec OpenLDAPArchitecture d'annuaire hautement disponible avec OpenLDAP
Architecture d'annuaire hautement disponible avec OpenLDAPLINAGORA
 
Integrons en mode continu
Integrons en mode continuIntegrons en mode continu
Integrons en mode continuneuros
 
Journée DevOps : Puppet, un outil pour les installer tous
Journée DevOps : Puppet, un outil pour les installer tousJournée DevOps : Puppet, un outil pour les installer tous
Journée DevOps : Puppet, un outil pour les installer tousPublicis Sapient Engineering
 
NS3 - Exploitation.pptx
NS3 - Exploitation.pptxNS3 - Exploitation.pptx
NS3 - Exploitation.pptxSamirAwad14
 

Ähnlich wie Les protocles temps reels (20)

Présentation Système d’exploitation Open Source Lepton - MEITO Mai 2014
Présentation Système d’exploitation Open Source Lepton - MEITO Mai 2014Présentation Système d’exploitation Open Source Lepton - MEITO Mai 2014
Présentation Système d’exploitation Open Source Lepton - MEITO Mai 2014
 
Présentation de PHP
Présentation de PHPPrésentation de PHP
Présentation de PHP
 
infrastructure de données et de service THEIA et calcul à distance
infrastructure de données et de service THEIA et calcul à distance infrastructure de données et de service THEIA et calcul à distance
infrastructure de données et de service THEIA et calcul à distance
 
Firewall opensource et gestion de configuration pour l'infrastructure
Firewall opensource et gestion de configuration pour l'infrastructureFirewall opensource et gestion de configuration pour l'infrastructure
Firewall opensource et gestion de configuration pour l'infrastructure
 
OpenStack dans la pratique
OpenStack dans la pratiqueOpenStack dans la pratique
OpenStack dans la pratique
 
Présentation IPV6 ANWARNET 2010
Présentation IPV6 ANWARNET 2010Présentation IPV6 ANWARNET 2010
Présentation IPV6 ANWARNET 2010
 
Formation libre OpenStack en Français
Formation libre OpenStack en FrançaisFormation libre OpenStack en Français
Formation libre OpenStack en Français
 
Zenika matinale spark-zeppelin_ml
Zenika matinale spark-zeppelin_mlZenika matinale spark-zeppelin_ml
Zenika matinale spark-zeppelin_ml
 
Retour d'expérience : Mise en place de l'ENT v4 à l'UPMC
Retour d'expérience : Mise en place de l'ENT v4 à l'UPMCRetour d'expérience : Mise en place de l'ENT v4 à l'UPMC
Retour d'expérience : Mise en place de l'ENT v4 à l'UPMC
 
2008 - Eyrolles - Reseaux et Telecom.pdf
2008 - Eyrolles - Reseaux et Telecom.pdf2008 - Eyrolles - Reseaux et Telecom.pdf
2008 - Eyrolles - Reseaux et Telecom.pdf
 
L’exploitation d’OSM par l’AURH et ses avantages pour le projet européen « We...
L’exploitation d’OSM par l’AURH et ses avantages pour le projet européen « We...L’exploitation d’OSM par l’AURH et ses avantages pour le projet européen « We...
L’exploitation d’OSM par l’AURH et ses avantages pour le projet européen « We...
 
Dw723 g formation-programmation-pour-infosphere-streams-v3-avec-spl
Dw723 g formation-programmation-pour-infosphere-streams-v3-avec-splDw723 g formation-programmation-pour-infosphere-streams-v3-avec-spl
Dw723 g formation-programmation-pour-infosphere-streams-v3-avec-spl
 
REX Openshift à la Poste
REX Openshift à la PosteREX Openshift à la Poste
REX Openshift à la Poste
 
Certifier son système d’archivage marque NF 461, le plus dur est de s’y mettr...
Certifier son système d’archivage marque NF 461, le plus dur est de s’y mettr...Certifier son système d’archivage marque NF 461, le plus dur est de s’y mettr...
Certifier son système d’archivage marque NF 461, le plus dur est de s’y mettr...
 
Openerp
OpenerpOpenerp
Openerp
 
Architecture d'annuaire hautement disponible avec OpenLDAP
Architecture d'annuaire hautement disponible avec OpenLDAPArchitecture d'annuaire hautement disponible avec OpenLDAP
Architecture d'annuaire hautement disponible avec OpenLDAP
 
Integrons en mode continu
Integrons en mode continuIntegrons en mode continu
Integrons en mode continu
 
OpenNMS
OpenNMSOpenNMS
OpenNMS
 
Journée DevOps : Puppet, un outil pour les installer tous
Journée DevOps : Puppet, un outil pour les installer tousJournée DevOps : Puppet, un outil pour les installer tous
Journée DevOps : Puppet, un outil pour les installer tous
 
NS3 - Exploitation.pptx
NS3 - Exploitation.pptxNS3 - Exploitation.pptx
NS3 - Exploitation.pptx
 

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
  • 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