#include #include #include #include #include #include #include #include #include #include #include #include //rtsp://krabs:1935/vod/gear1.mp4 namespace Analysers { int analyseRTP(){ Socket::Connection conn("localhost", 554, true); //Socket::Connection conn("krabs", 1935, true); HTTP::Parser HTTP_R, HTTP_S;//HTTP Receiver en HTTP Sender. int step = 0; /*1 = sent describe 2 = recd describe 3 = sent setup 4 = received setup 5 = sent play"*/ std::vector tracks; std::vector connections; unsigned int trackIt = 0; while (conn.connected()){ // std::cerr << "loopy" << std::endl; if(step == 0){ HTTP_S.protocol = "RTSP/1.0"; HTTP_S.method = "DESCRIBE"; //rtsp://krabs:1935/vod/gear1.mp4 //rtsp://localhost/g1 HTTP_S.url = "rtsp://localhost/steers"; //HTTP_S.url = "rtsp://krabs:1935/vod/steers.mp4"; HTTP_S.SetHeader("CSeq",1); HTTP_S.SendRequest(conn); step++; }else if(step == 2){ std::cerr <<"setup " << tracks[trackIt] << std::endl; HTTP_S.method = "SETUP"; HTTP_S.url = "rtsp://localhost/steers/" + tracks[trackIt]; //HTTP_S.url = "rtsp://krabs:1935/vod/steers.mp4/" + tracks[trackIt]; HTTP_S.SetHeader("CSeq",2+trackIt); std::stringstream ss; ss << "RTP/steersVP;unicast;client_port="<< 20000 + 2*trackIt<<"-"<< 20001 + 2*trackIt; HTTP_S.SetHeader("Transport",ss.str());//make client ports, 4200 + 2*offset trackIt++; step++; HTTP_S.SendRequest(conn); std::cerr << "step " << step << "/\\"<< ss.str()<getPayloadType() == 97){ int h264type = (int)(connections[cx].data[12] & 0x1f); std::cout << h264type << " - "; if(h264type == 0){ std::cout << "unspecified - "; }else if(h264type == 1){ std::cout << "Coded slice of a non-IDR picture - "; }else if(h264type == 2){ std::cout << "Coded slice data partition A - "; }else if(h264type == 3){ std::cout << "Coded slice data partition B - "; }else if(h264type == 4){ std::cout << "Coded slice data partition C - "; }else if(h264type == 5){ std::cout << "Coded slice of an IDR picture - "; }else if(h264type == 6){ std::cout << "Supplemental enhancement information (SEI) - "; }else if(h264type == 7){ std::cout << "Sequence parameter set - "; }else if(h264type == 8){ std::cout << "Picture parameter set - "; }else if(h264type == 9){ std::cout << "Access unit delimiter - "; }else if(h264type == 10){ std::cout << "End of sequence - "; }else if(h264type == 11){ std::cout << "End of stream - "; }else if(h264type == 12){ std::cout << "Filler data - "; }else if(h264type == 13){ std::cout << "Sequence parameter set extension - "; }else if(h264type == 14){ std::cout << "Prefix NAL unit - "; }else if(h264type == 15){ std::cout << "Subset sequence parameter set - "; }else if(h264type == 16){ std::cout << "Reserved - "; }else if(h264type == 17){ std::cout << "Reserved - "; }else if(h264type == 18){ std::cout << "Reserved - "; }else if(h264type == 19){ std::cout << "Coded slice of an auxiliary coded picture without partitioning - "; }else if(h264type == 20){ std::cout << "Coded slice extension - "; }else if(h264type == 21){ std::cout << "Reserved - "; }else if(h264type == 22){ std::cout << "Reserved - "; }else if(h264type == 23){ std::cout << "Reserved - "; }else if(h264type == 24){ std::cout << "stap a - "; }else if(h264type == 25){ std::cout << "stap b - "; }else if(h264type == 26){ std::cout << "mtap16 - "; }else if(h264type == 27){ std::cout << "mtap24 - "; }else if(h264type == 28){ std::cout << "fu a - "; }else if(h264type == 29){ std::cout << "fu b - "; }else if(h264type == 30){ std::cout << "Unspecified - "; }else if(h264type == 31){ std::cout << "Unspecified - "; } for(unsigned int i = 13 ; i < connections[cx].data_len;i++){ std::cout << std::hex <