I have been using Red5 for some time now, and just now getting down and diry with the protocol coding for my client.
I have been debugging the RTMP protocol down to the bits lately. Namely I am building RTMP/AMF library in C# right now. I have pulled from other sources and have it working for my needs... with some hacks. Now the hacks are what I have questions about. createStream is foretold to work like this.... createstream(clientid, NULL) and you get back _result(clientid, NULL, streamid). The actual body message of such packets simply look like: [String 0x02] [length 2bytes]"createstream" [Number 0x00] (clientid) 0x4000 0000 0000 0000 [Null 0x05] [String 0x02] [length 2bytes] + "_result" [Number 0x00] (clientid) 0x4000 0000 0000 0000 [Null 0x05] [Number 0x00] (streamid) 0x3FF0 0000 0000 0000 This is what i send and indeed get back.... however... I have to send ClientID=0x4000000000000000, or i will get back ClientID=0x0. And no matter what i always get back StreamID=0x3FF0000000000000 even though the server is using streamid=1. I know it is because if I don't use 1, i can't publish, and i've gone as far as putting break points in into Red5 to see that its using 1, i can only get so far though as Mina takes over before sending and i haven't yet put the source for it in my debugger. BTW both those Number values are 64 bit which if converted to 32bit will = 0. 32bit being the size of the streamid in the header of course is why i mention it. has anyone seen this behavior, or know whats up? Most examples I've found on the internet always use 0x40..., obviously i know why now, but really... why agian? :) Thanks for the help, Bobby
_______________________________________________ osflash mailing list [email protected] http://osflash.org/mailman/listinfo/osflash_osflash.org
