[Live-devel] RTSPServer.Error:The total received frame size exceeds the client's buffer size (40).1276 bytes of trailing data will be dropped
Ketan Gholap
ketangholap1990 at gmail.com
Thu Jul 5 23:57:59 PDT 2012
hello Sir!
I have made an application using live media 555 library. In this
application I'm receiving video stream
from my live media streamer application. Which in turns get stream from a
dvd player. In my server application I'm creating rtsp server in my main
program. And in same program I'm handling messages from anther client
application which sends me START_STREAM and STOP_STREAM messages. As per
client applications messages my server application creates a session to
receive stream from streamer application and also to send same stream to
client application. For first
time START and STOP_STREAM works fine but when client sends START_STREAM
next time, session is created by my server application but stream is not
received by client application. My application shows following messages on
screen.
MultiFramedRTPSource::doGetNextFrame1(): The total received frame size
exceeds the client's buffer size (40). 1276 bytes of trailing data will be
dropped!
sendRTPOverTCP: 1328 bytes over channel 0 (socket 932)
sendRTPOverTCP: completed
MultiFramedRTPSource::doGetNextFrame1(): The total received frame size
exceeds the client's buffer size (19). 1297 bytes of trailing data will be
dropped!
when I go though MultiFramedRTPSource::doGetNextFrame1() function in
MultiFramedRTPSource.cpp file I come to know that
in this function "fNumTruncatedBytes" variable holds Truncated Bytes and
comes into feature Second time when creating session.
I dont know how to handle this error.
Can anybody help?
Code is given below.
int StartRtspServer()
{
// Begin by setting up our usage environment:
TaskScheduler* scheduler = BasicTaskScheduler::createNew();
env = BasicUsageEnvironment::createNew(*scheduler);
UserAuthenticationDatabase* authDB = NULL;
#ifdef ACCESS_CONTROL
// To implement client access control to the RTSP server, do the following:
authDB = new UserAuthenticationDatabase;
authDB->addUserRecord("username1", "password1"); // replace these with
real strings
// Repeat the above with each <username>, <password> that you wish to allow
// access to the server.
#endif
// Create the RTSP server:
wLog->WriteInfoLog("Creating RTSP server..");
*env << "Creating RTSP server.."<<"\n.";
portNumBits rtspServerPortNum = 554;
rtspServer = RTSPServer::createNew(*env,rtspServerPortNum, authDB);
if (rtspServer == NULL)
{
*env << "Failed to create RTSP server: " <<env->getResultMsg()<<"\n";
return 0;
}
else
{
*env << "Created RTSP server.."<<"\n.";
}
}
{
case START_STREAM:
Th1 = CreateThread(NULL,0, (LPTHREAD_START_ROUTINE)StartStreamingThread,0,
0, &Tid1);
if(Th1 == NULL)
{
cout<<"Error while creating MessageReplyThread .\n";
}
Sleep(1000);
break;
case STOP_STREAM:
if( Th1)
{ // Terminate rtsp server thread
cout<<"\nRemoving Server Media Session\n";
rtspServer->removeServerMediaSession(sms);
sms=NULL;
cout<<"\nClosing live media server Thread\n";
BOOL bVal =TerminateThread(Th1, 0);
if ( bVal )
{
cout<<"\nClosing thread handle..\n";
CloseHandle(ThreadHandle[0]);
}
Th1 = NULL;
}
Sleep(2000);
break;
}
DWORD WINAPI StartStreamingThread(void)
{
*env <<"Entering in StartStreamingThread()\n";
char const* streamName = "stream1";
char const* inputAddressStr = MulticastIp;
portNumBits const inputPortNum = StreamerPort;
Boolean const inputStreamIsRawUDP = False;
sms = ServerMediaSession::createNew(*env, streamName,
streamName,descriptionString);
sms->addSubsession(MPEG2TransportUDPServerMediaSubsession::createNew(*env,
inputAddressStr, inputPortNum, inputStreamIsRawUDP));
rtspServer->addServerMediaSession(sms);
char* url = rtspServer->rtspURL(sms);
*env << "\n\"" << streamName << "\" stream, from a UDP Transport Stream
input source \n\t(";
if (inputAddressStr != NULL)
{
*env << "IP multicast address " << inputAddressStr << ",";
}
else
{
*env << "unicast;";
}
*env << " port " << inputPortNum << ")\n";
*env << "Play this stream using the URL \"" << url << "\"\n";
delete[] url;
if (rtspServer->setUpTunnelingOverHTTP(TunnelingPort) ||
rtspServer->setUpTunnelingOverHTTP(TunnelingPort) ||
rtspServer->setUpTunnelingOverHTTP(TunnelingPort))
{
*env << "\n(We use port " << rtspServer->httpServerPortNum() << " for
optional RTSP-over-HTTP tunneling.)\n";
}
else
{
*env << "\n(RTSP-over-HTTP tunneling is not available.)\n";
}
env->taskScheduler().doEventLoop(); // does not return
return 0; // only to prevent compiler warning
}
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.live555.com/pipermail/live-devel/attachments/20120706/b5bfd09a/attachment.html>
More information about the live-devel
mailing list