Hi Have been trying to use your excellent library to connect up to a camera that is streaming RTSP/H264 unicast from a source i have no control over. I seem to heading in right direction but I am struggling with the last bit, getting the frame from the library so i can display it to the screen.
I have cloned testRTSPClient.cpp (using a non modified version assuringly i get packets from the video stream appearing in debug), below is modified version of continueAfterSETUP (have put in bold bits i have added), am i going in correct direction ? This also produces reassuring debug (added to bottom of email), am little worried about *The total received frame size exceed... *lines but whatever I change* *OutPacketBuffer::maxSize it seems to make no difference? To actually get the decoded frames I assumed I had to subclass * H264VideoStreamFramer *but cant see a way to actually get the frame, maybe implement new version of doGetNextFrame in class, but then processing stops as i cant call the base class version of continueReadProcessing as its private ? Any assistance would be appreciated . Perhaps if some sample code of retrieving a frame and rendering to the screen in any platform would help but i couldnt see any ? thanks in advance Neil void continueAfterSETUP(RTSPClient* rtspClient, int resultCode, char* resultString) { do { UsageEnvironment& env = rtspClient->envir(); // alias StreamClientState& scs = ((ourRTSPClient*)rtspClient)->scs; // alias if (resultCode != 0) { env << *rtspClient << "Failed to set up the \"" << *scs.subsession << "\" subsession: " << env.getResultMsg() << "\n"; break; } env << *rtspClient << "Set up the \"" << *scs.subsession << "\" subsession (client ports " << scs.subsession->clientPortNum() << "-" << scs.subsession->clientPortNum()+1 << ")\n"; * struct in_addr destinationAddress;* * destinationAddress.s_addr = our_inet_addr("0.0.0.0");* * * * const unsigned short rtpPortNum = 1234;* * const unsigned char ttl = 255;* * * * const Port rtpPort(rtpPortNum);* * * * Groupsock rtpGroupsock(env, destinationAddress, rtpPort, ttl);* * * * // Create a 'H264 Video RTP' sink from the RTP 'groupsock':* * OutPacketBuffer::maxSize = 100000;* * scs.subsession->sink = H264VideoRTPSink::createNew(env, &rtpGroupsock, 96);* * videoSource = H264VideoStreamFramer::createNew(env, scs.subsession->readSource());* // perhaps use your own custom "MediaSink" subclass instead if (scs.subsession->sink == NULL) { env << *rtspClient << "Failed to create a data sink for the \"" << *scs.subsession << "\" subsession: " << env.getResultMsg() << "\n"; break; } env << *rtspClient << "Created a data sink for the \"" << *scs.subsession << "\" subsession\n"; scs.subsession->miscPtr = rtspClient; // a hack to let subsession handle functions get the "RTSPClient" from the subsession scs.subsession->sink->startPlaying(*(*videoSource*), subsessionAfterPlaying, scs.subsession); // Also set a handler to be called if a RTCP "BYE" arrives for this subsession: if (scs.subsession->rtcpInstance() != NULL) { scs.subsession->rtcpInstance()->setByeHandler(subsessionByeHandler, scs.subsession); } } while (0); // Set up the next subsession, if any: setupNextSubsession(rtspClient); } *Opening connection to 192.168.42.1, port 554...* *...remote connection opened* *Sending request: DESCRIBE rtsp://192.168.42.1/AmbaStreamTest RTSP/1.0* ** *CSeq: 2* ** *User-Agent: drift (LIVE555 Streaming Media v2012.08.30)* ** *Accept: application/sdp* ** ** ** ** *Received 677 new bytes of response data.* *Received a complete DESCRIBE response:* *RTSP/1.0 200 OK* ** *CSeq: 2* ** *Date: Thu, Jan 01 1970 01:15:38 GMT* ** *Content-Base: rtsp://192.168.42.1/AmbaStreamTest/* ** *Content-Type: application/sdp* ** *Content-Length: 509* ** ** ** *v=0* ** *o=- 54670000 1 IN IP4 192.168.42.1* ** *s=Ambarella streaming* ** *i=Ambarella streaming* ** *t=0 0* ** *a=tool:Ambarella streaming 2012.03.12* ** *a=type:broadcast* ** *a=control:** ** *a=range:npt=0-* ** *a=x-qt-text-nam:Ambarella streaming* ** *a=x-qt-text-inf:Ambarella streaming* ** *m=video 0 RTP/AVP 96* ** *c=IN IP4 0.0.0.0* ** *b=AS:600* ** *a=rtpmap:96 H264/90000* ** *a=fmtp:96 packetization-mode=1;profile-level-id=4D4028;sprop-parameter-sets=AAAAASjuPIA=,AAAAASdNQCiaYoNj9gIgAAB9IAAdTByAAGmYAA0y9d5cZAADTMAAaZeu8uHcIhFBGAAAAA== * ** *a=control:track1* ** ** *[URL:"rtsp://192.168.42.1/AmbaStreamTest/"]: Got a SDP description:* *v=0* ** *o=- 54670000 1 IN IP4 192.168.42.1* ** *s=Ambarella streaming* ** *i=Ambarella streaming* ** *t=0 0* ** *a=tool:Ambarella streaming 2012.03.12* ** *a=type:broadcast* ** *a=control:** ** *a=range:npt=0-* ** *a=x-qt-text-nam:Ambarella streaming* ** *a=x-qt-text-inf:Ambarella streaming* ** *m=video 0 RTP/AVP 96* ** *c=IN IP4 0.0.0.0* ** *b=AS:600* ** *a=rtpmap:96 H264/90000* ** *a=fmtp:96 packetization-mode=1;profile-level-id=4D4028;sprop-parameter-sets=AAAAASjuPIA=,AAAAASdNQCiaYoNj9gIgAAB9IAAdTByAAGmYAA0y9d5cZAADTMAAaZeu8uHcIhFBGAAAAA== * ** *a=control:track1* ** ** *RTCPInstance[0x24eac0]::RTCPInstance()* *schedule(1.530479->1346841729.890146)* *[URL:"rtsp://192.168.42.1/AmbaStreamTest/"]: Initiated the "video/H264" subsession (client ports 59352-59353)* *Sending request: SETUP rtsp://192.168.42.1/AmbaStreamTest/track1 RTSP/1.0* ** *CSeq: 3* ** *User-Agent: drift (LIVE555 Streaming Media v2012.08.30)* ** *Transport: RTP/AVP;unicast;client_port=59352-59353* ** ** ** ** *Received 203 new bytes of response data.* *Received a complete SETUP response:* *RTSP/1.0 200 OK* ** *CSeq: 3* ** *Date: Thu, Jan 01 1970 01:15:38 GMT* ** *Transport: RTP/AVP;unicast;destination=192.168.42.3;source=192.168.42.1;client_port=59352-59353;server_port=6970-6971 * ** *Session: 5FAC6D41* ** ** ** ** *[URL:"rtsp://192.168.42.1/AmbaStreamTest/"]: Set up the "video/H264" subsession (client ports 59352-59353)* *[URL:"rtsp://192.168.42.1/AmbaStreamTest/"]: Created a data sink for the "video/H264" subsession* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *Sending request: PLAY rtsp://192.168.42.1/AmbaStreamTest/ RTSP/1.0* ** *CSeq: 4* ** *User-Agent: drift (LIVE555 Streaming Media v2012.08.30)* ** *Session: 5FAC6D41* ** *Range: npt=0.000-* ** ** ** ** *Received 189 new bytes of response data.* *Received a complete PLAY response:* *RTSP/1.0 200 OK* ** *CSeq: 4* ** *Date: Thu, Jan 01 1970 01:15:38 GMT* ** *Range: npt=0.000-* ** *Session: 5FAC6D41* ** *RTP-Info: url=rtsp:// 192.168.42.1/AmbaStreamTest/track1;seq=46686;rtptime=2944705573* ** ** ** ** *[URL:"rtsp://192.168.42.1/AmbaStreamTest/"]: Started playing session...* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *schedule(1.501818->1346841731.393142)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *MultiFramedRTPSource::doGetNextFrame1(): The total received frame size exceeds the client's buffer size (11). 110 bytes of trailing data will be dropped!* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)* *H264VideoStreamParser::parse() EXCEPTION (This is normal behavior - *not* an error)*
_______________________________________________ live-devel mailing list live-devel@lists.live555.com http://lists.live555.com/mailman/listinfo/live-devel