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

Reply via email to