Rtmp TServerSocket

Résolu
cs_askil2000 Messages postés 92 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 12 avril 2010 - 9 janv. 2008 à 15:48
cs_askil2000 Messages postés 92 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 12 avril 2010 - 30 oct. 2008 à 10:19
Bonjour,

Je me lance dans une application Serveur utilisant le protocole rtmp.
La manip est de remplacer un serveur flash (Flash Media Server) par mon appli delphi, en utilisant le composant TServerSocket.

J'ai déjà réussi à connecter mon client (en flash) et suis confronté certe au cryptage, mais aussi à la méthode de connexion.

Si qq'un a une piste, un bout de code, ou un moyen de m'encourager ?

Fin de trame reception dans l'evenement OnRead:

¢· x�8;�7;©�2;>ÓW�4;Ä�7;•�5;�1A;Óã�4;ÀÁ6�15;¯üþ- ’»xÙ.�7;4Å “ 0ðñ &_ l]‚Bk�5;è�1; �2;�1E;B·�5;¤õúþC
 Œ!0�16;�F;Ü�6;r�1B;X�4;9�E;�2;g�14;�1;%ê�1;ó�10;ÿQ �6;!¿wL.½wbÿËÿÈþi þ¸�17;w„ÿUÿÚ£?ö>o0¼Õí�5;R{8Ö™�5;îþÇ
ô?…0�3;�1;ç�14;�2;�7;connect?ð�3;�3;app�2;�8;dossierfms/�8;flashVer�2; WIN
9,0,47,0�6;swfUrl�2;ìurl�5;tcUrl�2;$rtmp://ip:port/dossierfms/�4;fpad�1; audioCodecs@ƒ8Ã
videoCodecs@_ videoFunction?ð�7;pageUrl�2;�1D;url �2; pseudo�6;

<del></del>

<del></del><del></del><del></del>
�3;�1;3�14;�2;�1A;FCSimpleConnect.sp.connect�5;�2;
pseudoƒ�2;�1D;FCConnectionLight.lum.connect�5;@Ÿ@C�1;:�14;�2;�1B;FCSetBandwidth.band.connect�5;@°�1D;@°�1D;C;�14;�2;�1C;FCSetBandwidth.band.setRates�5;@°�1D;@°�1D;Ã�2;�1C;FCSetBandwidth.band.setRates�5;@°�1D;@°�1D;C3�14;�2;�1A;FCSimpleConnect.sp.connect�5;�2;
pseudoC�1;�19;�14;�2;
createStream@�5;C)�13;�16;FCAVPresence.webcam.av�1;C(�14;�2;�1B;FCAVPresence.webcam.connect�5;C6�14;�2;�1D;FCSimpleConnect.sp.changeName�5;�2;
pseudo <del></del><del></del><del></del>
C�7;ÖH�14;�2;�6;_error@�5;�3;�4;code�2;�19;NetConnection.Call.Failed�5;level�2;�5;error

<del></del><del></del><del></del>Merci !!!

2 réponses

OcHre Messages postés 44 Date d'inscription mercredi 23 mars 2005 Statut Membre Dernière intervention 26 avril 2008
20 janv. 2008 à 14:03
Salut, je m'étais lancé il y a pas si longtemps dans la
programmation d'un client rtmp. Pour répondre partiellement à ta
question je précise que les flux ne sont absolument pas cryptés (du
moins pas nativement) ,  pour ce qui est de la méthode de
connexion elle est trés simple:


1) Le client en envoie un paquet de 1536 bytes. qui commence par 03.


2) Le serveur repond par un paquet de 2 x 1536 qui commence par 03 aussi.


3) Le client renvoie les 1536 premiers bytes du paquet envoyé par le
serveur  apres le premier byte (ici 03) ainsi que toutes les
informations nécessaires à la connexion. Ces informations dependent
evidemment du serveur mais je te conseille de sniffer des connexions
sur plusieurs serveurs differents tu devrais voir une structure commune
se dessiner.


4) Le serveur répond par un connection success (je simplifie ce n'est
evidemment pas un "string", le paquet à ici une structure etc. Fais un
dump d'une session sniffée et essaye de l'envoyer je pense que ca
devrait marcher ).


5) Le client envoie un paquet sendstartdata, même remarque que pour le
4, avec en plus un doute quant à l'obligation de ce paquet, bref
sniffing une fois de plus .


Pour le suite je suis à peu prés sur, mais je peux me tromper, que tout depend du serveur.


Voila j'espère avoir pu t'aider un minimum, pour la suite je te
conseille de fouiller sur www.osflash.org, tu trouveras pas mal de
détails concernant la structure des paquets, pas mal d'infos sur le
protocole AMF qui directement inspiré RTMP. Voir aussi le projet Red5.


PS: Pour les paquets initiaux du handshake j'ai simplifié a l'extrême
puisque la méthode utilisée pour générer un handshake semblable aux
clients et serveurs flash est maintenant connue, je ne l'ai pas
développée pour simplifier l'approche, et parcqu'elle n'est pas
indispensable pour établir une connexion,  mais tu peux la trouver
sur osflash sinon fais-le moi savoir et je la developperais ici.

Rions un peu en attendant la mort.
3
cs_askil2000 Messages postés 92 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 12 avril 2010
30 oct. 2008 à 10:19
Salut, merci de m'avoir éclairé sur ce sujet. Malheureusement je n'ai pas eu le temps de m'intéresser plus en détail à ce projet. J'espère reprendre à un moment une application client (flash) serveur (delphi) et pouvoir faire de la visioconférence, car les composants développés (FMS) sont de très bonne qualité.

Alex
0
Rejoignez-nous