From 73e0abb40ca1d999cb4ee0b9addcf1e0aa72636c Mon Sep 17 00:00:00 2001 From: Thulinma Date: Wed, 22 Jun 2011 00:14:31 +0200 Subject: [PATCH] Attempted RTMP fix --- Connector_RTMP/main.cpp | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/Connector_RTMP/main.cpp b/Connector_RTMP/main.cpp index 88ff46cf..59da9c73 100644 --- a/Connector_RTMP/main.cpp +++ b/Connector_RTMP/main.cpp @@ -279,22 +279,24 @@ void Connector_RTMP::parseChunk(){ if (tmpint & 0x400){fprintf(stderr, "AAC video support detected\n");} #endif Socket.write(RTMPStream::SendCTL(5, RTMPStream::snd_window_size));//send window acknowledgement size (msg 5) + Socket.write(RTMPStream::SendCTL(5, RTMPStream::snd_window_size));//send window acknowledgement size (msg 5) Socket.write(RTMPStream::SendUSR(0, 1));//send UCM StreamBegin (0), stream 1 //send a _result reply AMF::Object amfreply("container", AMF::AMF0_DDV_CONTAINER); amfreply.addContent(AMF::Object("", "_result"));//result success amfreply.addContent(amfdata.getContent(1));//same transaction ID amfreply.addContent(AMF::Object(""));//server properties - amfreply.getContentP(2)->addContent(AMF::Object("fmsVer", "FMS/3,5,4,1004")); - amfreply.getContentP(2)->addContent(AMF::Object("capabilities", (double)127)); - amfreply.getContentP(2)->addContent(AMF::Object("mode", (double)1)); + amfreply.getContentP(2)->addContent(AMF::Object("fmsVer", "FMS/3,0,1,123")); + amfreply.getContentP(2)->addContent(AMF::Object("capabilities", (double)31)); + //amfreply.getContentP(2)->addContent(AMF::Object("mode", (double)1)); amfreply.addContent(AMF::Object(""));//info amfreply.getContentP(3)->addContent(AMF::Object("level", "status")); amfreply.getContentP(3)->addContent(AMF::Object("code", "NetConnection.Connect.Success")); amfreply.getContentP(3)->addContent(AMF::Object("description", "Connection succeeded.")); + amfreply.getContentP(3)->addContent(AMF::Object("clientid", 1337)); amfreply.getContentP(3)->addContent(AMF::Object("objectEncoding", objencoding)); - amfreply.getContentP(3)->addContent(AMF::Object("data", AMF::AMF0_ECMA_ARRAY)); - amfreply.getContentP(3)->getContentP(4)->addContent(AMF::Object("version", "3,5,4,1004")); + //amfreply.getContentP(3)->addContent(AMF::Object("data", AMF::AMF0_ECMA_ARRAY)); + //amfreply.getContentP(3)->getContentP(4)->addContent(AMF::Object("version", "3,5,4,1004")); #if DEBUG >= 4 amfreply.Print(); #endif @@ -302,7 +304,7 @@ void Connector_RTMP::parseChunk(){ //send onBWDone packet - no clue what it is, but real server sends it... amfreply = AMF::Object("container", AMF::AMF0_DDV_CONTAINER); amfreply.addContent(AMF::Object("", "onBWDone"));//result - amfreply.addContent(AMF::Object("", (double)0));//zero + amfreply.addContent(amfdata.getContent(1));//same transaction ID amfreply.addContent(AMF::Object("", (double)0, AMF::AMF0_NULL));//null Socket.write(RTMPStream::SendChunk(3, 17, next.msg_stream_id, (char)0+amfreply.Pack())); parsed3 = true; @@ -431,7 +433,10 @@ void Connector_RTMP::parseChunk(){ if (tmpint & 0x400){fprintf(stderr, "AAC video support detected\n");} #endif Socket.write(RTMPStream::SendCTL(5, RTMPStream::snd_window_size));//send window acknowledgement size (msg 5) + Socket.write(RTMPStream::SendCTL(6, RTMPStream::rec_window_size));//send window acknowledgement size (msg 5) Socket.write(RTMPStream::SendUSR(0, 1));//send UCM StreamBegin (0), stream 1 + RTMPStream::chunk_snd_max = 4096; + Socket.write(RTMPStream::SendCTL(1, RTMPStream::chunk_snd_max));//send chunk size max (msg 1) //send a _result reply AMF::Object amfreply("container", AMF::AMF0_DDV_CONTAINER); amfreply.addContent(AMF::Object("", "_result"));//result success @@ -518,7 +523,7 @@ void Connector_RTMP::parseChunk(){ amfreply.getContentP(3)->addContent(AMF::Object("code", "NetStream.Play.Reset")); amfreply.getContentP(3)->addContent(AMF::Object("description", "Playing and resetting...")); amfreply.getContentP(3)->addContent(AMF::Object("details", "PLS")); - amfreply.getContentP(3)->addContent(AMF::Object("clientid", (double)1)); + amfreply.getContentP(3)->addContent(AMF::Object("clientid", (double)1337)); #if DEBUG >= 4 amfreply.Print(); #endif @@ -531,8 +536,7 @@ void Connector_RTMP::parseChunk(){ amfreply.getContentP(3)->addContent(AMF::Object("level", "status")); amfreply.getContentP(3)->addContent(AMF::Object("code", "NetStream.Play.Start")); amfreply.getContentP(3)->addContent(AMF::Object("description", "Playing!")); - amfreply.getContentP(3)->addContent(AMF::Object("details", "PLS")); - amfreply.getContentP(3)->addContent(AMF::Object("clientid", (double)1)); + amfreply.getContentP(3)->addContent(AMF::Object("clientid", (double)1337)); #if DEBUG >= 4 amfreply.Print(); #endif