From sivrumit at yahoo.com Mon Feb 1 01:26:48 2010 From: sivrumit at yahoo.com (abra kadabra) Date: Mon, 1 Feb 2010 01:26:48 -0800 (PST) Subject: [Live-devel] memory sink Message-ID: <515137.35244.qm@web32203.mail.mud.yahoo.com> Hi, I want to be able to access every frame that arrived from rtp just as the packets arrive from rtp. Frames include i-p(-b) frames; sequence parameter set, picture parameter set frames for h264. I looked for a way to do this using existing classes (especially sink classes) but could not find a direct way. Existing implementations handle frames on a high level and do not give access to raw data in any way, I guess. For that purpose, I made a memory sink class (inspired from filesink) that inherits mediasink class and calls an abstract class memorysinkcallable's onPacket method. when I want a class to be notified on packet arrive, I just make that class inherit memorysinkcallable and implement onPacket method. Even though that works for me, with this approach I need to have one more thread to receive frames from rtp which loops in env->taskScheduler().doEventLoop(). I was wondering if that was the right approach. Since sink classes do what I've implemented internally, I have doubts about my design. Could someone evaluate this approach please? Thanks in advance, Umit Since I can't upload attachments right now, I am writing classes down here. Sorry for the inconvenience. HEADER FILE: #ifndef MEMORYSINK_H_ #define MEMORYSINK_H_ #include "MediaSink.hh" typedef void (callBackFunc)(unsigned char *frameData, uint32_t frameSize); // classes which chould be notified when new packet arrives should inherit this abstract class class MemorySinkCallable { friend class MemorySink; private: virtual callBackFunc onPacket = 0; }; class MemorySink: public MediaSink { public: // c++: this calls callable's onpacket method on packet arrive. static MemorySink* createNew(UsageEnvironment& env, MemorySinkCallable* callable, uint32_t bufferSize = 20000); // c: this calls function pcallback on packet arrive //static MemorySink* createNew(UsageEnvironment& env, callBackFunc pCallBack, uint32_t bufferSize = 20000); // "bufferSize" should be at least as large as the largest expected // input frame. void addData(unsigned char* data, uint32_t dataSize); protected: //MemorySink(UsageEnvironment& env, callBackFunc pCallBack, uint32_t bufferSize); MemorySink(UsageEnvironment& env, MemorySinkCallable* callable, uint32_t bufferSize); virtual ~MemorySink(); protected: static void afterGettingFrame(void* clientData, unsigned frameSize, unsigned /*numTruncatedBytes*/, struct timeval /*presentationTime*/, unsigned /*durationInMicroseconds*/); virtual void afterGettingFrame1(uint32_t frameSize); unsigned char* fBuffer; unsigned fBufferSize; //callBackFunc* pCallBackOnFrame; MemorySinkCallable* pCallable; private: virtual Boolean continuePlaying(); }; #endif /* MEMORYSINK_H_ */ SOURCE FILE: #include "MemorySink.h" #include "GroupsockHelper.hh" #include "OutputFile.hh" void MemorySink::afterGettingFrame1(uint32_t frameSize) { addData(fBuffer, frameSize); // Then try getting the next frame: continuePlaying(); } MemorySink::~MemorySink() { delete[] fBuffer; } /*MemorySink *MemorySink::createNew(UsageEnvironment & env, callBackFunc pCallBack, uint32_t bufferSize) { return new MemorySink(env, pCallBack, bufferSize); }*/ MemorySink *MemorySink::createNew(UsageEnvironment & env, MemorySinkCallable* callable, uint32_t bufferSize) { return new MemorySink(env, callable, bufferSize); } /*MemorySink::MemorySink(UsageEnvironment & env, callBackFunc* pCallBack, uint32_t bufferSize) : MediaSink(env), fBufferSize(bufferSize), pCallBackOnFrame(pCallBack) { fBuffer = new unsigned char[bufferSize]; }*/ MemorySink::MemorySink(UsageEnvironment & env, MemorySinkCallable* callable, uint32_t bufferSize) : MediaSink(env), fBufferSize(bufferSize), pCallable(callable) { fBuffer = new unsigned char[bufferSize]; } void MemorySink::addData(unsigned char *data, uint32_t dataSize) { // call callbackfunc to notify about new frame /*if ((pCallBackOnFrame != NULL) && (data != NULL)) { (*pCallBackOnFrame)(data, dataSize);*/ if(pCallable != NULL && (data != NULL)) { pCallable->onPacket(data, dataSize); data = NULL; dataSize = 0; } } void MemorySink::afterGettingFrame(void* clientData, unsigned frameSize, unsigned /*numTruncatedBytes*/, struct timeval /*presentationTime*/, unsigned /*durationInMicroseconds*/) { MemorySink* sink = (MemorySink*) clientData; sink->afterGettingFrame1(frameSize); } Boolean MemorySink::continuePlaying() { if (fSource == NULL) { return False; } fSource->getNextFrame(fBuffer, fBufferSize, afterGettingFrame, this, onSourceClosure, this); return True; } -------------- next part -------------- An HTML attachment was scrubbed... URL: From sridhar.sontha at yahoo.co.in Mon Feb 1 02:14:00 2010 From: sridhar.sontha at yahoo.co.in (Sridhar Sontha) Date: Mon, 1 Feb 2010 15:44:00 +0530 (IST) Subject: [Live-devel] regarding "MPEG2TransportStreamIndexer" in the "\testProgs" In-Reply-To: Message-ID: <8293.52949.qm@web94703.mail.in2.yahoo.com> Dear Ross, Thanks for the quick reply. I tried to uploaded the "Sample.ts" file of size 21.5MB.Sorry,I am not able to upload the above file in any of the free hosting websites. :(I get network connection is lost error when I try to upload. Uploading time is more than 1hr. Note : This is what I got when I executed MPEG2TransportStreamIndexer ./MPEG2TransportStreamIndexer ?/root/Sridhar/Proc/Sample.ts(21.5MB) Output : Writing index file "/root/Sridhar/Proc/Sample.tsx"...ERROR: parse buffer full; increase MAX_FRAME_SIZE...done Note : If I run it with file size say 25MB,the Sample.tsx size app. is : 0.5MB.?? ? ? ? ?If the same executable is run with file size of 30MB, Ironically,the Sample.tsx file size would be little lesser than 0.5MB. Can you justify this? Thanks,Sridhar Thanks, Sridhar --- On Mon, 1/2/10, Ross Finlayson wrote: From: Ross Finlayson Subject: Re: [Live-devel] regarding "MPEG2TransportStreamIndexer" in the "\testProgs" To: "LIVE555 Streaming Media - development & use" Date: Monday, 1 February, 2010, 12:18 PM >???The above executable "MPEG2TransportStreamIndexer" gives me an error and exits when I run it with input TS file of size say 5MB. Please put an example Transport Stream file (that fails for you) on a publically-accessible web (or FTP) server, and post the URL (not the file itself) to this mailing list, so I can download it and test it. -- Ross Finlayson Live Networks, Inc. http://www.live555.com/ _______________________________________________ live-devel mailing list live-devel at lists.live555.com http://lists.live555.com/mailman/listinfo/live-devel Your Mail works best with the New Yahoo Optimized IE8. Get it NOW! http://downloads.yahoo.com/in/internetexplorer/ -------------- next part -------------- An HTML attachment was scrubbed... URL: From jnoring at logitech.com Mon Feb 1 09:21:29 2010 From: jnoring at logitech.com (Jeremy Noring) Date: Mon, 1 Feb 2010 09:21:29 -0800 Subject: [Live-devel] Patch to put RTSPClient socket back to blocking Message-ID: <988ed6931002010921h23b96cdcq273a238de8455fdd@mail.gmail.com> Here's the patch to set the RTSPClient socket back to blocking if the client submits a timeout (in the event of a timeout, the socket was being set to non-blocking, but the author of that patch forgot to set it back to block). Let me know if you have questions. -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: GroupsockHelper_hh Type: application/octet-stream Size: 554 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: GroupsockHelper_cpp Type: application/octet-stream Size: 884 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: RTSPClient_cpp Type: application/octet-stream Size: 2664 bytes Desc: not available URL: From ansary858 at hotmail.com Tue Feb 2 00:31:14 2010 From: ansary858 at hotmail.com (ansary mohamed) Date: Tue, 2 Feb 2010 16:31:14 +0800 Subject: [Live-devel] DeviceSource problem Message-ID: Hi , I have recently started using live555 for my streaming needs. I successfully implemented streaming stored h.264 file over RTSP. I need to stream live h.264 video over RTSP. I read the FAqs and implemented the DeviceSource class. My DeviceSource class reads data from a socket and stores it into a buffer which i modelled it after wis streamer. When i run the program, I am getting segmentation fault. I have attached the entire modified source code for reference. I would appreciate it if someone can point where i am going wrong. Regards Ansary _________________________________________________________________ Hotmail: Trusted email with Microsoft?s powerful SPAM protection. https://signup.live.com/signup.aspx?id=60969 -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: liveMedia.tar.gz Type: application/x-gzip Size: 1133770 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: mediaServer.tar.gz Type: application/x-gzip Size: 2188519 bytes Desc: not available URL: From ziyad.sharaf at gmail.com Tue Feb 2 08:39:57 2010 From: ziyad.sharaf at gmail.com (ziyad sharafudheen) Date: Tue, 2 Feb 2010 22:09:57 +0530 Subject: [Live-devel] WM-DRM Message-ID: <8eb8e71d1002020839k16a2e29ej6e0ce1ee101295f0@mail.gmail.com> Hi, We are using live555 server for VOD streaming currently the media files being in transport stream format. We have a requirement for integrating WM-DRM to protect the VOD over IP. Does live555 works with WM-DRM. How will the encryption be applied: 1. Will it be on the streaming output buffer 2. Or, can live555 stream the packaged media file (encrypted). In this case, WM-DRM rights manager might package the file as a .*asf*format. Will live555 server streams .asf formats. If so how can we apply trick mode on such files. Kindly provide your comments. Regards Ziyad -------------- next part -------------- An HTML attachment was scrubbed... URL: From jnoring at logitech.com Tue Feb 2 18:05:49 2010 From: jnoring at logitech.com (Jeremy Noring) Date: Tue, 2 Feb 2010 18:05:49 -0800 Subject: [Live-devel] WM-DRM In-Reply-To: <8eb8e71d1002020839k16a2e29ej6e0ce1ee101295f0@mail.gmail.com> References: <8eb8e71d1002020839k16a2e29ej6e0ce1ee101295f0@mail.gmail.com> Message-ID: <988ed6931002021805w66d9435di6fdead7e296ed10@mail.gmail.com> On Tue, Feb 2, 2010 at 8:39 AM, ziyad sharafudheen wrote: > Hi, > > We are using live555 server for VOD streaming currently the media files > being in transport stream format. > > We have a requirement for integrating WM-DRM to protect the VOD over IP. > > Does live555 works with WM-DRM. How will the encryption be applied: > > 1. Will it be on the streaming output buffer > 2. Or, can live555 stream the packaged media file (encrypted). In this > case, WM-DRM rights manager might package the file as a .*asf*format. Will live555 server streams .asf formats. If so how can we apply > trick mode on such files. > > As far as I know, there is no standard RTP payload for WM codecs, and typically implementations will use Windows Media Services, Windows Media Encoder, or the WMFSDK to stream ASF/WMV/WMA content. If you do not need low-latency performance, this is vastly easier than using Live555. -------------- next part -------------- An HTML attachment was scrubbed... URL: From jnoring at logitech.com Wed Feb 3 18:31:38 2010 From: jnoring at logitech.com (Jeremy Noring) Date: Wed, 3 Feb 2010 18:31:38 -0800 Subject: [Live-devel] Fix for deadlock Message-ID: <988ed6931002031831pa63c33fl87fee15a7c4ae4f5@mail.gmail.com> When streaming over TCP, Live555 can deadlock if it loses the connection to the server for whatever reason (internet goes down, server has a power outage, LAN fails, etc.). I tracked the deadlock down to RTPInterface::handleRead: while ((curBytesRead = readSocket(envir(), fNextTCPReadStreamSocketNum, &buffer[bytesRead], curBytesToRead, fromAddress)) > 0) { readSocket has an optional timeout argument that defaults to NULL, which is to block indefinitely. The problem is if there is some interruption in service at an unfortunate time, readSocket will block Live555 indefinitely on a select() statement. My fix for this is to add a timeout: struct timeval timeout; timeout.tv_sec = 2; timeout.tv_usec = 0; while ((curBytesRead = readSocket(envir(), fNextTCPReadStreamSocketNum, &buffer[bytesRead], curBytesToRead, fromAddress, &timeout)) > 0) { ...I pulled 2 seconds out of the air; I have no idea if that's a good number. I'd like some feedback on whether or not this change is something I'll seriously regret, and/or if there are other better options at my disposal to make sure Live555 continues processing data even in the event of the server going away. Thanks, Jeremy -------------- next part -------------- An HTML attachment was scrubbed... URL: From vlyamtsev at gmail.com Wed Feb 3 16:10:29 2010 From: vlyamtsev at gmail.com (Victor lyamtsev) Date: Wed, 3 Feb 2010 19:10:29 -0500 Subject: [Live-devel] MediaServer - playback initialization question Message-ID: <76224b101002031610h22b4ba75y78d5cef7d0f109f8@mail.gmail.com> I am trying to follow basic flow of events in Dynamic MediaServer sample... Can someone point me how the "play" event is signaled to RTP sink to start actual streaming? Thanks, -V From richymong at gmail.com Wed Feb 3 18:15:22 2010 From: richymong at gmail.com (Richy Mong) Date: Thu, 4 Feb 2010 10:15:22 +0800 Subject: [Live-devel] How to transmit multiple live streams? Message-ID: <92bcf691002031815u3eea5e6apef03aa961849dcc1@mail.gmail.com> Hi Ross, Sorry to disturb you again.However,I really need your help. I try to transmit multiple stream and i read the following text from the FAQ: However, when using the "LIVE555 Streaming Media" code, you should be familiar with event-driven programming, and understand that an event-driven application can perform at least as well as one that uses threads (unless you're actually running on a multiprocessor, in which case it's usually simpler to have your application consist of multiple processes (not just threads) - one running on each processor). Note, in particular, that you *do not* need multiple threads in order to transmit (or receive) multiple streams concurrently. I know I don't need to use multiple threads in my application.But I'm confused.I want to transmit multiple live stream which may start at different time(i.e one stream today and another tommorrow).For the test****stremer, I can use multiple sinks just like "sink1->startPlaying(), sink2->startPlaying()" .But my server is following the eaxample of OnDemandRTSPServer and I have live source.Would you please give some advice? Thanks in advance. Best regards, Richy -------------- next part -------------- An HTML attachment was scrubbed... URL: From finlayson at live555.com Wed Feb 3 18:48:56 2010 From: finlayson at live555.com (Ross Finlayson) Date: Wed, 3 Feb 2010 18:48:56 -0800 Subject: [Live-devel] Fix for deadlock In-Reply-To: <988ed6931002031831pa63c33fl87fee15a7c4ae4f5@mail.gmail.com> References: <988ed6931002031831pa63c33fl87fee15a7c4ae4f5@mail.gmail.com> Message-ID: Jeremy, I applied your previous patches (to turn 'nonblocking' mode on, then off for the socket if there's a timeout parameter), and it will appear in the next release, but I'm not going to apply this one, because synchronous (blocking) socket reads in "RTSPClient" will eventually be going away. -- Ross Finlayson Live Networks, Inc. http://www.live555.com/ From jnoring at logitech.com Wed Feb 3 19:46:16 2010 From: jnoring at logitech.com (Jeremy Noring) Date: Wed, 3 Feb 2010 19:46:16 -0800 Subject: [Live-devel] Fix for deadlock In-Reply-To: References: <988ed6931002031831pa63c33fl87fee15a7c4ae4f5@mail.gmail.com> Message-ID: <988ed6931002031946u7d0cd8adtbb6e8acf25507cae@mail.gmail.com> On Wed, Feb 3, 2010 at 6:48 PM, Ross Finlayson wrote: > Jeremy, > > I applied your previous patches (to turn 'nonblocking' mode on, then off > for the socket if there's a timeout parameter), and it will appear in the > next release, but I'm not going to apply this one, because synchronous > (blocking) socket reads in "RTSPClient" will eventually be going away. > That sounds good. Two follow up questions: 1. Any estimate on when blocking socket reads will get go away, and is there anything I can do to help? 2. Can you think of any potential risks to the aforementioned patch to add a timeout? Thanks again. -------------- next part -------------- An HTML attachment was scrubbed... URL: From finlayson at live555.com Thu Feb 4 00:40:57 2010 From: finlayson at live555.com (Ross Finlayson) Date: Thu, 4 Feb 2010 00:40:57 -0800 Subject: [Live-devel] How to transmit multiple live streams? In-Reply-To: <92bcf691002031815u3eea5e6apef03aa961849dcc1@mail.gmail.com> References: <92bcf691002031815u3eea5e6apef03aa961849dcc1@mail.gmail.com> Message-ID: >.I want to transmit multiple live stream which may start at >different time(i.e one stream today and another tommorrow).For the >test****stremer, I can use multiple sinks just like >"sink1->startPlaying(), sink2->startPlaying()" .But my server is >following the eaxample of OnDemandRTSPServer and I have live >source.Would you please give some advice? Use "TaskScheduler::scheduleDelayedTask()". -- Ross Finlayson Live Networks, Inc. http://www.live555.com/ From finlayson at live555.com Thu Feb 4 01:01:38 2010 From: finlayson at live555.com (Ross Finlayson) Date: Thu, 4 Feb 2010 01:01:38 -0800 Subject: [Live-devel] MediaServer - playback initialization question In-Reply-To: <76224b101002031610h22b4ba75y78d5cef7d0f109f8@mail.gmail.com> References: <76224b101002031610h22b4ba75y78d5cef7d0f109f8@mail.gmail.com> Message-ID: >I am trying to follow basic flow of events in Dynamic MediaServer sample... >Can someone point me how the "play" event is signaled to RTP sink to >start actual streaming? Look at the code for "RTSPServer::RTSPClientSession::handleCmd_PLAY()" in "liveMedia/RTSPServer.cpp". -- Ross Finlayson Live Networks, Inc. http://www.live555.com/ From richymong at gmail.com Thu Feb 4 17:16:41 2010 From: richymong at gmail.com (Richy Mong) Date: Fri, 5 Feb 2010 09:16:41 +0800 Subject: [Live-devel] How to transmit multiple live streams? In-Reply-To: References: <92bcf691002031815u3eea5e6apef03aa961849dcc1@mail.gmail.com> Message-ID: <92bcf691002041716k7085cb52u74433825382f5eb2@mail.gmail.com> Thanks for your reply.But I'm sorry that I didn't express the matter properly. I just wanted to transmit multiple streams that might be started at diffierent time(I didn't know the exact time) and played at the same time. I find that I could call "TaskScheduler::doEventLoop()" at the beginning.Then when a user (i.e , a webcam) connects to the server and sends live video data, I will create a new ServerMediaSession for him and use RTSPServer::addServerMediaSession() to add this new ServerMediaSession object.So that the VLC can play this stream.When another user connects to the server, I will do the same thing.I will modify my code today to have a test. Is what I said above correct? Richy Best Regards 2010/2/4 Ross Finlayson > .I want to transmit multiple live stream which may start at different >> time(i.e one stream today and another tommorrow).For the test****stremer, I >> can use multiple sinks just like >> "sink1->startPlaying(), sink2->startPlaying()" .But my server is following >> the eaxample of OnDemandRTSPServer and I have live >> source.Would you please give some advice? >> > > Use "TaskScheduler::scheduleDelayedTask()". > > -- > > Ross Finlayson > Live Networks, Inc. > http://www.live555.com/ > _______________________________________________ > live-devel mailing list > live-devel at lists.live555.com > http://lists.live555.com/mailman/listinfo/live-devel > -------------- next part -------------- An HTML attachment was scrubbed... URL: From suhashgd at gmail.com Fri Feb 5 06:42:29 2010 From: suhashgd at gmail.com (Suhas Hegde) Date: Fri, 5 Feb 2010 20:12:29 +0530 Subject: [Live-devel] Help required in using sendfile api in live555 Message-ID: <3172b0fe1002050642hc3a80ffj2ae84ce2c51578a8@mail.gmail.com> Hi, I was going through the optimizations possible in media servers and found out the sendfile() api in linux very interesting. I want to try out this on the live555 media server application. I found out from the code that live555 uses read and write system calls to transfer data from the disk to the network. Also there is processing of data after it is read from the disk. I wanted to know whether it is possible to implement sendfile() in the media server or is it that the idea is totally crazy and cannot be done. Any comments or suggestions regarding this will be very helpful. Also pointers to any other open source servers that have already implemented this would be helpful. Thanks in advance Regards, Suhas -------------- next part -------------- An HTML attachment was scrubbed... URL: From vlyamtsev at gmail.com Fri Feb 5 08:05:52 2010 From: vlyamtsev at gmail.com (Victor lyamtsev) Date: Fri, 5 Feb 2010 11:05:52 -0500 Subject: [Live-devel] how to create custom sink ? Message-ID: <76224b101002050805m53b6b72g32866a85b84a447b@mail.gmail.com> Hello, I have 2 UDP sockets receiving synchronized RTP audio ( AAC) and RTP video (H.264) streams and i have to re- send that stream to RTSP client. Any idea how to connect RTSPServer to this source? It looks like I have to override "lookupServerMediaSession" .. Do i need to create new type of MediaSource? I would appreciate some pointers. Thanks, -V From tom at silocorp.com Fri Feb 5 14:47:07 2010 From: tom at silocorp.com (Tom Pepper) Date: Fri, 5 Feb 2010 14:47:07 -0800 Subject: [Live-devel] playback only working to localhost Message-ID: <945B991C-7A7A-4093-A439-DBD817E6905A@silocorp.com> Hi, everyone: I'm attempting to feed an H.264 stream from a live capture and encoder application we've written into Wowza 2 via live. I've managed to create a custom H264VideoStreamFramer (STH264VideoStreamFramer ) and DeviceSource (STMCVSource) that successfully forwards frames from our encoder (MainConcept) to vlc or openRTSP via localhost, but when I connect to the same instance from any other machine on the same subnet (whether directly attached to the NIC or through a switch) openRTSP on that client doesn't actually capture any frames after setting up the stream. Thanks in advance for any help, and for the list archives which have been instrumental in getting this far. I'm sure it's something moronic w/r/t multicast that I'm missing. The main code's closely based around testMPEG4VideoStreamer.cpp: void *livertp(void *h264ProfilePtr) { TaskScheduler* scheduler = BasicTaskScheduler::createNew(); env = BasicUsageEnvironment::createNew(*scheduler); struct in_addr destinationAddress; destinationAddress.s_addr = chooseRandomIPv4SSMAddress(*env); const unsigned short rtpPortNum = 18888; const unsigned short rtcpPortNum = rtpPortNum + 1; const unsigned char ttl = 255; const Port rtpPort(rtpPortNum); const Port rtcpPort(rtcpPortNum); Groupsock rtpGroupsockVideo(*env, destinationAddress, rtpPort, ttl); rtpGroupsockVideo.multicastSendOnly(); // we're a SSM source Groupsock rtcpGroupsockVideo(*env, destinationAddress, rtcpPort, ttl); rtcpGroupsockVideo.multicastSendOnly(); // we're a SSM source videoSink = H264VideoRTPSink::createNew(*env, &rtpGroupsockVideo, 96, 0x41, (char *) h264ProfilePtr); const unsigned estimatedSessionBandwidthVideo = 1500; // in kbps; for RTCP b/w share const unsigned maxCNAMElen = 100; unsigned char CNAME[maxCNAMElen + 1]; gethostname((char*) CNAME, maxCNAMElen); CNAME[maxCNAMElen] = '\0'; // just in case RTCPInstance* videoRTCP = RTCPInstance::createNew(*env, &rtcpGroupsockVideo, estimatedSessionBandwidthVideo, CNAME, videoSink, NULL, true); RTSPServer* rtspServer = RTSPServer::createNew(*env, 8554); if (rtspServer == NULL) { *env << "Failed to create RTSP server: " << env->getResultMsg() << "\n"; exit(1); } ServerMediaSession* sms = ServerMediaSession::createNew(*env, "testStream", "frank", "Session streamed by frank", true); sms->addSubsession(PassiveServerMediaSubsession::createNew(*videoSink, videoRTCP)); rtspServer->addServerMediaSession(sms); char* url = rtspServer->rtspURL(sms); *env << "Play this stream using the URL \"" << url << "\"\n"; delete[] url; play(); while (1) { watchVariable = 0; env->taskScheduler().doEventLoop(&watchVariable); switch (watchVariable) { case 'a': { myH264VideoStreamFramer->doGetNextFrame(); break; } default: { fprintf(stderr, "Unhandled watchVariable! \n"); } } } } void play() { // start the RTP sink dp = new DeviceParameters; videoDV = STMCVSource::createNew(*env, *dp); myH264VideoStreamFramer = STH264VideoStreamFramer::createNew(*env, videoDV); if (!videoSink->startPlaying(*myH264VideoStreamFramer, afterPlaying, videoSink)) { fprintf(stderr, "videoSink->startPlaying() failed!!\n"); exit(-1); } } ========= Sample output of openRTSP from client (10.0.22.53) on same subnet as server (10.0.22.60): $ openRTSP -v rtsp://10.0.22.60:8554/testStream Sending request: OPTIONS rtsp://10.0.22.60:8554/testStream RTSP/1.0 CSeq: 1 User-Agent: openRTSP (LIVE555 Streaming Media v2008.07.24) Received OPTIONS response: RTSP/1.0 200 OK CSeq: 1 Date: Fri, Feb 05 2010 22:41:23 GMT Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, SET_PARAMETER Sending request: DESCRIBE rtsp://10.0.22.60:8554/testStream RTSP/1.0 CSeq: 2 Accept: application/sdp User-Agent: openRTSP (LIVE555 Streaming Media v2008.07.24) Received DESCRIBE response: RTSP/1.0 200 OK CSeq: 2 Date: Fri, Feb 05 2010 22:41:23 GMT Content-Base: rtsp://10.0.22.60:8554/testStream/ Content-Type: application/sdp Content-Length: 554 Need to read 554 extra bytes Read 554 extra bytes: v=0 o=- 1265409055205734 1 IN IP4 10.0.22.60 s=Session streamed by frank i=frank t=0 0 a=tool:LIVE555 Streaming Media v2010.01.22 a=type:broadcast a=control:* a=source-filter: incl IN IP4 * 10.0.22.60 a=rtcp-unicast: reflection a=range:npt=0- a=x-qt-text-nam:Session streamed by frank a=x-qt-text-inf:frank m=video 18888 RTP/AVP 96 c=IN IP4 232.187.115.56/255 b=AS:1500 a=rtpmap:96 H264/90000 a=fmtp:96 packetization-mode=1;profile-level-id=000041;sprop-parameter-sets=AWdNQCmWUgCgFz5cBUIAAAfSAAHUwTtCxbLAAAAAAWjrc1I= a=control:track1 Opened URL "rtsp://10.0.22.60:8554/testStream", returning a SDP description: v=0 o=- 1265409055205734 1 IN IP4 10.0.22.60 s=Session streamed by frank i=frank t=0 0 a=tool:LIVE555 Streaming Media v2010.01.22 a=type:broadcast a=control:* a=source-filter: incl IN IP4 * 10.0.22.60 a=rtcp-unicast: reflection a=range:npt=0- a=x-qt-text-nam:Session streamed by frank a=x-qt-text-inf:frank m=video 18888 RTP/AVP 96 c=IN IP4 232.187.115.56/255 b=AS:1500 a=rtpmap:96 H264/90000 a=fmtp:96 packetization-mode=1;profile-level-id=000041;sprop-parameter-sets=AWdNQCmWUgCgFz5cBUIAAAfSAAHUwTtCxbLAAAAAAWjrc1I= a=control:track1 Created receiver for "video/H264" subsession (client ports 18888-18889) Sending request: SETUP rtsp://10.0.22.60:8554/testStream/track1 RTSP/1.0 CSeq: 3 Transport: RTP/AVP;multicast;client_port=18888-18889 User-Agent: openRTSP (LIVE555 Streaming Media v2008.07.24) Received SETUP response: RTSP/1.0 200 OK CSeq: 3 Date: Fri, Feb 05 2010 22:41:23 GMT Transport: RTP/AVP;multicast;destination=232.187.115.56;source=10.0.22.60;port=18888-18889;ttl=255 Session: 3E90B523 Setup "video/H264" subsession (client ports 18888-18889) Outputting data from the "video/H264" subsession to 'stdout' Sending request: PLAY rtsp://10.0.22.60:8554/testStream/ RTSP/1.0 CSeq: 4 Session: 3E90B523 Range: npt=0.000- User-Agent: openRTSP (LIVE555 Streaming Media v2008.07.24) Received PLAY response: RTSP/1.0 200 OK CSeq: 4 Date: Fri, Feb 05 2010 22:41:23 GMT Range: npt=0.000- Session: 3E90B523 RTP-Info: url=rtsp://10.0.22.60:8554/testStream/track1;seq=545;rtptime=3289321397 Started playing session Receiving streamed data (signal with "kill -HUP 8087" or "kill -USR1 8087" to terminate)... [... no data ...] Thanks, -tom From finlayson at live555.com Fri Feb 5 23:15:11 2010 From: finlayson at live555.com (Ross Finlayson) Date: Fri, 5 Feb 2010 23:15:11 -0800 Subject: [Live-devel] Help required in using sendfile api in live555 In-Reply-To: <3172b0fe1002050642hc3a80ffj2ae84ce2c51578a8@mail.gmail.com> References: <3172b0fe1002050642hc3a80ffj2ae84ce2c51578a8@mail.gmail.com> Message-ID: "sendfile()" sends its data over a 'stream' socket, which - in an IP network - means TCP, not UDP. It is therefore completely irrelevant for RTP/RTCP streaming, which is datagram-based. -- Ross Finlayson Live Networks, Inc. http://www.live555.com/ From finlayson at live555.com Fri Feb 5 23:26:09 2010 From: finlayson at live555.com (Ross Finlayson) Date: Fri, 5 Feb 2010 23:26:09 -0800 Subject: [Live-devel] how to create custom sink ? In-Reply-To: <76224b101002050805m53b6b72g32866a85b84a447b@mail.gmail.com> References: <76224b101002050805m53b6b72g32866a85b84a447b@mail.gmail.com> Message-ID: >Hello, >I have 2 UDP sockets receiving synchronized RTP audio ( AAC) and RTP >video (H.264) streams and i have to re- send that stream to RTSP >client. >Any idea how to connect RTSPServer to this source? It looks like I >have to override "lookupServerMediaSession" .. No, I don't think you need to modify (or subclass) the existing "RTSPServer" at all. Instead you need only define new "ServerMediaSubsession" subclasses - one for your AAC audio source, and another for your H.264 video source. Each subclass will create an appropriate "RTPSource" object ("MPEG4GenericRTPSource " for AAC audio; H264VideoRTPSource for H.264 video) for delivering its input data, and, of course, create appropriate "RTPSink" subclasses ("MPEG4GenericRTPSink " for AAC audio; H264VideoRTPSink for H.264 video) for its output. Specifically, if you want to stream to your clients via multicast, you should define subclasses of "PassiveServerMediaSubsession"; if you want to stream to your clients via unicast, you should define subclasses of "OnDemandServerMediaSubsession". -- Ross Finlayson Live Networks, Inc. http://www.live555.com/ From finlayson at live555.com Sat Feb 6 02:16:21 2010 From: finlayson at live555.com (Ross Finlayson) Date: Sat, 6 Feb 2010 02:16:21 -0800 Subject: [Live-devel] playback only working to localhost In-Reply-To: <945B991C-7A7A-4093-A439-DBD817E6905A@silocorp.com> References: <945B991C-7A7A-4093-A439-DBD817E6905A@silocorp.com> Message-ID: >I'm attempting to feed an H.264 stream from a live capture and >encoder application we've written into Wowza 2 via live. I've >managed to create a custom H264VideoStreamFramer >(STH264VideoStreamFramer ) and DeviceSource (STMCVSource) that >successfully forwards frames from our encoder (MainConcept) to vlc >or openRTSP via localhost, but when I connect to the same instance >from any other machine on the same subnet (whether directly attached >to the NIC or through a switch) openRTSP on that client doesn't >actually capture any frames after setting up the stream. The fact that the (multicast) packets get delivered to "openRTSP" when it's running on the same host, but not when it's running on another host, suggests that the problem is with your network interface. In particular, you should make sure that that multicast is configured properly for your network interface - i.e., make sure you have a route for 224.0.0/4 on that interface. -- Ross Finlayson Live Networks, Inc. http://www.live555.com/ From finlayson at live555.com Sat Feb 6 07:14:25 2010 From: finlayson at live555.com (Ross Finlayson) Date: Sat, 6 Feb 2010 07:14:25 -0800 Subject: [Live-devel] playback only working to localhost Message-ID: >I'm attempting to feed an H.264 stream from a live capture and >encoder application we've written into Wowza 2 via live. I've >managed to create a custom H264VideoStreamFramer >(STH264VideoStreamFramer ) and DeviceSource (STMCVSource) that >successfully forwards frames from our encoder (MainConcept) to vlc >or openRTSP via localhost, but when I connect to the same instance >from any other machine on the same subnet (whether directly attached >to the NIC or through a switch) openRTSP on that client doesn't >actually capture any frames after setting up the stream. I should also have asked you whether the "test*Streamer" multicast streaming demo applications work for you across a network, or only on the same host. If those applications (which you should have tried first, before writing your own code) don't work across a network, then you've definitely got problems with multicast on your system. -- Ross Finlayson Live Networks, Inc. http://www.live555.com/ From tom at silocorp.com Sat Feb 6 10:39:24 2010 From: tom at silocorp.com (Tom Pepper) Date: Sat, 6 Feb 2010 10:39:24 -0800 Subject: [Live-devel] playback only working to localhost In-Reply-To: References: <945B991C-7A7A-4093-A439-DBD817E6905A@silocorp.com> Message-ID: Duh. Thanks, Ross - after moving from Windows to Ubuntu for development I stupidly assumed they'd enable multicast in Ubuntu by default. If anyone else should encounter this problem, the solution that worked for me was the following: 1) modify /etc/sysctl.d/10-network-security.conf, change the lines with rp_filter from =1 to =0 2) reboot to get interfaces to accept change 3) ip route add /sbin/ip route add 224.0.0.0/4 via (local IP of interface you wish to use for multicast) Next question - My H264 framer is forwarding NALUs intact as they are received from the MainConcept AVC encoder, including the seek bytes. VLC plays these streams just fine, but Wowza is complaining about missing NAL SPS and PPS. My encoder's including them in the NALUs as best I can tell, and I've also sent a base64 encoded version of the sprop parameter set it returns. Question being - should I be stripping seek or other information from the stream before scheduling afterGetting()? Here's the first 64 bytes of the first 10 frames I'm forwarding along: Play this stream using the URL "rtsp://10.0.22.60:8554/testStream" Hex dump of encoded frame #1: >00000001 09100000 0001674D 40299652< ..........gM@).R 00000000 >00A0173E 5C054200 0007D200 01D4C13B< ...>\.B........; 00000010 >42C5B2C0 00000001 68EB7352 00000001< B.......h.sR.... 00000020 >060001C0 010E3920 00800000 03009200< ......9 ........ 00000030 Frame received (#8) - No input signal detected Hex dump of encoded frame #2: >00000001 09300000 00010601 0E392004< .....0.......9 . 00000000 >80000003 00920048 00000300 08800000< .......H........ 00000010 >0001419A 0208F90D 8101D551 56FFD332< ..A........QV..2 00000020 >3B02F545 B51776AB 91100FC5 CA4B896E< ;..E..v......K.n 00000030 Hex dump of encoded frame #3: >00000001 09500000 00010601 0E392002< .....P.......9 . 00000000 >80000003 00920028 00000300 08800000< .......(........ 00000010 >0001419E 0404E846 5BFB8EC2 C9FE0D5E< ..A....F[......^ 00000020 >912F74D4 EFA00EB6 126EDA0C FEA40BFA< ./t......n...... 00000030 Hex dump of encoded frame #4: >00000001 09500000 00010601 0E392001< .....P.......9 . 00000000 >80000003 00920018 00000300 08800000< ................ 00000010 >0001019E 0602EC8E B7494088 6D7BD8E6< .........I at .m{.. 00000020 >D3AAFD3D D0F0847B C7199583 DA699D38< ...=...{.....i.8 00000030 Hex dump of encoded frame #5: >00000001 09500000 00010601 0E392003< .....P.......9 . 00000000 >80000003 00920038 00000300 08800000< .......8........ 00000010 >0001019E 0606D323 ADFFF7F7 1DCC2A30< .......#......*0 00000020 >33B9C988 E70F4810 3E587C53 0FE90A5F< 3.....H.>X|S..._ 00000030 Hex dump of encoded frame #6: >00000001 09300000 00010601 0E392008< .....0.......9 . 00000000 >80000003 00920088 00000300 08800000< ................ 00000010 >0001419A 06106968 980AB7B8 43AB5383< ..A...ih....C.S. 00000020 >1A7B9B71 E5A5CFBD 374D794E 0BD6EE05< .{.q....7MyN.... 00000030 Hex dump of encoded frame #7: >00000001 09500000 00010601 0E392006< .....P.......9 . 00000000 >80000003 00920068 00000300 08800000< .......h........ 00000010 >0001419E 080CD312 5B526E28 05D11E92< ..A.....[Rn(.... 00000020 >53247477 D10764BE D89FDA34 45B25DBC< S$tw..d....4E.]. 00000030 Hex dump of encoded frame #8: >00000001 09500000 00010601 0E392005< .....P.......9 . 00000000 >80000003 00920058 00000300 08800000< .......X........ 00000010 >0001019E 0A0AEC9A DFEA3C3F AFEF2A74< ..........F5AC8829 C9B9F240 B67E4A69 5E0E120E< ...)... at .~Ji^... 00000030 Hex dump of encoded frame #9: >00000001 09500000 00010601 0E392007< .....P.......9 . 00000000 >80000003 00920078 00000300 08800000< .......x........ 00000010 >0001019E 0A0ED326 B7491077 D24C5CAA< .......&.I.w.L\. 00000020 >52367469 48112559 A9ADA262 DE73A277< R6tiH.%Y...b.s.w 00000030 Hex dump of encoded frame #10: >00000001 09300000 00010601 0E39200C< .....0.......9 . 00000000 >80000003 009200C8 00000300 08800000< ................ 00000010 >0001419A 0A186968 9809EDFF D27D98D4< ..A...ih.....}.. 00000020 >F727D185 127EEB7E 521D1AF1 AFF726FF< .'...~.~R.....&. 00000030 The parameter set as I encode and report it: a=fmtp:96 packetization-mode=1;profile-level-id=000041;sprop-parameter-sets=AWdNQCmWUgCgFz5cBUIAAAfSAAHUwTtCxbLAAAAAAWjrc1I= Thanks again for both the source and your support of a protocol that's not the easiest to grapple with, Ross. Cheers, -t On Feb 6, 2010, at 2:16 AM, Ross Finlayson wrote: >> I'm attempting to feed an H.264 stream from a live capture and encoder application we've written into Wowza 2 via live. I've managed to create a custom H264VideoStreamFramer (STH264VideoStreamFramer ) and DeviceSource (STMCVSource) that successfully forwards frames from our encoder (MainConcept) to vlc or openRTSP via localhost, but when I connect to the same instance from any other machine on the same subnet (whether directly attached to the NIC or through a switch) openRTSP on that client doesn't actually capture any frames after setting up the stream. > > The fact that the (multicast) packets get delivered to "openRTSP" when it's running on the same host, but not when it's running on another host, suggests that the problem is with your network interface. In particular, you should make sure that that multicast is configured properly for your network interface - i.e., make sure you have a route for 224.0.0/4 on that interface. > > -- > > Ross Finlayson > Live Networks, Inc. > http://www.live555.com/ > _______________________________________________ > live-devel mailing list > live-devel at lists.live555.com > http://lists.live555.com/mailman/listinfo/live-devel From jnoring at logitech.com Sat Feb 6 11:07:39 2010 From: jnoring at logitech.com (Jeremy Noring) Date: Sat, 6 Feb 2010 11:07:39 -0800 Subject: [Live-devel] playback only working to localhost In-Reply-To: References: <945B991C-7A7A-4093-A439-DBD817E6905A@silocorp.com> Message-ID: <988ed6931002061107v6cc0b76fo41de0dc3fd694710@mail.gmail.com> On Sat, Feb 6, 2010 at 10:39 AM, Tom Pepper wrote: > The parameter set as I encode and report it: > > a=fmtp:96 > packetization-mode=1;profile-level-id=000041;sprop-parameter-sets=AWdNQCmWUgCgFz5cBUIAAAfSAAHUwTtCxbLAAAAAAWjrc1I= > > Something about your sprop-parameter-sets looks wrong--there should be a comma in it to delimit the SPS and PPS sets. How are you forming that? Also, in my experience, wowsa doesn't like having SPS/PPS sent in-stream. -------------- next part -------------- An HTML attachment was scrubbed... URL: From tom at silocorp.com Sat Feb 6 11:34:06 2010 From: tom at silocorp.com (Tom Pepper) Date: Sat, 6 Feb 2010 11:34:06 -0800 Subject: [Live-devel] playback only working to localhost In-Reply-To: <988ed6931002061107v6cc0b76fo41de0dc3fd694710@mail.gmail.com> References: <945B991C-7A7A-4093-A439-DBD817E6905A@silocorp.com> <988ed6931002061107v6cc0b76fo41de0dc3fd694710@mail.gmail.com> Message-ID: Jeremy: Thanks for the quick response. I've had difficulty locating a good source of information on what the parameter sets should look like, so that's probably the issue. MainConcept provides them via h264OutVideoGetParSets(). Here's the code I use to retrieve them and parse: // get AVC Parameter Sets char * parset = (char *) malloc(1024); int length; if(h264OutVideoGetParSets(v_encoder, &v_settings, (uint8_t *) parset, &length)) { fprintf(stderr,"h264OutVideoGetParSets() failed!"); exit(-1); } fprintf(stderr, "h264OutVideoGetParSets: %i\n", length); hexdump(parset, length); char *b64parset = base64Encode(parset + 4, length - 4); // skip sync fprintf(stderr, "b64parset: %s, %zu\n", b64parset, strlen(b64parset)); unsigned int numrecords = 0; SPropRecord* poo = parseSPropParameterSets(b64parset, numrecords); for (unsigned i = 0; i < numrecords; ++i) { fprintf(stderr, "decoded [%i] = %s\n", i, poo[i].sPropBytes); } And here's the output: h264OutVideoGetParSets: 38 >00000001 674D4029 965200A0 173E5C05< ....gM@).R...>\. 00000000 >42000007 D20001D4 C13B42C5 B2C00000< B........;B..... 00000010 >000168EB 7352< ..h.sR 00000020 b64parset: Z01AKZZSAKAXPlwFQgAAB9IAAdTBO0LFssAAAAABaOtzUg==, 48 decoded [0] = gM@)?R parseSPropParameterSets should be returning 2 values with a well-formed parset, no? Are the zero bytes returned in the parset screwing up the base64 encode? Excerpt from MainConcept's immensely-detailed SDK Docs: 2.2.13 h264OutVideoGetParSets Call this function to retrieve sequence and picture parameter sets. Can be useful when doing streamtype I encoding to separate VCL NAL units and parameter sets (non-VCL NAL units). int h264OutVideoGetParSets(h264venc_tt *instance, struct h264_v_settings * set, unsigned char * buffer, int * length); Be sure to allocate enough memory for buffer (1024 bytes should be more than enough). After calling this function, length will show the actual size of the data. -t On Feb 6, 2010, at 11:07 AM, Jeremy Noring wrote: > On Sat, Feb 6, 2010 at 10:39 AM, Tom Pepper wrote: > The parameter set as I encode and report it: > > a=fmtp:96 packetization-mode=1;profile-level-id=000041;sprop-parameter-sets=AWdNQCmWUgCgFz5cBUIAAAfSAAHUwTtCxbLAAAAAAWjrc1I= > > > Something about your sprop-parameter-sets looks wrong--there should be a comma in it to delimit the SPS and PPS sets. How are you forming that? > > Also, in my experience, wowsa doesn't like having SPS/PPS sent in-stream. > _______________________________________________ > live-devel mailing list > live-devel at lists.live555.com > http://lists.live555.com/mailman/listinfo/live-devel From jnoring at logitech.com Sat Feb 6 12:01:08 2010 From: jnoring at logitech.com (Jeremy Noring) Date: Sat, 6 Feb 2010 12:01:08 -0800 Subject: [Live-devel] playback only working to localhost In-Reply-To: References: <945B991C-7A7A-4093-A439-DBD817E6905A@silocorp.com> <988ed6931002061107v6cc0b76fo41de0dc3fd694710@mail.gmail.com> Message-ID: <988ed6931002061201m68a53ebfwe2e476bad3d4ac55@mail.gmail.com> On Sat, Feb 6, 2010 at 11:34 AM, Tom Pepper wrote: > Jeremy: > > Thanks for the quick response. I've had difficulty locating a good source of information on what the parameter sets should look like, so that's probably the issue. > > MainConcept provides them via h264OutVideoGetParSets(). Here's the code I use to retrieve them and parse: > > // get AVC Parameter Sets > char * parset = (char *) malloc(1024); > int length; > > if(h264OutVideoGetParSets(v_encoder, &v_settings, (uint8_t *) parset, &length)) { > fprintf(stderr,"h264OutVideoGetParSets() failed!"); > exit(-1); > } > fprintf(stderr, "h264OutVideoGetParSets: %i\n", length); > hexdump(parset, length); > > char *b64parset = base64Encode(parset + 4, length - 4); // skip sync > fprintf(stderr, "b64parset: %s, %zu\n", b64parset, strlen(b64parset)); > > unsigned int numrecords = 0; > SPropRecord* poo = parseSPropParameterSets(b64parset, numrecords); > > for (unsigned i = 0; i < numrecords; ++i) { > fprintf(stderr, "decoded [%i] = %s\n", i, poo[i].sPropBytes); > } The problem is that you're base64 encoding both SPS and PPS info in one big block--the two are supposed to be individually base64 encoded, and then delimited with a comma. In other words, the final entry should look like: sprop-parameter-sets=spsInBase64,ppsInBase64 On the client side, it splits this string on the comma character and then decodes each side separately. It does look like h264OutVideoGetParSets() delimits the output with NAL start codes (0x00000001), so splitting the parameter sets apart shouldn't be too difficult. If you want to identify SPS and PPS separately, that's a bit more work to parse the NAL unit headers (see H264 specification if you need to do this--it's a few lines of bit-twiddling, more or less). -------------- next part -------------- An HTML attachment was scrubbed... URL: From finlayson at live555.com Sun Feb 7 01:51:04 2010 From: finlayson at live555.com (Ross Finlayson) Date: Sun, 7 Feb 2010 01:51:04 -0800 Subject: [Live-devel] playback only working to localhost In-Reply-To: <988ed6931002061201m68a53ebfwe2e476bad3d4ac55@mail.gmail.com> References: <945B991C-7A7A-4093-A439-DBD817E6905A@silocorp.com> <988ed6931002061107v6cc0b76fo41de0dc3fd694710@mail.gmail.com> <988ed6931002061201m68a53ebfwe2e476bad3d4ac55@mail.gmail.com> Message-ID: >The problem is that you're base64 encoding both SPS and PPS info in >one big block--the two are supposed to be individually base64 >encoded, and then delimited with a comma. In other words, the final >entry should look like: > >sprop-parameter-sets=spsInBase64,ppsInBase64 For more information, see http://lists.live555.com/pipermail/live-devel/2009-November/011474.html -- Ross Finlayson Live Networks, Inc. http://www.live555.com/ From tom at silocorp.com Mon Feb 8 13:27:29 2010 From: tom at silocorp.com (Tom Pepper) Date: Mon, 8 Feb 2010 13:27:29 -0800 Subject: [Live-devel] playback only working to localhost In-Reply-To: References: <945B991C-7A7A-4093-A439-DBD817E6905A@silocorp.com> <988ed6931002061107v6cc0b76fo41de0dc3fd694710@mail.gmail.com> <988ed6931002061201m68a53ebfwe2e476bad3d4ac55@mail.gmail.com> Message-ID: thanks, guys. Mainconcept returns 2 full NALs in a single buffer with both the SPS and PPS encoded, which I just needed to separate, base64encode, put a comma between, and return. The harder part is figuring out the middle byte to send for the profile_id header, now. If anyone needs help with this down the road, feel free to ping me off- or on-list. Next step - converting multicast to unicast, but that deserves a fresh thread. Thanks, -t On Feb 7, 2010, at 1:51 AM, Ross Finlayson wrote: >> The problem is that you're base64 encoding both SPS and PPS info in one big block--the two are supposed to be individually base64 encoded, and then delimited with a comma. In other words, the final entry should look like: >> >> sprop-parameter-sets=spsInBase64,ppsInBase64 > > For more information, see http://lists.live555.com/pipermail/live-devel/2009-November/011474.html > -- > > Ross Finlayson > Live Networks, Inc. > http://www.live555.com/ > _______________________________________________ > live-devel mailing list > live-devel at lists.live555.com > http://lists.live555.com/mailman/listinfo/live-devel From tom at silocorp.com Mon Feb 8 13:44:57 2010 From: tom at silocorp.com (Tom Pepper) Date: Mon, 8 Feb 2010 13:44:57 -0800 Subject: [Live-devel] unicast + streaming on-demand source Message-ID: <6340212C-5B59-4B25-A6A8-0C9A55208CA9@silocorp.com> Hello again: We're writing a live encoding application which reads whole frames in-memory from an ADTS and H264 encoder and forwards them to Wowza via live. Two questions: ADTS -- Since the library only includes ADTSAudioFileServerMediaSubsession, I'm assuming I need to create a subclass of ServerMediaSubsession capable of reading from our in-memory frames instead of a file, yes? Moving from Multicast to Unicast: The multicast version's working with of H264VideoRTPSink -> PassiveServerMediaSubsession, but I see from past list references and the source that OnDemandServerMediaSubsession's the definitive guide for unicast-based streams. Given that OnDemandServerMediaSubsession is file-based, does this mean that I need to create a subclass of ServerMediaSession as well? I'm a little unclear on the relationship between subsessions, sinks, filters, and sources. Apologies if this is all clearly documented somewhere and I'm too daft to find it via google. -t From tom at silocorp.com Mon Feb 8 14:05:50 2010 From: tom at silocorp.com (Tom Pepper) Date: Mon, 8 Feb 2010 14:05:50 -0800 Subject: [Live-devel] unicast + streaming on-demand source In-Reply-To: <6340212C-5B59-4B25-A6A8-0C9A55208CA9@silocorp.com> References: <6340212C-5B59-4B25-A6A8-0C9A55208CA9@silocorp.com> Message-ID: ... or is the ADTS chunk as simple as writing ADTSAudioRTPSink and passing that to a PassiveServerMediaSubsession? *goes off to find coffee* -t On Feb 8, 2010, at 1:44 PM, Tom Pepper wrote: > Hello again: > > We're writing a live encoding application which reads whole frames in-memory from an ADTS and H264 encoder and forwards them to Wowza via live. > > Two questions: > > ADTS -- Since the library only includes ADTSAudioFileServerMediaSubsession, I'm assuming I need to create a subclass of ServerMediaSubsession capable of reading from our in-memory frames instead of a file, yes? > > Moving from Multicast to Unicast: The multicast version's working with of H264VideoRTPSink -> PassiveServerMediaSubsession, but I see from past list references and the source that OnDemandServerMediaSubsession's the definitive guide for unicast-based streams. Given that OnDemandServerMediaSubsession is file-based, does this mean that I need to create a subclass of ServerMediaSession as well? I'm a little unclear on the relationship between subsessions, sinks, filters, and sources. > > Apologies if this is all clearly documented somewhere and I'm too daft to find it via google. > > -t > _______________________________________________ > live-devel mailing list > live-devel at lists.live555.com > http://lists.live555.com/mailman/listinfo/live-devel From vlyamtsev at gmail.com Mon Feb 8 14:41:12 2010 From: vlyamtsev at gmail.com (Victor lyamtsev) Date: Mon, 8 Feb 2010 17:41:12 -0500 Subject: [Live-devel] port numbers problem Message-ID: <76224b101002081441s6f3a65e8g10e34d1c02e5c86f@mail.gmail.com> I need to use certain predefined port numbers for RTP streaming, for example 60004 for audio substream, 60006 for audio... I tried to set response header for "DESCRIBE" to use those numbers, like: m=video 60004 RTP/AVP 32\r\n vs. m=video 0 RTP/AVP 32\r\n but it doesn't seem to make any difference in port designation e.g. from the "wireshark" capture i still see destination port as 55094; Any idea how i can fix that, and how those numbers are assigned? Thank you, -V From finlayson at live555.com Mon Feb 8 21:00:24 2010 From: finlayson at live555.com (Ross Finlayson) Date: Mon, 8 Feb 2010 21:00:24 -0800 Subject: [Live-devel] port numbers problem In-Reply-To: <76224b101002081441s6f3a65e8g10e34d1c02e5c86f@mail.gmail.com> References: <76224b101002081441s6f3a65e8g10e34d1c02e5c86f@mail.gmail.com> Message-ID: >I need to use certain predefined port numbers for RTP streaming, for >example 60004 for audio substream, 60006 for audio... Is your streaming multicast or unicast? If it's multicast, you can easily define and use a single port number. However, if your streaming is unicast, then you can't do this, because multiple clients get multiple (unicast) streams, each using a different port number. However, you can set the "initialPortNum" parameter to the "OnDemandServerMediaSubsession" constructor to - for example - 60004 (instead of its default value of 6970), and this will then become the starting point for the port numbers for unicast streams. -- Ross Finlayson Live Networks, Inc. http://www.live555.com/ From ansary858 at hotmail.com Mon Feb 8 21:20:51 2010 From: ansary858 at hotmail.com (ansary mohamed) Date: Tue, 9 Feb 2010 13:20:51 +0800 Subject: [Live-devel] Using BasicUDPSource and RTPVideoSink for live streaming Message-ID: hi Ross, I am doing live streaming from my hardware H.264 encoder. From my encoder side, i am writing to a socket and passing encoded data from it. I looked at BasicUDPSource and it data from the socket. When I pass the data from the BasicUDPSource to my H264RTPVideoSink, i see nothing played on my vlc client. I am doing unicast streaming at the moment. Please advise on where i am be going wrong. Regards Ansary _________________________________________________________________ Your E-mail and More On-the-Go. Get Windows Live Hotmail Free. https://signup.live.com/signup.aspx?id=60969 -------------- next part -------------- An HTML attachment was scrubbed... URL: From finlayson at live555.com Mon Feb 8 22:05:00 2010 From: finlayson at live555.com (Ross Finlayson) Date: Mon, 8 Feb 2010 22:05:00 -0800 Subject: [Live-devel] unicast + streaming on-demand source In-Reply-To: <6340212C-5B59-4B25-A6A8-0C9A55208CA9@silocorp.com> References: <6340212C-5B59-4B25-A6A8-0C9A55208CA9@silocorp.com> Message-ID: >ADTS -- Since the library only includes >ADTSAudioFileServerMediaSubsession, I'm assuming I need to create a >subclass of ServerMediaSubsession capable of reading from our >in-memory frames instead of a file, yes? Yes. >Moving from Multicast to Unicast: The multicast version's working >with of H264VideoRTPSink -> PassiveServerMediaSubsession, but I see >from past list references and the source that >OnDemandServerMediaSubsession's the definitive guide for >unicast-based streams. Yes. > Given that OnDemandServerMediaSubsession is file-based No it's not. It can take any data source - not just a file - as input. However, if you use a live input source (e.g., from an encoder), then be sure to set the "reuseFirstSource" parameter to True, so that the input source object gets reused for all unicast clients. >, does this mean that I need to create a subclass of >ServerMediaSession as well? No, you will need to create a subclass of "ServerMedia*Sub*session" for audio, and another for video. -- Ross Finlayson Live Networks, Inc. http://www.live555.com/ From finlayson at live555.com Mon Feb 8 22:08:29 2010 From: finlayson at live555.com (Ross Finlayson) Date: Mon, 8 Feb 2010 22:08:29 -0800 Subject: [Live-devel] unicast + streaming on-demand source In-Reply-To: References: <6340212C-5B59-4B25-A6A8-0C9A55208CA9@silocorp.com> Message-ID: >... or is the ADTS chunk as simple as writing ADTSAudioRTPSink and >passing that to a PassiveServerMediaSubsession? No, "ADTS" is a file format (for MPEG-4 audio data), not a codec. You will use a "MPEG4GenericRTPSink" - just as is done by the "ADTSAudioFileServerMediaSubsession" class. Also, note that "PassiveServerMediaSubsession" is only for multicast streams. For unicast, you will use (a subclass of) "OnDemandServerMediaSubsession" - similar to the existing "ADTSAudioFileServerMediaSubsession" class. -- Ross Finlayson Live Networks, Inc. http://www.live555.com/ From aurelien at sitadelle.com Tue Feb 9 06:36:26 2010 From: aurelien at sitadelle.com (=?ISO-8859-1?Q?Aur=E9lien_Nephtali?=) Date: Tue, 9 Feb 2010 15:36:26 +0100 Subject: [Live-devel] [PATCH] Fix parseCLine() Message-ID: <5334c8b1002090636o1a6bdcf3j130e97cf69fbd2ee@mail.gmail.com> Hello, The attached patch fixes 'c=' lines looking like this : c=IN IP4 224.0.0.0 Regards, -- Aur?lien Nephtali -------------- next part -------------- A non-text attachment was scrubbed... Name: MediaSession.cpp.diff Type: text/x-diff Size: 569 bytes Desc: not available URL: From finlayson at live555.com Tue Feb 9 06:57:06 2010 From: finlayson at live555.com (Ross Finlayson) Date: Tue, 9 Feb 2010 06:57:06 -0800 Subject: [Live-devel] [PATCH] Fix parseCLine() In-Reply-To: <5334c8b1002090636o1a6bdcf3j130e97cf69fbd2ee@mail.gmail.com> References: <5334c8b1002090636o1a6bdcf3j130e97cf69fbd2ee@mail.gmail.com> Message-ID: >The attached patch fixes 'c=' lines looking like this : > >c=IN IP4 224.0.0.0 That's actually not legal SDP (because 224.0.0.0 is a multicast address, and so the line should have a trailing "/"). However, in the spirit of "be liberal in what you accept", I'll make this change in the next release of the software. -- Ross Finlayson Live Networks, Inc. http://www.live555.com/ From aurelien at sitadelle.com Tue Feb 9 07:28:35 2010 From: aurelien at sitadelle.com (=?ISO-8859-1?Q?Aur=E9lien_Nephtali?=) Date: Tue, 9 Feb 2010 16:28:35 +0100 Subject: [Live-devel] [PATCH] Fix parseCLine() In-Reply-To: References: <5334c8b1002090636o1a6bdcf3j130e97cf69fbd2ee@mail.gmail.com> Message-ID: <5334c8b1002090728o6d6adb79k6e9fb90648d9ffb7@mail.gmail.com> On Tue, Feb 9, 2010 at 3:57 PM, Ross Finlayson wrote: >> The attached patch fixes 'c=' lines looking like this : >> >> c=IN IP4 224.0.0.0 > > That's actually not legal SDP (because 224.0.0.0 is a multicast address, and > so the line should have a trailing "/"). ?However, in the spirit of "be > liberal in what you accept", I'll make this change in the next release of > the software. Hi Ross, You are right, I used a bad example but the issue is the same if it is an unicast address. Regards, -- Aur?lien Nephtali From linun77 at gmail.com Tue Feb 9 09:55:19 2010 From: linun77 at gmail.com (Nuno Cardoso) Date: Tue, 9 Feb 2010 17:55:19 +0000 Subject: [Live-devel] H.264 RTP Packetizer Message-ID: <3cf2debb1002090955n7a85850fka94b172eb694f1ae@mail.gmail.com> Hi all, anyone have a h.264 rtp packetizer? Like the packetizer that vlc use to join h.264 NAL units.. Thanks, Nuno Cardoso. -------------- next part -------------- An HTML attachment was scrubbed... URL: From martinbonnin at gmail.com Tue Feb 9 13:06:39 2010 From: martinbonnin at gmail.com (Martin Bonnin) Date: Tue, 9 Feb 2010 22:06:39 +0100 Subject: [Live-devel] [PATCH] overflow in getResponse1() In-Reply-To: <61ea209e1002091257oaee567anb708dc40ded1dd4c@mail.gmail.com> References: <61ea209e1002091257oaee567anb708dc40ded1dd4c@mail.gmail.com> Message-ID: <61ea209e1002091306x9007420qcec589d21c2c0b1e@mail.gmail.com> Hello all, getResponse1() can overflow by one byte when called from setupMediaSubsession(). The reason is that the 'responseBufferSize' does not include the ending '\0' (see responseBuffer[bytesRead] = '\0' in RTSPClient.cpp around line 2195) The attached patch allocates one byte more, like fResponseBuffer does, so that it is safe to call getResponse1(). Best Regards, -- Martin -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: one_byte_overflow.patch Type: text/x-patch Size: 591 bytes Desc: not available URL: From vlyamtsev at gmail.com Tue Feb 9 13:40:10 2010 From: vlyamtsev at gmail.com (Victor lyamtsev) Date: Tue, 9 Feb 2010 16:40:10 -0500 Subject: [Live-devel] how to create custom sink Message-ID: <76224b101002091340n73355ef9oe04e146d4eae356b@mail.gmail.com> Any idea if i can find any specific example for H.264 ? As i couldn't find base class for H264MediaSubsession, I am trying to create H264 subsession with PassiveServerMediaSubsession::createNew(RTPSink& rtpSink, RTCPInstance* rtcpInstance) The question now is: how to createRTPSink ? The "H264VideoRTPSink" class seems to be an abstruct and doesn't have implemetation for createNew , or readNextFrame... Thank you, -V No, I don't think you need to modify (or subclass) the existing "RTSPServer" at all. Instead you need only define new "ServerMediaSubsession" subclasses - one for your AAC audio source, and another for your H.264 video source. Each subclass will create an appropriate "RTPSource" object ("MPEG4GenericRTPSource " for AAC audio; H264VideoRTPSource for H.264 video) for delivering its input data, and, of course, create appropriate "RTPSink" subclasses ("MPEG4GenericRTPSink " for AAC audio; H264VideoRTPSink for H.264 video) for its output. Specifically, if you want to stream to your clients via multicast, you should define subclasses of "PassiveServerMediaSubsession"; if you want to stream to your clients via unicast, you should define subclasses of "OnDemandServerMediaSubsession". From finlayson at live555.com Tue Feb 9 17:08:23 2010 From: finlayson at live555.com (Ross Finlayson) Date: Tue, 9 Feb 2010 17:08:23 -0800 Subject: [Live-devel] H.264 RTP Packetizer In-Reply-To: <3cf2debb1002090955n7a85850fka94b172eb694f1ae@mail.gmail.com> References: <3cf2debb1002090955n7a85850fka94b172eb694f1ae@mail.gmail.com> Message-ID: >anyone have a h.264 rtp packetizer? Like the packetizer that vlc use >to join h.264 NAL units.. Of course we have a H.264 RTP packetizer: "H264VideoRTPSink". We also have a H.264 RTP depacketizer: "H264VideoRTPSource". (The latter is used in VLC.) -- Ross Finlayson Live Networks, Inc. http://www.live555.com/ From finlayson at live555.com Tue Feb 9 17:09:18 2010 From: finlayson at live555.com (Ross Finlayson) Date: Tue, 9 Feb 2010 17:09:18 -0800 Subject: [Live-devel] how to create custom sink In-Reply-To: <76224b101002091340n73355ef9oe04e146d4eae356b@mail.gmail.com> References: <76224b101002091340n73355ef9oe04e146d4eae356b@mail.gmail.com> Message-ID: > The question now is: how to createRTPSink ? The "H264VideoRTPSink" >class seems to be an abstruct and doesn't have implemetation for >createNew Yes it does - just call "H264VideoRTPSink::createNew()" -- Ross Finlayson Live Networks, Inc. http://www.live555.com/ From finlayson at live555.com Tue Feb 9 17:09:59 2010 From: finlayson at live555.com (Ross Finlayson) Date: Tue, 9 Feb 2010 17:09:59 -0800 Subject: [Live-devel] [PATCH] overflow in getResponse1() In-Reply-To: <61ea209e1002091306x9007420qcec589d21c2c0b1e@mail.gmail.com> References: <61ea209e1002091257oaee567anb708dc40ded1dd4c@mail.gmail.com> <61ea209e1002091306x9007420qcec589d21c2c0b1e@mail.gmail.com> Message-ID: Thanks. I have just released a new version (2010.02.10) of the software, that includes this fix. -- Ross Finlayson Live Networks, Inc. http://www.live555.com/ From bigskang at nimbustek.com Wed Feb 10 00:48:26 2010 From: bigskang at nimbustek.com (William) Date: Wed, 10 Feb 2010 17:48:26 +0900 Subject: [Live-devel] Is it possible to stream H.264 through RTSP? Message-ID: <000001caaa2d$cff412d0$6fdc3870$@com> Hi, I need to begin and finish streaming of H.264 NAL unit through RTSP. I have tried to find such function in testOnDemandRTSPServer, but I can't. I think some more classes are needed, like H264VideoFileServerMediaSubsession. Is there any reason that is not exist now? Thank you. -------------- next part -------------- An HTML attachment was scrubbed... URL: From finlayson at live555.com Wed Feb 10 02:59:17 2010 From: finlayson at live555.com (Ross Finlayson) Date: Wed, 10 Feb 2010 02:59:17 -0800 Subject: [Live-devel] Is it possible to stream H.264 through RTSP? In-Reply-To: <000001caaa2d$cff412d0$6fdc3870$@com> References: <000001caaa2d$cff412d0$6fdc3870$@com> Message-ID: Read the FAQ! -- Ross Finlayson Live Networks, Inc. http://www.live555.com/ From a.nemec at atlas.cz Wed Feb 10 07:17:06 2010 From: a.nemec at atlas.cz (=?utf-8?B?TsSbbWVjIEFsZXhhbmRy?=) Date: Wed, 10 Feb 2010 15:17:06 GMT Subject: [Live-devel] Really blocking? Message-ID: <5c057131cc294f8b898724c306a6672e@09d1e805592c4ef4900a8fd97a7c7460> An HTML attachment was scrubbed... URL: -------------- next part -------------- Hi all, some days ago somebody (Jeremy Noring?) posted the following issue regarding RTSPClient. When using TCP transmission (-t option in openRTSP) then the client can deadlock when the network goes down. This sounds like a big problem because the client generraly should not deadlock on network problems. I tried to reproduce this behaviour, but with no luck. I used openRTSP code for my quick tests, used the -t option and I started some streams from RTSP servers. Then I destroyed the connection several times (cable disconnect etc.) but I was able to finalize the event loop safely with the watch variable with no deadlocks at all. Could anybody (maybe the original poster) put some light on this issue (how to reproduce etc.) ? Best regards Alex From vlyamtsev at gmail.com Wed Feb 10 08:15:57 2010 From: vlyamtsev at gmail.com (Victor lyamtsev) Date: Wed, 10 Feb 2010 11:15:57 -0500 Subject: [Live-devel] how to create custom sink Message-ID: <76224b101002100815p72e96603rb0fc1977cbd8cfd5@mail.gmail.com> Ok, yes it does... How can I start reading from it? Yes it does - just call "H264VideoRTPSink::createNew()" From jnoring at logitech.com Wed Feb 10 10:50:41 2010 From: jnoring at logitech.com (Jeremy Noring) Date: Wed, 10 Feb 2010 10:50:41 -0800 Subject: [Live-devel] Really blocking? In-Reply-To: <5c057131cc294f8b898724c306a6672e@09d1e805592c4ef4900a8fd97a7c7460> References: <5c057131cc294f8b898724c306a6672e@09d1e805592c4ef4900a8fd97a7c7460> Message-ID: <988ed6931002101050j74b16acbs2fbd2908f7fd3e3d@mail.gmail.com> 2010/2/10 N?mec Alexandr > Hi all, > some days ago somebody (Jeremy Noring?) posted the following issue > regarding RTSPClient. When using TCP transmission (-t option in openRTSP) > then the client can deadlock when the network goes down. This sounds like a > big problem because the client generraly should not deadlock on network > problems. I tried to reproduce this behaviour, but with no luck. I used > openRTSP code for my quick tests, used the -t option and I started some > streams from RTSP servers. Then I destroyed the connection several times > (cable disconnect etc.) but I was able to finalize the event loop safely > with the watch variable with no deadlocks at all. Could anybody (maybe the > original poster) put some light on this issue (how to reproduce etc.) ? > I was actually pulling the plug on the RTSP Server, so my network was still good but the server "went away," but I'd expect you could reproduce it simply by unplugging your network cable (?). Also, I'm using the RTSP client on Windows, if that makes any difference. That said, I'd only reproduce the hang if the code is in a few areas (any of the select() statements with no timeouts), so it does not reproduce 100% of the time (my guess is maybe one attempt in ten?). I would be interested in whether or not you can reproduce this bug--it's definitely not something that is easy to reproduce, but I'm absolutely positive that I've seen it (multiple times, and in several different select() calls). -------------- next part -------------- An HTML attachment was scrubbed... URL: From chouhan.nishesh at gmail.com Wed Feb 10 19:01:10 2010 From: chouhan.nishesh at gmail.com (nishesh chouhan) Date: Thu, 11 Feb 2010 08:31:10 +0530 Subject: [Live-devel] SR in RTCP Message-ID: hi all, I am using live555 to stream out encoded a/v and playing the a/v through vlc client using rtsp url, the problem here is audio/video is not in sync.. audio is lagging video slightly..when I put ethereal on client side(vlc side) I see only RTCP RR packets and no SR packets are seen, I am just wondering if that could be the reason of async, if yes how can I enable rtcp SR from server? Thanks in Advance. Nishesh -------------- next part -------------- An HTML attachment was scrubbed... URL: From finlayson at live555.com Wed Feb 10 19:38:10 2010 From: finlayson at live555.com (Ross Finlayson) Date: Wed, 10 Feb 2010 19:38:10 -0800 Subject: [Live-devel] SR in RTCP In-Reply-To: References: Message-ID: >I am using live555 to stream out encoded a/v and playing the a/v >through vlc client using rtsp url, the problem here is audio/video >is not in sync.. >audio is lagging video slightly..when I put ethereal on client >side(vlc side) I see only RTCP RR packets and no SR packets are >seen, I am just wondering if that could be the reason of async, >if yes how can I enable rtcp SR from server? You need to create a "RTCPInstance" object for each "RTPSink". (If you are using a class derived from "OnDemandServerMediaSubsession", then this happens automatically.) -- Ross Finlayson Live Networks, Inc. http://www.live555.com/ From finlayson at live555.com Wed Feb 10 19:47:59 2010 From: finlayson at live555.com (Ross Finlayson) Date: Wed, 10 Feb 2010 19:47:59 -0800 Subject: [Live-devel] how to create custom sink In-Reply-To: <76224b101002100815p72e96603rb0fc1977cbd8cfd5@mail.gmail.com> References: <76224b101002100815p72e96603rb0fc1977cbd8cfd5@mail.gmail.com> Message-ID: >Yes it does - just call "H264VideoRTPSink::createNew()" >Ok, yes it does... How can I start reading from it? Call yourSink<-startPlaying( ... ); then env->taskScheduler().doEventLoop(); (unless you're already running in the event loop) -- Ross Finlayson Live Networks, Inc. http://www.live555.com/ From a.nemec at atlas.cz Thu Feb 11 00:08:57 2010 From: a.nemec at atlas.cz (=?utf-8?B?TsSbbWVjIEFsZXhhbmRy?=) Date: Thu, 11 Feb 2010 08:08:57 GMT Subject: [Live-devel] Really blocking? Message-ID: An HTML attachment was scrubbed... URL: -------------- next part -------------- So was I. I also made the RTSP server unavailable by disconnecting the cable from the *server*, so the client's network interface was running ok. Moreover, I also made my tests on Windows, so I think test conditions are the same. I now made 20 trials of disconnecting the server from the network but I was not able to reproduce the deadlock. But I think, however, that it can eventually happen (according to what I see in the code). How did you finally solve this problem? Just adding by adding a timeout or are further code changes necessary? We would also like to handle this, because this deadlock might be dangerous for our application. Best regards Alex 2010/2/10 N?mec Alexandr Hi all, some days ago somebody (Jeremy Noring?) posted the following issue regarding RTSPClient. When using TCP transmission (-t option in openRTSP) then the client can deadlock when the network goes down. This sounds like a big problem because the client generraly should not deadlock on network problems. I tried to reproduce this behaviour, but with no luck. I used openRTSP code for my quick tests, used the -t option and I started some streams from RTSP servers. Then I destroyed the connection several times (cable disconnect etc.) but I was able to finalize the event loop safely with the watch variable with no deadlocks at all. Could anybody (maybe the original poster) put some light on this issue (how to reproduce etc.) ? I was actually pulling the plug on the RTSP Server, so my network was still good but the server "went away," but I'd expect you could reproduce it simply by unplugging your network cable (?). Also, I'm using the RTSP client on Windows, if that makes any difference. That said, I'd only reproduce the hang if the code is in a few areas (any of the select() statements with no timeouts), so it does not reproduce 100% of the time (my guess is maybe one attempt in ten?). I would be interested in whether or not you can reproduce this bug--it's definitely not something that is easy to reproduce, but I'm absolutely positive that I've seen it (multiple times, and in several different select() calls). From chouhan.nishesh at gmail.com Thu Feb 11 02:14:23 2010 From: chouhan.nishesh at gmail.com (nishesh chouhan) Date: Thu, 11 Feb 2010 15:44:23 +0530 Subject: [Live-devel] SR in RTCP Message-ID: hi, I am using MPEG4VideoFileServerMediaSubsession in my application which is derived from FileServerMediaSubsession which in turn is derived from OnDemandServerMediaSubsession, does that mean I dont have to create RTCPInstance explicitly ? but yet I do not see any SR (send report) packet going from server to vlc client...then I tried creating RTCPInstance explicitly but not sure how to use it..can you pls explain me some logic to send SR..and can that be the reason for a/v not in sync....appreciate your support. Thanks, Nishesh -------------- next part -------------- An HTML attachment was scrubbed... URL: From jnoring at logitech.com Thu Feb 11 12:37:52 2010 From: jnoring at logitech.com (Jeremy Noring) Date: Thu, 11 Feb 2010 12:37:52 -0800 Subject: [Live-devel] Really blocking? In-Reply-To: References: Message-ID: <988ed6931002111237y5d0d65c4p84296fb643ed622b@mail.gmail.com> 2010/2/11 N?mec Alexandr > So was I. > I also made the RTSP server unavailable by disconnecting the cable from the > *server*, so the client's network interface was running ok. Moreover, I also > made my tests on Windows, so I think test conditions are the same. I now > made 20 trials of disconnecting the server from the network but I was not > able to reproduce the deadlock. But I think, however, that it can eventually > happen (according to what I see in the code). How did you finally solve this > problem? Just adding by adding a timeout or are further code changes > necessary? We would also like to handle this, because this deadlock might be > dangerous for our application. > Yes, I just added a timeout everywhere readSocket* (both variants of the function) gets called. I used 2 seconds; it is not clear to me if this is a safe change or not. I'm also wondering if my other recent patch to set the socket _back_ to blocking if a timeout to the RTSPClient is given can effect this bug; what version of Live555 are you testing with? -------------- next part -------------- An HTML attachment was scrubbed... URL: From finlayson at live555.com Thu Feb 11 14:28:25 2010 From: finlayson at live555.com (Ross Finlayson) Date: Fri, 12 Feb 2010 09:28:25 +1100 Subject: [Live-devel] SR in RTCP In-Reply-To: References: Message-ID: >I am using MPEG4VideoFileServerMediaSubsession in my application >which is derived from FileServerMediaSubsession which in turn is >derived from OnDemandServerMediaSubsession, >does that mean I dont have to create RTCPInstance explicitly ? That's correct. >but yet I do not see any SR (send report) packet going from server >to vlc client What happens when you run one of the supplied demo unicast RTSP server applications: "testOnDemandRTSPServer" or "live555MediaServer"? If you see SR packets with these servers - but not with your own custom code - then unfortunately I probably can't help you. If you don't see SR packets even with the supplied demo server applications, then you must have a firewall somewhere that is blocking them. >can that be the reason for a/v not in sync Yes, of course. RTCP is how a/v synchronization works. -- Ross Finlayson Live Networks, Inc. http://www.live555.com/ From stud.garant at gmail.com Thu Feb 11 22:11:47 2010 From: stud.garant at gmail.com (Alex Somov) Date: Fri, 12 Feb 2010 08:11:47 +0200 Subject: [Live-devel] MPEG2TransportStreamIndexer and H264 Message-ID: <25d5d4be1002112211n76670af7g813d00c84eebdd2e@mail.gmail.com> Hi Ross, I'm trying to create tsx-index file for ts-file with h.264 video (HD video). I identified I-slice NAL units in ts-file. But when I marked PES data from Access Unit Delimiter that contain I-slice (Access unit delimiter, SEI and VLC NALU with type: Coded slice of non-IDR picture, type slice is I) 00 00 00 01 09 10 00 00 | 00 01 06 00 01 c0 06 01 c4 01 01 14 80 00 00 00 | 01 21 b9 06 26 50 84 26 .... to begin new AU Delimiter as RECORD_PIC_IFRAME tsx-file is creating, but fast forward and reverse play not work. I see black screen. Can you help me? What PES data I must marked as RECORD_PIC_IFRAME from... to... for normal working trick-mode. Thanks, Alex. -------------- next part -------------- An HTML attachment was scrubbed... URL: From a.nemec at atlas.cz Thu Feb 11 23:35:53 2010 From: a.nemec at atlas.cz (=?utf-8?B?TsSbbWVjIEFsZXhhbmRy?=) Date: Fri, 12 Feb 2010 07:35:53 GMT Subject: [Live-devel] Really blocking? Message-ID: <50bb21dde2314c9aad934a59a6ce79ce@e505a208b99a4a2f9f1035b66b6d9fc5> An HTML attachment was scrubbed... URL: -------------- next part -------------- Hi, now I am using the 10.01.22 version. But anyway, I do not use timeouts, so according to what I see in the code, my socket is not changed to non-bloking in my tests. Alex From Rene.Brenner at ruf.ch Fri Feb 12 01:03:43 2010 From: Rene.Brenner at ruf.ch (Brenner Rene) Date: Fri, 12 Feb 2010 10:03:43 +0100 Subject: [Live-devel] openRTSP and corrupt streams Message-ID: Hello all I would like to record with openRTSP a stream from a h264 camera for a certain amount of time say 5 minutes. Now when I hard-switch off the system I assume the stream end is corrupt. Is there a tool or library which scans the h264 for corruption and fixes it? Thanks Ren? -------------- next part -------------- An HTML attachment was scrubbed... URL: From linun77 at gmail.com Fri Feb 12 02:03:46 2010 From: linun77 at gmail.com (Nuno Cardoso) Date: Fri, 12 Feb 2010 10:03:46 +0000 Subject: [Live-devel] H.264 RTSP/RTP capture Message-ID: <3cf2debb1002120203ha0385f9u100a48af736853cd@mail.gmail.com> Hi list, When I use ip cameras that uses rtsp/rtp protocol, if the camera sends the video stream in mjpeg or mpeg4 the system works well (I'm using live555 to capture rtsp streams). I receive all the image and send it to the filter decoder to decompress the image. When the camera sends H.264 over RTP, I receive one NAL unit in one RTP packet... packetizer mode = 1. I implement a packetizer like vlc packetizer, but after a few secons I receive this message: [h264 @ 0x8fa0a50]number of reference frames exceeds max (probably corrupt input), discarding one. What I need to do to solve this? Can anyone help me? Sequence of frames (Hex): 1) 67 42 E0 14 DA 05 82 51 (nal unit type - 7 Sequence Parameter Set) 2) 68 CE 30 A4 80 (nal unit type - 8 Picture Parameter Set) 3) 06 E5 01 88 80 (nal unit type - 6 SEI Supplemental enhancement information) 4) 65 B8 .... (nal unit type - 5 Coded slice of an IDR picture) first I picture 5) 61 E2 .... (nal unit type - 1 Coded slice of a non-IDR picture) first P picture ...... What I understand from VLC code is that I need to find the first sincronization start code and join (1, 2, 3 and 4) to contruct one frame to decode, and frame 5, .... all P frames, and so one. Have anyone code to do this? Thanks, Nuno Cardoso. -------------- next part -------------- An HTML attachment was scrubbed... URL: From vdiago at gmail.com Fri Feb 12 06:43:03 2010 From: vdiago at gmail.com (Victor Diago) Date: Fri, 12 Feb 2010 12:43:03 -0200 Subject: [Live-devel] StreamClose in vlc under linux (just like that in BSD) Message-ID: <7768a81f1002120643u22d0d453r6f70e7cb75ac391@mail.gmail.com> Good morning, and thank you for your great software. Im victor from Brazil, and I am having a issue using vlc with rtsp support (livemedia). Im getting a stream from an axis camera (rtsp/mpeg4) on linux, and everytime i get around 7 minutes of streaming, vlc says i have reached EOF. and it stops transcoding. This is VERY strange because i have already set timeout in camera?s options to more than 2 hours ! and if i open on windows i can watch without any problem. I have compilled the latest vlc and livemedia package ! PLEASE can you help me with this ? i just need to understand why this is happening and solve it. Thank you very much. -- Victor Diago. ID : 55*9*35834 Fone: 11 8443-8510 Fone: 11 7887-7047 Diretor de Projetos COLEM?DIA Publicidade e Propaganda From vdiago at gmail.com Fri Feb 12 08:11:18 2010 From: vdiago at gmail.com (Victor Diago) Date: Fri, 12 Feb 2010 14:11:18 -0200 Subject: [Live-devel] StreamClose in vlc under linux (just like that in BSD) In-Reply-To: <7768a81f1002120643u22d0d453r6f70e7cb75ac391@mail.gmail.com> References: <7768a81f1002120643u22d0d453r6f70e7cb75ac391@mail.gmail.com> Message-ID: <7768a81f1002120811g5dda746do371eeff93dfe17c7@mail.gmail.com> This is what happens : [0x810aeb8] live555 demux debug: StreamClose [0x81068b0] main input debug: EOF reached [0x81068b0] main input debug: waiting decoder fifos to empty vbv buffer overflow [0x814de38] faad decoder debug: AAC SBR (channels: 2, samplerate: 16000) [0x810aaf0] stream_out_transcode stream out debug: drift is too high, resetting master sync [0x814de38] faad decoder debug: AAC SBR (channels: 2, samplerate: 16000) [0x810aaf0] stream_out_transcode stream out debug: drift is too high, resetting master sync [0x8148f58] main packetizer debug: removing module "packetizer_mpeg4video" [0x8148f58] main packetizer debug: killing decoder fourcc `mp4v', 0 PES in FIFO [0x810a360] main stream output debug: removing a sout input (sout_input:0x814d5a8) [0x817f590] main encoder debug: TIMER encoding video frame : 0.917 ms - Total 1888.873 ms / 1869 intvls (Avg 1.011 ms) [0x817ec30] avcodec decoder debug: ffmpeg codec (MPEG-4 Video) stopped [0x817ec30] main decoder debug: removing module "avcodec" [0x817f590] main encoder debug: removing module "avcodec" [0x810f790] avformat mux debug: removing input [0x80fafd0] main playlist debug: finished input [0x81472e8] main packetizer debug: removing module "packetizer_mpeg4audio" [0x81472e8] main packetizer debug: killing decoder fourcc `mp4a', 0 PES in FIFO [0x810a360] main stream output debug: removing a sout input (sout_input:0x814d848) [0x8154e88] main encoder debug: TIMER encoding audio frame : 2.860 ms - Total 8633.037 ms / 3011 intvls (Avg 2.867 ms) [0x814de38] main decoder debug: removing module "faad" [0x8154e88] main encoder debug: removing module "avcodec" [0x810aaf0] main stream out debug: Filter 'bandlimited_resampler' (0x815c1e0) removed from chain [0x815c1e0] main filter debug: removing module "bandlimited_resampler" [0x810aaf0] main stream out debug: Filter 'simple_channel_mixer' (0x8178cc0) removed from chain [0x8178cc0] main filter debug: removing module "simple_channel_mixer" [0x810aaf0] main stream out debug: Filter 'audio_format' (0x817a0f8) removed from chain [0x817a0f8] main filter debug: removing module "audio_format" [0x810f790] avformat mux debug: removing input [0x810f790] main mux warning: no more input streams for this mux Sending request: TEARDOWN rtsp://192.168.0.150:1080/mpeg4/media.amp/ RTSP/1.0 CSeq: 15 Session: 0993223823 Authorization: Basic cm9vdDpyM3N0cjF0MA== User-Agent: VLC media player (LIVE555 Streaming Media v2009.11.27) [0x810aeb8] main demux debug: removing module "live555" [0x81068b0] main input debug: Program doesn't contain anymore ES [0x81068b0] main input debug: thread ended [0x80fafd0] main playlist debug: dead input [0x810a360] main stream output debug: destroying useless sout [0x810aaf0] main stream out debug: destroying chain... (name=transcode) [0x810b8c8] main stream out debug: destroying chain... (name=std) [0x810d858] access_output_http access out warning: HTTP sout access cannot seek [0x810d858] access_output_http access out warning: HTTP sout access cannot seek [0x810d858] access_output_http access out warning: HTTP sout access cannot seek [0x810f790] main mux debug: removing module "avformat" [0x810f560] main http server warning: force closing connections [0x810f560] main http server debug: waitpipe: object killed [0x810f560] main http server debug: HTTP host removed [0x810ee60] main http server debug: no hosts left, stopping httpd [0x810d858] access_output_http access out debug: Close [0x810d858] main access out debug: removing module "access_output_http" [0x810b8c8] main stream out debug: removing module "stream_out_standard" [0x810b8c8] main stream out debug: destroying chain done [0x810aaf0] main stream out debug: removing module "stream_out_transcode" [0x810aaf0] main stream out debug: destroying chain done [0x81068b0] main input debug: TIMER input launching for 'rtsp://ip_address:1080/mpeg4/media.amp' : 3360.048 ms - Total 3360.048 ms / 1 intvls (Avg 3360.048 ms) [0x80fafd0] main playlist debug: changing item without a request (current 0/1) [0x80fafd0] main playlist debug: nothing to play In windows it doesNOT happens ! Thanks in advance From finlayson at live555.com Fri Feb 12 19:52:41 2010 From: finlayson at live555.com (Ross Finlayson) Date: Sat, 13 Feb 2010 13:52:41 +1000 Subject: [Live-devel] H.264 RTSP/RTP capture In-Reply-To: <3cf2debb1002120203ha0385f9u100a48af736853cd@mail.gmail.com> References: <3cf2debb1002120203ha0385f9u100a48af736853cd@mail.gmail.com> Message-ID: >When I use ip cameras that uses rtsp/rtp protocol, if the camera >sends the video stream in mjpeg or mpeg4 the system works well (I'm >using live555 to capture rtsp streams). I receive all the image and >send it to the filter decoder to decompress the image. When the >camera sends H.264 over RTP, I receive one NAL unit in one RTP >packet... packetizer mode = 1. I implement a packetizer like vlc >packetizer, but after a few secons I receive this message: [h264 @ >0x8fa0a50]number of reference frames exceeds max (probably corrupt >input), discarding one. This is a VLC error; not an issue with our software. You will need to contact a VLC mailing list for help. -- Ross Finlayson Live Networks, Inc. http://www.live555.com/ From finlayson at live555.com Fri Feb 12 20:08:01 2010 From: finlayson at live555.com (Ross Finlayson) Date: Sat, 13 Feb 2010 14:08:01 +1000 Subject: [Live-devel] StreamClose in vlc under linux (just like that in BSD) In-Reply-To: <7768a81f1002120643u22d0d453r6f70e7cb75ac391@mail.gmail.com> References: <7768a81f1002120643u22d0d453r6f70e7cb75ac391@mail.gmail.com> Message-ID: >Im victor from Brazil, and I am having a issue using vlc with rtsp >support (livemedia). > >Im getting a stream from an axis camera (rtsp/mpeg4) on linux, and >everytime i get around 7 minutes of streaming, vlc says i have reached >EOF. and it stops transcoding. > >This is VERY strange because i have already set timeout in camera?s >options to more than 2 hours ! and if i open on windows i can watch >without any problem. What happens if you use "openRTSP" as your RTSP client? -- Ross Finlayson Live Networks, Inc. http://www.live555.com/ From loemaster at freenet.de Sun Feb 14 07:22:40 2010 From: loemaster at freenet.de (Jan Szczepanski) Date: Sun, 14 Feb 2010 16:22:40 +0100 Subject: [Live-devel] Combine units for H264 Message-ID: <6d25e409a770fdd31ae43173b78418f3@email.freenet.de> Hi list, ? I've got three questions. But let me start with my "idea" (short version). I wanne create a Simple Player (h264 decoding with IPP) combined with the openRTSP Client (Problem 1... later). With these Simple Player i wanna "connect" to the LiveMedia Server combined with the openRTSP Client to stream the frames from my IP Camera. (Problem 2) ? Problem 1: My IPP decoder is runnin, I tested this unit with an .h264 testfile, but I can't decode h264 which is incomming from the camera. Is there a class which can handle the NAL Units and put everything togehter or maybe create an h264 bitstream ? ? Problem 2: How can I put the LiveMedia Server and the openRTSP Client togehter ? (Simple Player is one PC in the Internet, die LiveMedia Server with openRTSP is on another server or PC and is responsible for receiving and streaming frames to the simple player) ? Problem 3: ... maybe not really for this maillist... but is someone of you really into IPP (Intel Performance Primitives) and solved the Problem in "Problem 1" ? ? thanks for help, with best regards Jan (janszczepanski at freenet.de) ? -------------- next part -------------- An HTML attachment was scrubbed... URL: From finlayson at live555.com Sun Feb 14 13:30:13 2010 From: finlayson at live555.com (Ross Finlayson) Date: Mon, 15 Feb 2010 07:30:13 +1000 Subject: [Live-devel] Combine units for H264 In-Reply-To: <6d25e409a770fdd31ae43173b78418f3@email.freenet.de> References: <6d25e409a770fdd31ae43173b78418f3@email.freenet.de> Message-ID: >Problem 1: My IPP decoder is runnin, I tested this unit with an >.h264 testfile, but I can't decode h264 which is incomming from the >camera. Is there a class which can handle the NAL Units and put >everything togehter or maybe create an h264 bitstream ? Yes: "H264FileSink". I suggest that you run "openRTSP" with the "-v" option, to output a H.264 bytestream to 'stdout', and then pipe this into your decoder application (which reads from 'stdin'). >Problem 2: How can I put the LiveMedia Server and the openRTSP >Client togehter ? (Simple Player is one PC in the Internet, die >LiveMedia Server with openRTSP is on another server or PC and is >responsible for receiving and streaming frames to the simple player) They're seperate applications, so just run them as separate applications. -- Ross Finlayson Live Networks, Inc. http://www.live555.com/ From kidjan at gmail.com Sun Feb 14 14:33:33 2010 From: kidjan at gmail.com (Jeremy Noring) Date: Sun, 14 Feb 2010 14:33:33 -0800 Subject: [Live-devel] openRTSP and corrupt streams In-Reply-To: References: Message-ID: On Fri, Feb 12, 2010 at 1:03 AM, Brenner Rene wrote: > Hello all > > I would like to record with openRTSP a stream from a h264 camera for a > certain amount of time say 5 minutes. Now when I hard-switch off the system > I assume the stream end is corrupt. Is there a tool or library which scans > the h264 for corruption and fixes it? This isn't the right mailing list to ask such a question, but doing this is trivial--just look for the NAL unit identifier (either 0x00000001 or sometimes 0x000001) and discard the last NAL unit. From ziyad.sharaf at gmail.com Mon Feb 15 08:20:07 2010 From: ziyad.sharaf at gmail.com (ziyad sharafudheen) Date: Mon, 15 Feb 2010 21:50:07 +0530 Subject: [Live-devel] RTSP Session timeout Message-ID: <8eb8e71d1002150820h4ca23cf1v988e04644a1b17de@mail.gmail.com> Hi, I am using live555 as a RTSP VOD server (in windows platform). The client uses tcp (RTP) as the transport. We are able to demonstrate the trick mode also. But the session timesout in a minute. Is there any option to increase the RTSP sessin timeout? Regards Ziyad -------------- next part -------------- An HTML attachment was scrubbed... URL: From finlayson at live555.com Tue Feb 16 00:35:23 2010 From: finlayson at live555.com (Ross Finlayson) Date: Tue, 16 Feb 2010 18:35:23 +1000 Subject: [Live-devel] RTSP Session timeout In-Reply-To: <8eb8e71d1002150820h4ca23cf1v988e04644a1b17de@mail.gmail.com> References: <8eb8e71d1002150820h4ca23cf1v988e04644a1b17de@mail.gmail.com> Message-ID: >I am using live555 as a RTSP VOD server (in windows platform). > >The client uses tcp (RTP) as the transport. We are able to >demonstrate the trick mode also. But the session timesout in a >minute. The session is timing out because the server is not seeing any communication from the client. Your client should be sending periodic RTCP "RR" packets. (If your client doesn't do this, then it's not standards-compliant.) However, if you wish, you can disable the session timeout completely by setting the "reclamationTestSeconds" parameter (in "RTSPServer::createNew()") to 0. (I don't recommend this, though. Instead, you should fix your client.) -- Ross Finlayson Live Networks, Inc. http://www.live555.com/ -------------- next part -------------- An HTML attachment was scrubbed... URL: From sebastien-devel at celeos.eu Tue Feb 16 06:51:28 2010 From: sebastien-devel at celeos.eu (=?iso-8859-1?b?U+liYXN0aWVu?= Escudier) Date: Tue, 16 Feb 2010 15:51:28 +0100 Subject: [Live-devel] live555 blocked on a select Message-ID: <1266331888.4b7ab0f0e234b@imp.celeos.eu> Hi, In certain circumstances, the library is blocked on a select call. The call stack is [1]. I think it occurs when the library tries to open a stream which is being closed at the same time, but I am not sure because I can't reproduce this easily. To test this case, I added a 30 seconds timeout to readSocket() in getResponse1 line 2190, and when the lock is happening, then it unblocks after the timeout. Would you have any idea ? Regards, Seb. [1] BasicTaskScheduler0::doEventLoop line 76 BasicTaskScheduler::SingleStep line 115 RTSPClient::incomingRequestHandler line 2501 RTSPClient::incomingRequestHandler1 line 2507 RTSPClient::getResponse1 line 2190 readSocket in GroupsockHelper.cpp line 223 select() From finlayson at live555.com Tue Feb 16 14:54:35 2010 From: finlayson at live555.com (Ross Finlayson) Date: Wed, 17 Feb 2010 08:54:35 +1000 Subject: [Live-devel] live555 blocked on a select In-Reply-To: <1266331888.4b7ab0f0e234b@imp.celeos.eu> References: <1266331888.4b7ab0f0e234b@imp.celeos.eu> Message-ID: >In certain circumstances, the library is blocked on a select call. >The call stack is [1]. >I think it occurs when the library tries to open a stream which is >being closed >at the same time That shouldn't be happening, because everything runs in a single thread. In each place in the code where a socket gets closed, "TaskScheduler::turnOffBackgroundReadHandling()" is supposed to also be called. This ensures that - once the code returns to the event loop afterwards - that socket number will no longer be among those accessed by "select()". (I assume that you are using the latest version of the code, because there were changes made in January to fix a bug like this.) >, but I am not sure because I can't reproduce this easily. If you can track this down some more, please let us know. -- Ross Finlayson Live Networks, Inc. http://www.live555.com/ From sebastien-devel at celeos.eu Wed Feb 17 07:57:00 2010 From: sebastien-devel at celeos.eu (=?iso-8859-1?b?U+liYXN0aWVu?= Escudier) Date: Wed, 17 Feb 2010 16:57:00 +0100 Subject: [Live-devel] live555 blocked on a select In-Reply-To: References: <1266331888.4b7ab0f0e234b@imp.celeos.eu> Message-ID: <1266422220.4b7c11cc667fa@imp.celeos.eu> > If you can track this down some more, please let us know. Ok, so the client is blocked in RTSPClient.cpp -> getResponse1 line 2191 in a readsocket call. The comment in the file says : // Keep reading data from the socket until we see "\r\n\r\n" (except // at the start), or until we fill up our buffer. // Don't read any more than this. and at this point the buffer (what has been read in the socket) is [1] (404 not found, ending with \r\n) So obviously, it won't go any further, because the server won't send anything more, and live555 client is waiting for another \r\n This happens in some rare cases, and most of the time, the same answer (404 not found with no \r\n\r\n at the end) is correctly received and handled by my live555 client. Do you have any idea what is wrong in this case ? Regards, seb. [1] \n\n\n\nNot found\n\n\n

404 Not found (/vod_03040)

\n
\nVideoLAN\n\n\n554/vod_03040/trackID=0\r\n From finlayson at live555.com Thu Feb 18 09:21:15 2010 From: finlayson at live555.com (Ross Finlayson) Date: Fri, 19 Feb 2010 03:21:15 +1000 Subject: [Live-devel] Reminder: Please use professional email addresses on this mailing list Message-ID: A reminder, once again, that if you want to be taken seriously on this mailing list, you should use a professional email address - i.e., one with a domain name that represents an organization (company or school), or at least a custom domain name. If, instead, you use a casual 'hobbyist' email address - e.g., "@yahoo", "@gmail", "@hotmail", "@aol" - I'm going to assume (absent strong evidence to the contrary) that you're just an inexperienced newbie, working out of your parents' basement. Posts from such email addresses will *always* be moderated and delayed (sometimes for several days), and I will usually not bother responding to them. (In contrast, people who use professional email addresses will often have only their first post to the mailing list moderated, and I am much more likely to answer their questions.) I'm serious about this. This software is intended for experienced developers of system software - not beginning, casual programmers. If you don't have the sophistication to use a professional email address, then this software is probably not for you. Recently, I have been seeing many posts from people who are clearly way out of their depth - and almost all of these have been from "@gmail" etc. email addresses. I don't want to have to ban such email addresses from posting to the mailing list, but I have no choice but to treat them less seriously. -- Ross Finlayson Live Networks, Inc. http://www.live555.com/ From adobestreaming at live.be Thu Feb 18 06:56:19 2010 From: adobestreaming at live.be (aqsdfqs bqsdfsqdf) Date: Thu, 18 Feb 2010 15:56:19 +0100 Subject: [Live-devel] openRTSP Message-ID: Hello, in our test setup we want to record an RTSP session containing 52 media tracks (AVC/AAC). We also want all the tracks to be synchronized. For this purpose, we use the openRTSP tool (using the QuickTimeFileSink through the -4 openRTSP flag) (version: live.2009.09.28, building on linux). We experienced, however, that on rare occasions the recording does not start (i.e. the output file's size does not increase). We tried to debug the code on such an event and we checked the syncOK function of the SubsessionIOState class because, apparently, the ioState->afterGettingFrame(packetDataSize, presentationTime); never got called. We found out that in such an erroneous case, some tracks (mostly just one) never get synchronized (the fHaveBeenSynced flag of the SubsessionIOstate class does not get set). Therefore, we went deeper into the code until the point of the BasicTaskscheduler. Here we see that after calling the select statement in the "void BasicTaskScheduler::SingleStep(unsigned maxDelayTime)" function, we only get a limited number of readable sockets as a return value. If, for example, we have 52 media tracks, we create at least 104 sockets (52 for RTP and 52 for RTCP), but the result value is never 104 or higher, no matter how long we wait in between two select calls. This makes us believe that the accompaniment socket of the track is never read, and for example the RTCP SR is not parsed to get that track synchronized. We also observed that data is actually being send to all the sockets (and correct port numbers) and that sockets are correctly created (socket number> -1) and added to the read set before the select call. Do you have any similar experiences or any ideas on what might go wrong here? Kind regards. _________________________________________________________________ Windows 7: kijk live tv, rechtstreeks vanaf je laptop. Meer informatie. http://windows.microsoft.com/windows-7 From rafael.carre at gmail.com Wed Feb 17 23:47:49 2010 From: rafael.carre at gmail.com (=?UTF-8?B?UmFmYcOrbCBDYXJyw6k=?=) Date: Thu, 18 Feb 2010 08:47:49 +0100 Subject: [Live-devel] [PATCH] Fixes for armlinux makefile Message-ID: <20100218084749.62d10256@kru> Hi, I use the attached patch in VLC build system to build live555 for armlinux, it'd be nice to have it included in the next live555 Here is the list of changes: My toolchain is not arm-elf-* but arm-angstrom-linux-gnueabi-* so I only set CROSS_COMPILE if it isn't previously set in the environment. C++ compiler and link command are hardcoded to gcc but g++ is present so I just use it. LIBRARY_LINK command needs a final space, "ar crOUTPUT" isn't correct, but LIBRARY_LINK needs (?) to be concatenated to the output filename in the "ld -oOUTPUT" case Remove -L. link option since it isn't accepted by ar (I didn't need it for linking with g++, I could change LIBRARY_LINK_OPTS to "" and keep LINK_OPTS as is for g++ Regards, -- Rafa?l Carr? -------------- next part -------------- A non-text attachment was scrubbed... Name: live-armlinux.patch Type: text/x-patch Size: 985 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 197 bytes Desc: not available URL: From ziyad.sharaf at gmail.com Wed Feb 17 09:32:32 2010 From: ziyad.sharaf at gmail.com (ziyad sharafudheen) Date: Wed, 17 Feb 2010 23:02:32 +0530 Subject: [Live-devel] Play/Pause Commands not honoured Message-ID: <8eb8e71d1002170932k92dea48lb04a69ddcf7226c6@mail.gmail.com> Hi, I am using live555 rtsp server for video streaming. The transport used is tcp with interleaved (but not sending receiver reports). Trick mode options are not working for us. Play request with normal scale works perfectly (we get the ok response), but when we send a play request for 2x, 4x etc, the live555 server does not respond with OK. The behavior is the same when we issue pause request after a play request. I have pasted below the rtsp packet exchange happening between server and client. The last request (in bold) is a play request with 2x scale for which the server has not responded. Kindly help us in proceeding further. OPTIONS rtsp://10.222.42.22:554/MSakshi.ts RTSP/1.0\r\n CSeq: 1 \r\n User-Agent: Demo\r\n\r\n RTSP/1.0 200 OK\r\n CSeq: 1\r\n Date: Wed, Feb 17 2010 13:03:58 GMT \r\n Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, SET_PARAMETER\r\n\r\n DESCRIBE rtsp://10.222.42.22:554/MSakshi.ts RTSP/1.0\r\n CSeq: 2\r\n Accept: application/sdp\r\n Bandwidth: 20971600\r\n User-Agent: Demo\r\n\r\n RTSP/1.0 200 OK\r\n CSeq: 2\r\n Date: Wed, Feb 17 2010 13:03:58 GMT \r\n Content-Base: rtsp://10.222.42.22/MSakshi.ts/\r\n Content-type: application/sdp Content-length: 405 RTSP/1.0\r\n Session Description Protocol Version (v):0 SETUP rtsp://10.222.42.22:554/MSakshi.ts RTSP/1.0\r\n CSeq: 3\r\n Transport: RTP/AVP/TCP;unicast;interleaved=0-1\r\n User-Agent: Demo\r\n\r\n RTSP/1.0 200 OK\r\n CSeq: 3\r\n Date: Wed, Feb 17 2010 13:03:58 GMT \r\n Transport: RTP/AVP/TCP;unicast;destination=10.222.42.87;source=10.222.42.22;interleaved=0-1\r\n Session:00001E86\r\n PLAY rtsp://10.222.42.22:554/MSakshi.ts RTSP/1.0\r\n CSeq: 4\r\n Scale: 1\r\n Speed: 4\r\n Session: 00001E86 User-Agent: Demo\r\n\r\n RTSP/1.0 200 OK\r\n CSeq: 4\r\n Date: Wed, Feb 17 2010 13:03:58 GMT \r\n Scale: 1.000000\r\n Session:00001E86 RTP-Info: url=rtsp:// 10.222.42.22/MSakshi.ts/track1;seq=20695;rptime=2147493674\r\n ** *PLAY rtsp://10.222.42.22:554/MSakshi.ts RTSP/1.0\r\n CSeq: 5\r\n Scale: 2.000000\r\n Session: 00001E86 User-Agent: Demo\r\n\r\n* Regards Ziyad -------------- next part -------------- An HTML attachment was scrubbed... URL: From chouhan.nishesh at gmail.com Thu Feb 18 01:29:09 2010 From: chouhan.nishesh at gmail.com (nishesh chouhan) Date: Thu, 18 Feb 2010 14:59:09 +0530 Subject: [Live-devel] live streaming poor quality in VLC Message-ID: Hi I am working on an existing application which uses live555 and reads raw audio and video from socket in 2 diff threads...i t then encode audio and video and write in a cyclic buffers in the class derived from FramedSource....i noticed that sending RTCP SR was disabled I enabled it and after that I see poor quaity audio/video in VLC I then tried in real player and it works absolutely fine there....in VLC in see video flicker, sometime blocks..then audio breaks...also in real player I see 2 streams 1 for audio and for video..in vlc I see 4 streams 2 each for a/v I wonder if that has any corelation with the issue... I enabled VLC logs and see following: faad debug: AAC SBR(channels 2, sample rate:16000) main:warning: received buffer in future as seen in vlc video code mp4v frame rate: 10 audio codec: mp4a aac ext : SBR sampling rate: 16000hz looks like VLC snot liking timestamp... also why is it showing channels:2 in my application I am using 1 channel also sample rate I used is 8khz vlc showing 16khz. pls advice Many thanks in Advance. Regards, Nishesh -------------- next part -------------- An HTML attachment was scrubbed... URL: From jnoring at logitech.com Thu Feb 18 16:04:50 2010 From: jnoring at logitech.com (Jeremy Noring) Date: Thu, 18 Feb 2010 16:04:50 -0800 Subject: [Live-devel] live555 blocked on a select In-Reply-To: <1266422220.4b7c11cc667fa@imp.celeos.eu> References: <1266331888.4b7ab0f0e234b@imp.celeos.eu> <1266422220.4b7c11cc667fa@imp.celeos.eu> Message-ID: <988ed6931002181604r2e65a2e1s3ac3219e4faaead8@mail.gmail.com> On Wed, Feb 17, 2010 at 7:57 AM, S?bastien Escudier < sebastien-devel at celeos.eu> wrote: > > > If you can track this down some more, please let us know. > > Ok, so the client is blocked in RTSPClient.cpp -> getResponse1 line 2191 in > a > readsocket call. > > The comment in the file says : > // Keep reading data from the socket until we see "\r\n\r\n" (except > // at the start), or until we fill up our buffer. > // Don't read any more than this. > > and at this point the buffer (what has been read in the socket) is [1] (404 > not > found, ending with \r\n) > So obviously, it won't go any further, because the server won't send > anything > more, and live555 client is waiting for another \r\n > > This happens in some rare cases, and most of the time, the same answer (404 > not > found with no \r\n\r\n at the end) is correctly received and handled by my > live555 client. > > Do you have any idea what is wrong in this case ? > I reported the same issue a week or three back; I fixed it the same way you did by adding timeouts to the various readSocket() calls in the RTSPClient implementation. Purportedly this code is undergoing a rewrite, so Ross didn't merge my changes (which is fine by me). I'm not sure how to reproduce the issue 100% of the time, but I know I occasionally see a hang in these select() statements, and it's generally when the RTSP server or internet connection hangs. The timeout resolves the problem. -------------- next part -------------- An HTML attachment was scrubbed... URL: From finlayson at live555.com Thu Feb 18 19:02:18 2010 From: finlayson at live555.com (Ross Finlayson) Date: Fri, 19 Feb 2010 13:02:18 +1000 Subject: [Live-devel] Play/Pause Commands not honoured In-Reply-To: <8eb8e71d1002170932k92dea48lb04a69ddcf7226c6@mail.gmail.com> References: <8eb8e71d1002170932k92dea48lb04a69ddcf7226c6@mail.gmail.com> Message-ID: >I am using live555 rtsp server for video streaming. The transport >used is tcp with interleaved (but not sending receiver reports). > >Trick mode options are not working for us. This is a known problem with streams that use RTP/RTCP-over TCP: Our server ignores all requests after the initial "PLAY". This bug will be fixed very soon. Stay tuned... -- Ross Finlayson Live Networks, Inc. http://www.live555.com/ -------------- next part -------------- An HTML attachment was scrubbed... URL: From finlayson at live555.com Thu Feb 18 19:25:21 2010 From: finlayson at live555.com (Ross Finlayson) Date: Fri, 19 Feb 2010 13:25:21 +1000 Subject: [Live-devel] [PATCH] Fixes for armlinux makefile In-Reply-To: <20100218084749.62d10256@kru> References: <20100218084749.62d10256@kru> Message-ID: >I use the attached patch in VLC build system to build live555 for >armlinux, it'd be nice to have it included in the next live555 Thanks. This change will be included in the next release of the software. -- Ross Finlayson Live Networks, Inc. http://www.live555.com/ From finlayson at live555.com Thu Feb 18 21:59:11 2010 From: finlayson at live555.com (Ross Finlayson) Date: Fri, 19 Feb 2010 15:59:11 +1000 Subject: [Live-devel] live555 blocked on a select In-Reply-To: <1266422220.4b7c11cc667fa@imp.celeos.eu> References: <1266331888.4b7ab0f0e234b@imp.celeos.eu> <1266422220.4b7c11cc667fa@imp.celeos.eu> Message-ID: > > If you can track this down some more, please let us know. > >Ok, so the client is blocked in RTSPClient.cpp -> getResponse1 line 2191 in a >readsocket call. > >The comment in the file says : > // Keep reading data from the socket until we see "\r\n\r\n" (except > // at the start), or until we fill up our buffer. > // Don't read any more than this. > >and at this point the buffer (what has been read in the socket) is >[1] (404 not >found, ending with \r\n) >So obviously, it won't go any further, because the server won't send anything >more, and live555 client is waiting for another \r\n > >This happens in some rare cases, and most of the time, the same >answer (404 not >found with no \r\n\r\n at the end) is correctly received and handled by my >live555 client. > >Do you have any idea what is wrong in this case ? Perhaps the server is (erroneously) ending its response only with \r\n, and not with \r\n\r\n ? -- Ross Finlayson Live Networks, Inc. http://www.live555.com/ From andro.debevere at ugent.be Fri Feb 19 00:17:18 2010 From: andro.debevere at ugent.be (Andro Debevere) Date: Fri, 19 Feb 2010 09:17:18 +0100 Subject: [Live-devel] openRTSP Message-ID: <000901cab13b$f4123060$dc369120$@debevere@ugent.be> Hello, in our test setup we want to record an RTSP session containing 52 media tracks (AVC/AAC). We also want all the tracks to be synchronized. For this purpose, we use the openRTSP tool (using the QuickTimeFileSink through the -4 openRTSP flag) (version: live.2009.09.28, building on linux). We experienced, however, that on rare occasions the recording does not start (i.e. the output file's size does not increase). We tried to debug the code on such an event and we checked the syncOK function of the SubsessionIOState class because, apparently, the ioState->afterGettingFrame(packetDataSize, presentationTime); never got called. We found out that in such an erroneous case, some tracks (mostly just one) never get synchronized (the fHaveBeenSynced flag of the SubsessionIOstate class does not get set). Therefore, we went deeper into the code until the point of the BasicTaskscheduler. Here we see that after calling the select statement in the "void BasicTaskScheduler::SingleStep(unsigned maxDelayTime)" function, we only get a limited number of readable sockets as a return value. If, for example, we have 52 media tracks, we create at least 104 sockets (52 for RTP and 52 for RTCP), but the result value is never 104 or higher, no matter how long we wait in between two select calls. This makes us believe that the accompaniment socket of the track is never read, and for example the RTCP SR is not parsed to get that track synchronized. We also observed that data is actually being send to all the sockets (and correct port numbers) and that sockets are correctly created (socket number> -1) and added to the read set before the select call. Do you have any similar experiences or any ideas on what might go wrong here? Kind regards. -------------- next part -------------- An HTML attachment was scrubbed... URL: From fancmong at mail.ustc.edu.cn Sat Feb 20 19:56:57 2010 From: fancmong at mail.ustc.edu.cn (FanKe Meng) Date: Sun, 21 Feb 2010 11:56:57 +0800 (CST) Subject: [Live-devel] The server crashes after removeServerMediaSession() is called Message-ID: <14270375.1784731266724617514.JavaMail.coremail@mailweb> Hi Ross, I use live555 to stream multiple live streams and I want to remove a server media session when it is dead(no audio or video data available).However I come across a problem.If there isn't any client playing the stream,I can call RTSPServer::removeServerMediaSession()successfully.Otherwise?an error will occur. Do you have any idea what leads to this? Thanks in advance. From fancmong at mail.ustc.edu.cn Sun Feb 21 00:19:22 2010 From: fancmong at mail.ustc.edu.cn (FanKe Meng) Date: Sun, 21 Feb 2010 16:19:22 +0800 (CST) Subject: [Live-devel] The server crashes after removeServerMediaSession() is called In-Reply-To: <14270375.1784731266724617514.JavaMail.coremail@mailweb> References: <14270375.1784731266724617514.JavaMail.coremail@mailweb> Message-ID: <14323167.1790161266740362796.JavaMail.coremail@mailweb> Dear Ross, I am sorry that I was so uncareful.There's nothing wrong with removeServerMediaSession().The sever crashes because there are some errors in my code and I have fixed it. Sorry to disturb you. > -----Original E-mail----- > From: "FanKe Meng" > Sent Time: 2010-2-21 11:56:57 > To: live-devel at ns.live555.com > Cc: > Subject: [Live-devel] The server crashes after removeServerMediaSession() is called > > Hi Ross, > I use live555 to stream multiple live streams and I want to remove a server media session when it is dead(no audio or video data available).However I come across a problem.If there isn't any client playing the stream,I can call RTSPServer::removeServerMediaSession()successfully.Otherwise?an error will occur. > Do you have any idea what leads to this? > Thanks in advance. > > > > _______________________________________________ > live-devel mailing list > live-devel at lists.live555.com > http://lists.live555.com/mailman/listinfo/live-devel From sebastien-devel at celeos.eu Mon Feb 22 02:26:52 2010 From: sebastien-devel at celeos.eu (=?iso-8859-1?b?U+liYXN0aWVu?= Escudier) Date: Mon, 22 Feb 2010 11:26:52 +0100 Subject: [Live-devel] live555 blocked on a select In-Reply-To: References: <1266331888.4b7ab0f0e234b@imp.celeos.eu> <1266422220.4b7c11cc667fa@imp.celeos.eu> Message-ID: <1266834412.4b825bec804c2@imp.celeos.eu> Quoting Ross Finlayson : > Perhaps the server is (erroneously) ending its response only with > \r\n, and not with \r\n\r\n ? No, The response is correctly ended by \r\n\r\n. The body isn't (but that's normal). It is a response to a get parameter. The response is a 404 Not found with a content-length of 316 But live555 doesn't read the 316 bytes length body of the response. So when the library is reading again the socket, it reads the body of the previous response, and doesn't find \r\n\r\n, so it blocks. The problem is in RTSPClient.cpp in getMediaSessionParameter function, when you check the responseCode (line 1572). If it's != 200 then you don't read the body of the message, which stays in the socket. Don't you think we should read the response body, whatever the response code ? PS : To be clear, what I call the response is : RTSP/1.0 404 Not found followed by a content-length, a content type and \r\n\r\n Then there is the body (text). From finlayson at live555.com Tue Feb 23 14:40:09 2010 From: finlayson at live555.com (Ross Finlayson) Date: Wed, 24 Feb 2010 08:40:09 +1000 Subject: [Live-devel] openRTSP In-Reply-To: <000901cab13b$f4123060$dc369120$@debevere@ugent.be> References: <000901cab13b$f4123060$dc369120$@debevere@ugent.be> Message-ID: >Therefore, we went deeper into the code until the point of the >BasicTaskscheduler. Here we see that after calling the select >statement in the "void BasicTaskScheduler::SingleStep(unsigned >maxDelayTime)" function, we only get a limited number of readable >sockets as a return value. If, for example, we have 52 media tracks, >we create at least 104 sockets (52 for RTP and 52 for RTCP), but the >result value is never 104 or higher, no matter how long we wait in >between two select calls. You might have run into an OS-imposed limit on the number of sockets you can create within a single process. Depending on your OS, you might be able to increase this limit. Is it really the case that a *single* RTSP session contains 52 audio tracks? Or do you have separate RTSP sessions (i.e., separate "rtsp://" URLs) for each audio track? If it's the latter case, then it might make more sense to do this using several processes (application instances) - one for each audio track - rather than trying to do everything within a single process. -- Ross Finlayson Live Networks, Inc. http://www.live555.com/ From andro.debevere at ugent.be Thu Feb 25 03:07:06 2010 From: andro.debevere at ugent.be (Andro Debevere) Date: Thu, 25 Feb 2010 12:07:06 +0100 Subject: [Live-devel] openRTSP In-Reply-To: References: <000901cab13b$f4123060$dc369120$@debevere@ugent.be> Message-ID: <00a801cab60a$aae3e270$00aba750$@debevere@ugent.be> Yes, all streams are contained in one single RTSP session ( I know this is not common practice ;) but for archiving purposes, we need to bundle the streams in one session so we can store them all together). I did not ran into the limit of sockets per thread but using netstat, I found out that sometimes two pairs of sockets used the same RTP and RTCP port numbers. The socket-port number relationship is many to one and in the end it conflicts with the select statement as it only marks one socket as readable in the read set. I solved the issue by creating an instance of the NoReuse class before initiating the media subsessions in order to disable the reuse of port numbers or addresses (setsockopt(SO_REUSEADDR) set to false), which was the cause of this problem. Maybe it is better to unset the reuseFlag in the GroupsockHelper class by default? Also, in the MediaSubsession::initiate(int useSpecialRTPoffset) function only the pointer value of fRT(C)PSocket is checked after the creation of a Groupsock object. But if the socket creation call returns -1 in the constructor, the program will continue using the invalid socket handle. Apart from the pointer value of fRT(C)PSocket, the value of fSocketNum should be checked. A last remark in the MediaSubsession::initiate(int useSpecialRTPoffset) function: I noticed that when the user does not specify a start port value (fClientsPortNum) sockets are created and checked if they are bound to an even port. If they don't they are added to a socketHashTable and a new socket is created until successful. Why not just create two sockets and trying to bind them to a given port number, just as is done when the user actually does give a start port number, but with the difference that you choose the start port value yourself and don't return if one or both bind calls fail but retry with the port number value + 2. Kind regards. -----Original Message----- From: live-devel-bounces at ns.live555.com [mailto:live-devel-bounces at ns.live555.com] On Behalf Of Ross Finlayson Sent: Tuesday, February 23, 2010 11:40 PM To: LIVE555 Streaming Media - development & use Subject: Re: [Live-devel] openRTSP >Therefore, we went deeper into the code until the point of the >BasicTaskscheduler. Here we see that after calling the select >statement in the "void BasicTaskScheduler::SingleStep(unsigned >maxDelayTime)" function, we only get a limited number of readable >sockets as a return value. If, for example, we have 52 media tracks, >we create at least 104 sockets (52 for RTP and 52 for RTCP), but the >result value is never 104 or higher, no matter how long we wait in >between two select calls. You might have run into an OS-imposed limit on the number of sockets you can create within a single process. Depending on your OS, you might be able to increase this limit. Is it really the case that a *single* RTSP session contains 52 audio tracks? Or do you have separate RTSP sessions (i.e., separate "rtsp://" URLs) for each audio track? If it's the latter case, then it might make more sense to do this using several processes (application instances) - one for each audio track - rather than trying to do everything within a single process. -- Ross Finlayson Live Networks, Inc. http://www.live555.com/ _______________________________________________ live-devel mailing list live-devel at lists.live555.com http://lists.live555.com/mailman/listinfo/live-devel From marcos at a5security.com Thu Feb 25 01:07:51 2010 From: marcos at a5security.com (Miguel Angel Arcos) Date: Thu, 25 Feb 2010 10:07:51 +0100 Subject: [Live-devel] H264 "PLAY" Message-ID: <39b9a2b31002250107u1dbdeab9o522ab851a2440567@mail.gmail.com> Hi developers, I'm trying to connect with an URL like this: "rtsp://xxx.xxx.xxx.xxx:554/axis-media/media.amp?videocodec=h264". I correctly do DESCRIBE and SETUP receiving "RTSP/1.0 200 OK" but after that when I send "PLAY" I receive "RTSP/1.0 400 Bad Request". With Wireshark I've been looking all the packets that I send and receive. All is correct I think. I use RTSPClient.cpp and I changed that function: char const* RTSPClient::sessionURL(MediaSession const& session) const { char const* url = session.controlPath(); if (url == NULL || strcmp(url, "*") == 0) url = fBaseURL; if (url == NULL || strchr(url, '?') != NULL) url = fBaseURL; /*New code*/ return url; } I added that line because I tried connect using VLC and the difference betwen PLAY command is: VLC Send play with: "rtsp://xxx.xxx.xxx.xxx:554/axis-media/media.amp". RTSPClient without my code sends: "rtsp://xxx.xxx.xxx.xxx:554/axis-media/media.amp?videocodec=h264". I changed to send the same than VLC. Thanks in advance. PD: I know that VLC not is a part of live555 but is fine to compare the connection sequence. -- Miguel Angel Arcos -------------- next part -------------- An HTML attachment was scrubbed... URL: From changchun.zhang at tektronix.com Thu Feb 25 21:07:52 2010 From: changchun.zhang at tektronix.com (changchun.zhang at tektronix.com) Date: Thu, 25 Feb 2010 21:07:52 -0800 Subject: [Live-devel] VLC supporting AMR-WB or not? Message-ID: <38A838806557FA4D80EFB2C91A7BC7640D9FBDC9BA@us-bv-m10.global.tektronix.net> Hi, I am wondering whether or not the VLC media player support the AMR-WB? I tried to play a .awb file but get the message below: No suitable decoder module: VLC does not support the audio or video format "sawb". Unfortunately there is no way for you to fix this. Zhang, Changchun | NM | CDC | Tektronix Communications | +86 21 38960464 | changchun.zhang at tektronix.com -------------- next part -------------- An HTML attachment was scrubbed... URL: From harishn at netxcell.com Thu Feb 25 21:11:25 2010 From: harishn at netxcell.com (Harish N) Date: Fri, 26 Feb 2010 10:41:25 +0530 Subject: [Live-devel] compiling OpenRTSP (client ) and RTSPServer Message-ID: <03506EFE6361E040B15B65F285CEFF850A93EAA695@nxlmail.netxcell.com> Helo all... i am working on LIVE555,on RTSPClient and RTSPserver......i need little help in compiling OpenRTSP using visual Studio 2008..i tried compiling but there 6 link errors in it..... So anyone who worked on it using vs2008 please do assist me..... even folowed the steps mentioned in few of the sites....i did google and used all the possible resources and ended up with 6 errors while compiling i will even mention the errors below...so any who has any idea about it help me thanks all log === Creating temporary file "d:\vs2005Projects\OPENRTSP2005\Debug\RSP00000229963752.rsp" with contents [ /Od /I "D:\vs2005Projects\OPENRTSP2005\modules\BasicUsageEnvironment\include" /I "D:\vs2005Projects\OPENRTSP2005\modules\groupsock\include" /I "D:\vs2005Projects\OPENRTSP2005\modules\liveMedia\include" /I "D:\vs2005Projects\OPENRTSP2005\modules\UsageEnvironment\include" /I "D:\vs2005Projects\OPENRTSP2005\modules\mediaServer\include" /I "D:\vs2005Projects\OPENRTSP2005\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_UNICODE" /D "UNICODE" /Gm /EHsc /RTC1 /MDd /Fo"Debug\\" /Fd"Debug\vc80.pdb" /W3 /c /Wp64 /ZI /TP .\openRTSP.cpp .\playCommon.cpp ] Creating command line "cl.exe @d:\vs2005Projects\OPENRTSP2005\Debug\RSP00000229963752.rsp /nologo /errorReport:prompt" Creating temporary file "d:\vs2005Projects\OPENRTSP2005\Debug\TMP00000329963752.tmp" with contents [ 1 /* CREATEPROCESS_MANIFEST_RESOURCE_ID */ 24 /* RT_MANIFEST */ ".\\Debug\\OPENRTSP2005.exe.embed.manifest" ] Creating command line "rc.exe /fo".\Debug\OPENRTSP2005.exe.embed.manifest.res" d:\vs2005Projects\OPENRTSP2005\Debug\TMP00000329963752.tmp" Creating temporary file "d:\vs2005Projects\OPENRTSP2005\Debug\RSP00000429963752.rsp" with contents [ /OUT:"D:\vs2005Projects\OPENRTSP2005\Debug\OPENRTSP2005.exe" /INCREMENTAL /LIBPATH:"D:\vs2005Projects\OPENRTSP2005\modules\Debug" /MANIFEST /MANIFESTFILE:"Debug\OPENRTSP2005.exe.intermediate.manifest" /DEBUG /PDB:"d:\vs2005projects\openrtsp2005\debug\OPENRTSP2005.pdb" /SUBSYSTEM:CONSOLE /MACHINE:X86 BasicUsageEnvironment.lib groupsock.lib liveMedia.lib mediaServer.lib UsageEnvironment.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ".\debug\playCommon.obj" ".\debug\openRTSP.obj" ".\Debug\OPENRTSP2005.exe.embed.manifest.res" ] Creating command line "link.exe @d:\vs2005Projects\OPENRTSP2005\Debug\RSP00000429963752.rsp /NOLOGO /ERRORREPORT:PROMPT" Output Window Compiling... playCommon.cpp d:\vs2005projects\openrtsp2005\playcommon.cpp(142) : warning C4996: 'sscanf' was declared deprecated c:\program files\microsoft visual studio 8\vc\include\stdio.h(311) : see declaration of 'sscanf' Message: 'This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.' d:\vs2005projects\openrtsp2005\playcommon.cpp(206) : warning C4996: 'sscanf' was declared deprecated c:\program files\microsoft visual studio 8\vc\include\stdio.h(311) : see declaration of 'sscanf' Message: 'This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.' d:\vs2005projects\openrtsp2005\playcommon.cpp(222) : warning C4996: 'sscanf' was declared deprecated c:\program files\microsoft visual studio 8\vc\include\stdio.h(311) : see declaration of 'sscanf' Message: 'This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.' d:\vs2005projects\openrtsp2005\playcommon.cpp(235) : warning C4996: 'sscanf' was declared deprecated c:\program files\microsoft visual studio 8\vc\include\stdio.h(311) : see declaration of 'sscanf' Message: 'This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.' d:\vs2005projects\openrtsp2005\playcommon.cpp(282) : warning C4996: 'sscanf' was declared deprecated c:\program files\microsoft visual studio 8\vc\include\stdio.h(311) : see declaration of 'sscanf' Message: 'This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.' d:\vs2005projects\openrtsp2005\playcommon.cpp(305) : warning C4996: 'sscanf' was declared deprecated c:\program files\microsoft visual studio 8\vc\include\stdio.h(311) : see declaration of 'sscanf' Message: 'This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.' d:\vs2005projects\openrtsp2005\playcommon.cpp(317) : warning C4996: 'sscanf' was declared deprecated c:\program files\microsoft visual studio 8\vc\include\stdio.h(311) : see declaration of 'sscanf' Message: 'This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.' d:\vs2005projects\openrtsp2005\playcommon.cpp(333) : warning C4996: 'sscanf' was declared deprecated c:\program files\microsoft visual studio 8\vc\include\stdio.h(311) : see declaration of 'sscanf' Message: 'This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.' d:\vs2005projects\openrtsp2005\playcommon.cpp(342) : warning C4996: 'sscanf' was declared deprecated c:\program files\microsoft visual studio 8\vc\include\stdio.h(311) : see declaration of 'sscanf' Message: 'This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.' d:\vs2005projects\openrtsp2005\playcommon.cpp(351) : warning C4996: 'sscanf' was declared deprecated c:\program files\microsoft visual studio 8\vc\include\stdio.h(311) : see declaration of 'sscanf' Message: 'This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.' d:\vs2005projects\openrtsp2005\playcommon.cpp(366) : warning C4996: 'sscanf' was declared deprecated c:\program files\microsoft visual studio 8\vc\include\stdio.h(311) : see declaration of 'sscanf' Message: 'This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.' d:\vs2005projects\openrtsp2005\playcommon.cpp(374) : warning C4996: 'sscanf' was declared deprecated c:\program files\microsoft visual studio 8\vc\include\stdio.h(311) : see declaration of 'sscanf' Message: 'This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.' d:\vs2005projects\openrtsp2005\playcommon.cpp(403) : warning C4996: 'sscanf' was declared deprecated c:\program files\microsoft visual studio 8\vc\include\stdio.h(311) : see declaration of 'sscanf' Message: 'This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.' d:\vs2005projects\openrtsp2005\playcommon.cpp(414) : warning C4996: 'sscanf' was declared deprecated c:\program files\microsoft visual studio 8\vc\include\stdio.h(311) : see declaration of 'sscanf' Message: 'This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.' d:\vs2005projects\openrtsp2005\playcommon.cpp(424) : warning C4996: 'sscanf' was declared deprecated c:\program files\microsoft visual studio 8\vc\include\stdio.h(311) : see declaration of 'sscanf' Message: 'This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.' d:\vs2005projects\openrtsp2005\playcommon.cpp(705) : warning C4996: '_snprintf' was declared deprecated c:\program files\microsoft visual studio 8\vc\include\stdio.h(339) : see declaration of '_snprintf' Message: 'This function or variable may be unsafe. Consider using _snprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.' d:\vs2005projects\openrtsp2005\playcommon.cpp(707) : warning C4996: 'sprintf' was declared deprecated c:\program files\microsoft visual studio 8\vc\include\stdio.h(345) : see declaration of 'sprintf' Message: 'This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.' d:\vs2005projects\openrtsp2005\playcommon.cpp(1269) : warning C4996: 'sprintf' was declared deprecated c:\program files\microsoft visual studio 8\vc\include\stdio.h(345) : see declaration of 'sprintf' Message: 'This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.' openRTSP.cpp Generating Code... Compiling manifest to resources... Linking... liveMedia.lib(MediaSession.obj) : error LNK2019: unresolved external symbol "public: static class DVVideoRTPSource * __cdecl DVVideoRTPSource::createNew(class UsageEnvironment &,class Groupsock *,unsigned char,unsigned int)" (?createNew at DVVideoRTPSource@@SAPAV1 at AAVUsageEnvironment@@PAVGroupsock@@EI at Z) referenced in function "public: unsigned int __thiscall MediaSubsession::initiate(int)" (?initiate at MediaSubsession@@QAEIH at Z) liveMedia.lib(RTCP.obj) : error LNK2019: unresolved external symbol _OnReceive referenced in function "private: void __thiscall RTCPInstance::onReceive(int,int,unsigned int)" (?onReceive at RTCPInstance@@AAEXHHI at Z) liveMedia.lib(RTCP.obj) : error LNK2019: unresolved external symbol _OnExpire referenced in function "private: void __thiscall RTCPInstance::onExpire1(void)" (?onExpire1 at RTCPInstance@@AAEXXZ) liveMedia.lib(RTSPClient.obj) : error LNK2019: unresolved external symbol _our_MD5Data referenced in function "private: unsigned int __thiscall RTSPClient::setupHTTPTunneling(char const *,class Authenticator *)" (?setupHTTPTunneling at RTSPClient@@AAEIPBDPAVAuthenticator@@@Z) liveMedia.lib(DigestAuthentication.obj) : error LNK2001: unresolved external symbol _our_MD5Data D:\vs2005Projects\OPENRTSP2005\Debug\OPENRTSP2005.exe : fatal error LNK1120: 4 unresolved externals -------------- next part -------------- An HTML attachment was scrubbed... URL: From gbonneau at miranda.com Fri Feb 26 05:39:41 2010 From: gbonneau at miranda.com (BONNEAU Guy) Date: Fri, 26 Feb 2010 08:39:41 -0500 Subject: [Live-devel] compiling OpenRTSP (client ) and RTSPServer In-Reply-To: <03506EFE6361E040B15B65F285CEFF850A93EAA695@nxlmail.netxcell.com> References: <03506EFE6361E040B15B65F285CEFF850A93EAA695@nxlmail.netxcell.com> Message-ID: <6353CA579307224BAFDE9495906E6916040EA54A@ca-ops-mail> It seems your project doesn't include some files that contains the missing links. For example check that you do include the files DVVideoRTPSource.cpp and DVVideoRTPSource.hh, RTCP.cpp and RTCP.hh Regards Guy Bonneau From: live-devel-bounces at ns.live555.com [mailto:live-devel-bounces at ns.live555.com] On Behalf Of Harish N Sent: Friday, February 26, 2010 0:11 To: live-devel at lists.live555.com Subject: [Live-devel] compiling OpenRTSP (client ) and RTSPServer Helo all... i am working on LIVE555,on RTSPClient and RTSPserver......i need little help in compiling OpenRTSP using visual Studio 2008..i tried compiling but there 6 link errors in it..... So anyone who worked on it using vs2008 please do assist me..... even folowed the steps mentioned in few of the sites....i did google and used all the possible resources and ended up with 6 errors while compiling i will even mention the errors below...so any who has any idea about it help me thanks all log === Creating temporary file "d:\vs2005Projects\OPENRTSP2005\Debug\RSP00000229963752.rsp" with contents [ /Od /I "D:\vs2005Projects\OPENRTSP2005\modules\BasicUsageEnvironment\include" /I "D:\vs2005Projects\OPENRTSP2005\modules\groupsock\include" /I "D:\vs2005Projects\OPENRTSP2005\modules\liveMedia\include" /I "D:\vs2005Projects\OPENRTSP2005\modules\UsageEnvironment\include" /I "D:\vs2005Projects\OPENRTSP2005\modules\mediaServer\include" /I "D:\vs2005Projects\OPENRTSP2005\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_UNICODE" /D "UNICODE" /Gm /EHsc /RTC1 /MDd /Fo"Debug\\" /Fd"Debug\vc80.pdb" /W3 /c /Wp64 /ZI /TP .\openRTSP.cpp .\playCommon.cpp ] Creating command line "cl.exe @d:\vs2005Projects\OPENRTSP2005\Debug\RSP00000229963752.rsp /nologo /errorReport:prompt" Creating temporary file "d:\vs2005Projects\OPENRTSP2005\Debug\TMP00000329963752.tmp" with contents [ 1 /* CREATEPROCESS_MANIFEST_RESOURCE_ID */ 24 /* RT_MANIFEST */ ".\\Debug\\OPENRTSP2005.exe.embed.manifest" ] Creating command line "rc.exe /fo".\Debug\OPENRTSP2005.exe.embed.manifest.res" d:\vs2005Projects\OPENRTSP2005\Debug\TMP00000329963752.tmp" Creating temporary file "d:\vs2005Projects\OPENRTSP2005\Debug\RSP00000429963752.rsp" with contents [ /OUT:"D:\vs2005Projects\OPENRTSP2005\Debug\OPENRTSP2005.exe" /INCREMENTAL /LIBPATH:"D:\vs2005Projects\OPENRTSP2005\modules\Debug" /MANIFEST /MANIFESTFILE:"Debug\OPENRTSP2005.exe.intermediate.manifest" /DEBUG /PDB:"d:\vs2005projects\openrtsp2005\debug\OPENRTSP2005.pdb" /SUBSYSTEM:CONSOLE /MACHINE:X86 BasicUsageEnvironment.lib groupsock.lib liveMedia.lib mediaServer.lib UsageEnvironment.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ".\debug\playCommon.obj" ".\debug\openRTSP.obj" ".\Debug\OPENRTSP2005.exe.embed.manifest.res" ] Creating command line "link.exe @d:\vs2005Projects\OPENRTSP2005\Debug\RSP00000429963752.rsp /NOLOGO /ERRORREPORT:PROMPT" Output Window Compiling... playCommon.cpp d:\vs2005projects\openrtsp2005\playcommon.cpp(142) : warning C4996: 'sscanf' was declared deprecated c:\program files\microsoft visual studio 8\vc\include\stdio.h(311) : see declaration of 'sscanf' Message: 'This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.' d:\vs2005projects\openrtsp2005\playcommon.cpp(206) : warning C4996: 'sscanf' was declared deprecated c:\program files\microsoft visual studio 8\vc\include\stdio.h(311) : see declaration of 'sscanf' Message: 'This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.' d:\vs2005projects\openrtsp2005\playcommon.cpp(222) : warning C4996: 'sscanf' was declared deprecated c:\program files\microsoft visual studio 8\vc\include\stdio.h(311) : see declaration of 'sscanf' Message: 'This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.' d:\vs2005projects\openrtsp2005\playcommon.cpp(235) : warning C4996: 'sscanf' was declared deprecated c:\program files\microsoft visual studio 8\vc\include\stdio.h(311) : see declaration of 'sscanf' Message: 'This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.' d:\vs2005projects\openrtsp2005\playcommon.cpp(282) : warning C4996: 'sscanf' was declared deprecated c:\program files\microsoft visual studio 8\vc\include\stdio.h(311) : see declaration of 'sscanf' Message: 'This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.' d:\vs2005projects\openrtsp2005\playcommon.cpp(305) : warning C4996: 'sscanf' was declared deprecated c:\program files\microsoft visual studio 8\vc\include\stdio.h(311) : see declaration of 'sscanf' Message: 'This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.' d:\vs2005projects\openrtsp2005\playcommon.cpp(317) : warning C4996: 'sscanf' was declared deprecated c:\program files\microsoft visual studio 8\vc\include\stdio.h(311) : see declaration of 'sscanf' Message: 'This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.' d:\vs2005projects\openrtsp2005\playcommon.cpp(333) : warning C4996: 'sscanf' was declared deprecated c:\program files\microsoft visual studio 8\vc\include\stdio.h(311) : see declaration of 'sscanf' Message: 'This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.' d:\vs2005projects\openrtsp2005\playcommon.cpp(342) : warning C4996: 'sscanf' was declared deprecated c:\program files\microsoft visual studio 8\vc\include\stdio.h(311) : see declaration of 'sscanf' Message: 'This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.' d:\vs2005projects\openrtsp2005\playcommon.cpp(351) : warning C4996: 'sscanf' was declared deprecated c:\program files\microsoft visual studio 8\vc\include\stdio.h(311) : see declaration of 'sscanf' Message: 'This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.' d:\vs2005projects\openrtsp2005\playcommon.cpp(366) : warning C4996: 'sscanf' was declared deprecated c:\program files\microsoft visual studio 8\vc\include\stdio.h(311) : see declaration of 'sscanf' Message: 'This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.' d:\vs2005projects\openrtsp2005\playcommon.cpp(374) : warning C4996: 'sscanf' was declared deprecated c:\program files\microsoft visual studio 8\vc\include\stdio.h(311) : see declaration of 'sscanf' Message: 'This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.' d:\vs2005projects\openrtsp2005\playcommon.cpp(403) : warning C4996: 'sscanf' was declared deprecated c:\program files\microsoft visual studio 8\vc\include\stdio.h(311) : see declaration of 'sscanf' Message: 'This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.' d:\vs2005projects\openrtsp2005\playcommon.cpp(414) : warning C4996: 'sscanf' was declared deprecated c:\program files\microsoft visual studio 8\vc\include\stdio.h(311) : see declaration of 'sscanf' Message: 'This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.' d:\vs2005projects\openrtsp2005\playcommon.cpp(424) : warning C4996: 'sscanf' was declared deprecated c:\program files\microsoft visual studio 8\vc\include\stdio.h(311) : see declaration of 'sscanf' Message: 'This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.' d:\vs2005projects\openrtsp2005\playcommon.cpp(705) : warning C4996: '_snprintf' was declared deprecated c:\program files\microsoft visual studio 8\vc\include\stdio.h(339) : see declaration of '_snprintf' Message: 'This function or variable may be unsafe. Consider using _snprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.' d:\vs2005projects\openrtsp2005\playcommon.cpp(707) : warning C4996: 'sprintf' was declared deprecated c:\program files\microsoft visual studio 8\vc\include\stdio.h(345) : see declaration of 'sprintf' Message: 'This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.' d:\vs2005projects\openrtsp2005\playcommon.cpp(1269) : warning C4996: 'sprintf' was declared deprecated c:\program files\microsoft visual studio 8\vc\include\stdio.h(345) : see declaration of 'sprintf' Message: 'This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.' openRTSP.cpp Generating Code... Compiling manifest to resources... Linking... liveMedia.lib(MediaSession.obj) : error LNK2019: unresolved external symbol "public: static class DVVideoRTPSource * __cdecl DVVideoRTPSource::createNew(class UsageEnvironment &,class Groupsock *,unsigned char,unsigned int)" (?createNew at DVVideoRTPSource@@SAPAV1 at AAVUsageEnvironment@@PAVGroupsock@@ EI at Z) referenced in function "public: unsigned int __thiscall MediaSubsession::initiate(int)" (?initiate at MediaSubsession@@QAEIH at Z) liveMedia.lib(RTCP.obj) : error LNK2019: unresolved external symbol _OnReceive referenced in function "private: void __thiscall RTCPInstance::onReceive(int,int,unsigned int)" (?onReceive at RTCPInstance@@AAEXHHI at Z) liveMedia.lib(RTCP.obj) : error LNK2019: unresolved external symbol _OnExpire referenced in function "private: void __thiscall RTCPInstance::onExpire1(void)" (?onExpire1 at RTCPInstance@@AAEXXZ) liveMedia.lib(RTSPClient.obj) : error LNK2019: unresolved external symbol _our_MD5Data referenced in function "private: unsigned int __thiscall RTSPClient::setupHTTPTunneling(char const *,class Authenticator *)" (?setupHTTPTunneling at RTSPClient@@AAEIPBDPAVAuthenticator@@@Z) liveMedia.lib(DigestAuthentication.obj) : error LNK2001: unresolved external symbol _our_MD5Data D:\vs2005Projects\OPENRTSP2005\Debug\OPENRTSP2005.exe : fatal error LNK1120: 4 unresolved externals -------------- next part -------------- An HTML attachment was scrubbed... URL: From harishn at netxcell.com Fri Feb 26 21:14:07 2010 From: harishn at netxcell.com (Harish N) Date: Sat, 27 Feb 2010 10:44:07 +0530 Subject: [Live-devel] compiling OpenRTSP (client ) and RTSPServer In-Reply-To: <6353CA579307224BAFDE9495906E6916040EA6F9@ca-ops-mail> References: <6353CA579307224BAFDE9495906E6916040EA6F9@ca-ops-mail> Message-ID: <03506EFE6361E040B15B65F285CEFF850AA3B59944@nxlmail.netxcell.com> thank you friend....but i did include all the files....idont know where went wrong.....but all it says is cannot link livemedia.lib with some object file..... can you please tell me how to build individual modules...i mean steps to build usageenvironment module...livemedia module ,groupsock etc using visual studio2008 thank you ======================================================= ======================================================= from: BONNEAU Guy [gbonneau at miranda.com] Sent: Friday, February 26, 2010 10:16 PM To: Harish N Subject: [Live-devel] compiling OpenRTSP (client ) and RTSPServer It seems your project doesn?t include some files that contains the missing links. For example check that you do include the files DVVideoRTPSource.cpp and DVVideoRTPSource.hh, RTCP.cpp and RTCP.hh Regards Guy Bonneau From chinnaedu at gmail.com Wed Feb 24 21:52:17 2010 From: chinnaedu at gmail.com (Harish Nallapti) Date: Thu, 25 Feb 2010 11:22:17 +0530 Subject: [Live-devel] compile Message-ID: <78a4a5ca1002242152q56774f3duec3d590f9faec009@mail.gmail.com> Hello am i have used visual studio 2005 and also 2008 to compile OpenRtSP ....but i have received the folowing errors ...no matter how many times i tried to compile....please do help me......if this works out i will have to work on RTSP SERVER as a part of my project(streaming server)...earlier i worked on DARWIN.... here is the log =========== Build started: Project: OPENRTSP2005, Configuration: Debug|Win32 Command Lines Creating temporary file "d:\vs2005Projects\OPENRTSP2005\Debug\RSP00000229963752.rsp" with contents [ /Od /I "D:\vs2005Projects\OPENRTSP2005\modules\BasicUsageEnvironment\include" /I "D:\vs2005Projects\OPENRTSP2005\modules\groupsock\include" /I "D:\vs2005Projects\OPENRTSP2005\modules\liveMedia\include" /I "D:\vs2005Projects\OPENRTSP2005\modules\UsageEnvironment\include" /I "D:\vs2005Projects\OPENRTSP2005\modules\mediaServer\include" /I "D:\vs2005Projects\OPENRTSP2005\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_UNICODE" /D "UNICODE" /Gm /EHsc /RTC1 /MDd /Fo"Debug\\" /Fd"Debug\vc80.pdb" /W3 /c /Wp64 /ZI /TP .\openRTSP.cpp .\playCommon.cpp ] Creating command line "cl.exe @d:\vs2005Projects\OPENRTSP2005\Debug\RSP00000229963752.rsp /nologo /errorReport:prompt" Creating temporary file "d:\vs2005Projects\OPENRTSP2005\Debug\TMP00000329963752.tmp" with contents [ 1 /* CREATEPROCESS_MANIFEST_RESOURCE_ID */ 24 /* RT_MANIFEST */ ".\\Debug\\OPENRTSP2005.exe.embed.manifest" ] Creating command line "rc.exe /fo".\Debug\OPENRTSP2005.exe.embed.manifest.res" d:\vs2005Projects\OPENRTSP2005\Debug\TMP00000329963752.tmp" Creating temporary file "d:\vs2005Projects\OPENRTSP2005\Debug\RSP00000429963752.rsp" with contents [ /OUT:"D:\vs2005Projects\OPENRTSP2005\Debug\OPENRTSP2005.exe" /INCREMENTAL /LIBPATH:"D:\vs2005Projects\OPENRTSP2005\modules\Debug" /MANIFEST /MANIFESTFILE:"Debug\OPENRTSP2005.exe.intermediate.manifest" /DEBUG /PDB:"d:\vs2005projects\openrtsp2005\debug\OPENRTSP2005.pdb" /SUBSYSTEM:CONSOLE /MACHINE:X86 BasicUsageEnvironment.lib groupsock.lib liveMedia.lib mediaServer.lib UsageEnvironment.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ".\debug\playCommon.obj" ".\debug\openRTSP.obj" ".\Debug\OPENRTSP2005.exe.embed.manifest.res" ] Creating command line "link.exe @d:\vs2005Projects\OPENRTSP2005\Debug\RSP00000429963752.rsp /NOLOGO /ERRORREPORT:PROMPT" Output Window Compiling... playCommon.cpp d:\vs2005projects\openrtsp2005\playcommon.cpp(142) : warning C4996: 'sscanf' was declared deprecated c:\program files\microsoft visual studio 8\vc\include\stdio.h(311) : see declaration of 'sscanf' Message: 'This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.' d:\vs2005projects\openrtsp2005\playcommon.cpp(206) : warning C4996: 'sscanf' was declared deprecated c:\program files\microsoft visual studio 8\vc\include\stdio.h(311) : see declaration of 'sscanf' Message: 'This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.' d:\vs2005projects\openrtsp2005\playcommon.cpp(222) : warning C4996: 'sscanf' was declared deprecated c:\program files\microsoft visual studio 8\vc\include\stdio.h(311) : see declaration of 'sscanf' Message: 'This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.' d:\vs2005projects\openrtsp2005\playcommon.cpp(235) : warning C4996: 'sscanf' was declared deprecated c:\program files\microsoft visual studio 8\vc\include\stdio.h(311) : see declaration of 'sscanf' Message: 'This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.' d:\vs2005projects\openrtsp2005\playcommon.cpp(282) : warning C4996: 'sscanf' was declared deprecated c:\program files\microsoft visual studio 8\vc\include\stdio.h(311) : see declaration of 'sscanf' Message: 'This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.' d:\vs2005projects\openrtsp2005\playcommon.cpp(305) : warning C4996: 'sscanf' was declared deprecated c:\program files\microsoft visual studio 8\vc\include\stdio.h(311) : see declaration of 'sscanf' Message: 'This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.' d:\vs2005projects\openrtsp2005\playcommon.cpp(317) : warning C4996: 'sscanf' was declared deprecated c:\program files\microsoft visual studio 8\vc\include\stdio.h(311) : see declaration of 'sscanf' Message: 'This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.' d:\vs2005projects\openrtsp2005\playcommon.cpp(333) : warning C4996: 'sscanf' was declared deprecated c:\program files\microsoft visual studio 8\vc\include\stdio.h(311) : see declaration of 'sscanf' Message: 'This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.' d:\vs2005projects\openrtsp2005\playcommon.cpp(342) : warning C4996: 'sscanf' was declared deprecated c:\program files\microsoft visual studio 8\vc\include\stdio.h(311) : see declaration of 'sscanf' Message: 'This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.' d:\vs2005projects\openrtsp2005\playcommon.cpp(351) : warning C4996: 'sscanf' was declared deprecated c:\program files\microsoft visual studio 8\vc\include\stdio.h(311) : see declaration of 'sscanf' Message: 'This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.' d:\vs2005projects\openrtsp2005\playcommon.cpp(366) : warning C4996: 'sscanf' was declared deprecated c:\program files\microsoft visual studio 8\vc\include\stdio.h(311) : see declaration of 'sscanf' Message: 'This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.' d:\vs2005projects\openrtsp2005\playcommon.cpp(374) : warning C4996: 'sscanf' was declared deprecated c:\program files\microsoft visual studio 8\vc\include\stdio.h(311) : see declaration of 'sscanf' Message: 'This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.' d:\vs2005projects\openrtsp2005\playcommon.cpp(403) : warning C4996: 'sscanf' was declared deprecated c:\program files\microsoft visual studio 8\vc\include\stdio.h(311) : see declaration of 'sscanf' Message: 'This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.' d:\vs2005projects\openrtsp2005\playcommon.cpp(414) : warning C4996: 'sscanf' was declared deprecated c:\program files\microsoft visual studio 8\vc\include\stdio.h(311) : see declaration of 'sscanf' Message: 'This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.' d:\vs2005projects\openrtsp2005\playcommon.cpp(424) : warning C4996: 'sscanf' was declared deprecated c:\program files\microsoft visual studio 8\vc\include\stdio.h(311) : see declaration of 'sscanf' Message: 'This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.' d:\vs2005projects\openrtsp2005\playcommon.cpp(705) : warning C4996: '_snprintf' was declared deprecated c:\program files\microsoft visual studio 8\vc\include\stdio.h(339) : see declaration of '_snprintf' Message: 'This function or variable may be unsafe. Consider using _snprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.' d:\vs2005projects\openrtsp2005\playcommon.cpp(707) : warning C4996: 'sprintf' was declared deprecated c:\program files\microsoft visual studio 8\vc\include\stdio.h(345) : see declaration of 'sprintf' Message: 'This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.' d:\vs2005projects\openrtsp2005\playcommon.cpp(1269) : warning C4996: 'sprintf' was declared deprecated c:\program files\microsoft visual studio 8\vc\include\stdio.h(345) : see declaration of 'sprintf' Message: 'This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.' openRTSP.cpp Generating Code... Compiling manifest to resources... Linking... liveMedia.lib(MediaSession.obj) : error LNK2019: unresolved external symbol "public: static class DVVideoRTPSource * __cdecl DVVideoRTPSource::createNew(class UsageEnvironment &,class Groupsock *,unsigned char,unsigned int)" (?createNew at DVVideoRTPSource@@SAPAV1 at AAVUsageEnvironment@@PAVGroupsock@@EI at Z) referenced in function "public: unsigned int __thiscall MediaSubsession::initiate(int)" (?initiate at MediaSubsession@@QAEIH at Z) liveMedia.lib(RTCP.obj) : error LNK2019: unresolved external symbol _OnReceive referenced in function "private: void __thiscall RTCPInstance::onReceive(int,int,unsigned int)" (?onReceive at RTCPInstance@@AAEXHHI at Z) liveMedia.lib(RTCP.obj) : error LNK2019: unresolved external symbol _OnExpire referenced in function "private: void __thiscall RTCPInstance::onExpire1(void)" (?onExpire1 at RTCPInstance@@AAEXXZ) liveMedia.lib(RTSPClient.obj) : error LNK2019: unresolved external symbol _our_MD5Data referenced in function "private: unsigned int __thiscall RTSPClient::setupHTTPTunneling(char const *,class Authenticator *)" (?setupHTTPTunneling at RTSPClient@@AAEIPBDPAVAuthenticator@@@Z) liveMedia.lib(DigestAuthentication.obj) : error LNK2001: unresolved external symbol _our_MD5Data D:\vs2005Projects\OPENRTSP2005\Debug\OPENRTSP2005.exe : fatal error LNK1120: 4 unresolved externals Results Build log was saved at "file://d:\vs2005Projects\OPENRTSP2005\Debug\BuildLog.htm" OPENRTSP2005 - 6 error(s), 18 warning(s) -------------- next part -------------- An HTML attachment was scrubbed... URL: From remote.julia at gmail.com Thu Feb 25 08:44:14 2010 From: remote.julia at gmail.com (Julia Cipoletta) Date: Thu, 25 Feb 2010 11:44:14 -0500 Subject: [Live-devel] RTP streaming with live feed Message-ID: <743caa621002250844v2530a31cs364d2c3974d93abf@mail.gmail.com> Hi Developers, Could anyone share with me some examples for RTP streaming with live video feed using LIVE555. I have read suggestions in devicesource class. But I would like to see some read code. Any suggestions are appreciated. Julia -------------- next part -------------- An HTML attachment was scrubbed... URL: From PsychoArts at gmx.net Sat Feb 20 08:40:10 2010 From: PsychoArts at gmx.net (PsychoArts at gmx.net) Date: Sat, 20 Feb 2010 17:40:10 +0100 Subject: [Live-devel] compiling for ARM EABI Message-ID: <20100220164010.267130@gmx.net> Hello, For days I am trying to compile for ARM EABI using the Android NDK. I could compile it but when I try to compile the Application I get these errors all the time: mike at linux-2uz6:~/dev/sdks/android-ndk-1.6_r1> make APP=test Android NDK: Building for application 'test' Compile thumb : test <= apps/test/project/jni/native.c apps/test/project/jni/native.c:2:28: warning: TaskScheduler.hh: No such file or directory In file included from apps/test/project/jni/native.c:3: live/UsageEnvironment/include/UsageEnvironment.hh:49: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'UsageEnvironment' live/UsageEnvironment/include/UsageEnvironment.hh:98: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'TaskScheduler' make: *** [out/apps/test//objs/test/native.o] Errors 1 Any idea what I am doing wrong???? -- NEU: Mit GMX DSL ?ber 1000,- ? sparen! http://portal.gmx.net/de/go/dsl02 From rob.krakora at gmail.com Mon Feb 22 05:04:42 2010 From: rob.krakora at gmail.com (Robert Krakora) Date: Mon, 22 Feb 2010 08:04:42 -0500 Subject: [Live-devel] live555 blocked on a select In-Reply-To: <1266834412.4b825bec804c2@imp.celeos.eu> References: <1266331888.4b7ab0f0e234b@imp.celeos.eu> <1266422220.4b7c11cc667fa@imp.celeos.eu> <1266834412.4b825bec804c2@imp.celeos.eu> Message-ID: I will second that. I have seen this same problem in an RTSP client stack provided by a company whose name I will not mention. On Mon, Feb 22, 2010 at 5:26 AM, S?bastien Escudier < sebastien-devel at celeos.eu> wrote: > Quoting Ross Finlayson : > > > Perhaps the server is (erroneously) ending its response only with > > \r\n, and not with \r\n\r\n ? > > No, > The response is correctly ended by \r\n\r\n. The body isn't (but that's > normal). > > It is a response to a get parameter. The response is a 404 Not found with a > content-length of 316 > But live555 doesn't read the 316 bytes length body of the response. > So when the library is reading again the socket, it reads the body of the > previous response, and doesn't find \r\n\r\n, so it blocks. > > The problem is in RTSPClient.cpp in getMediaSessionParameter function, when > you > check the responseCode (line 1572). If it's != 200 then you don't read the > body > of the message, which stays in the socket. > Don't you think we should read the response body, whatever the response > code ? > > PS : > To be clear, what I call the response is : > RTSP/1.0 404 Not found > followed by a content-length, a content type and \r\n\r\n > Then there is the body (text). > > > _______________________________________________ > live-devel mailing list > live-devel at lists.live555.com > http://lists.live555.com/mailman/listinfo/live-devel > -- Rob Krakora Senior Software Engineer MessageNet Systems 101 East Carmel Dr. Suite 105 Carmel, IN 46032 (317)566-1677 Ext. 206 (317)663-0808 Fax -------------- next part -------------- An HTML attachment was scrubbed... URL: From finlayson at live555.com Sat Feb 27 09:28:59 2010 From: finlayson at live555.com (Ross Finlayson) Date: Sat, 27 Feb 2010 09:28:59 -0800 Subject: [Live-devel] H264 "PLAY" In-Reply-To: <39b9a2b31002250107u1dbdeab9o522ab851a2440567@mail.gmail.com> References: <39b9a2b31002250107u1dbdeab9o522ab851a2440567@mail.gmail.com> Message-ID: >I added that line because I tried connect using VLC and the >difference betwen PLAY command is: > >VLC Send play with: "rtsp://xxx.xxx.xxx.xxx:554/axis-media/media.amp". >RTSPClient without my code sends: >"rtsp://xxx.xxx.xxx.xxx:554/axis-media/media.amp?videocodec=h264". Well, VLC uses our library (when acting as a RTSP client). But perhaps it has extra code that mangles "rtsp://" URLs in the way you're describing?? (In any case, RTSP clients should really not be mangling URLs.) -- Ross Finlayson Live Networks, Inc. http://www.live555.com/ From finlayson at live555.com Sat Feb 27 09:29:28 2010 From: finlayson at live555.com (Ross Finlayson) Date: Sat, 27 Feb 2010 09:29:28 -0800 Subject: [Live-devel] VLC supporting AMR-WB or not? In-Reply-To: <38A838806557FA4D80EFB2C91A7BC7640D9FBDC9BA@us-bv-m10.global.tektronix.net > References: <38A838806557FA4D80EFB2C91A7BC7640D9FBDC9BA@us-bv-m10.global.tektronix.net > Message-ID: >I am wondering whether or not the VLC media player support the AMR-WB? VLC (especially the part that decodes audio and video) is not our software. You will need to post your question to a VLC mailing list. -- Ross Finlayson Live Networks, Inc. http://www.live555.com/ From finlayson at live555.com Sat Feb 27 09:29:47 2010 From: finlayson at live555.com (Ross Finlayson) Date: Sat, 27 Feb 2010 09:29:47 -0800 Subject: [Live-devel] openRTSP In-Reply-To: <00a801cab60a$aae3e270$00aba750$@debevere@ugent.be> References: <000901cab13b$f4123060$dc369120$@debevere@ugent.be> <00a801cab60a$aae3e270$00aba750$@debevere@ugent.be> Message-ID: >I did not ran into the limit of sockets per thread but using netstat, I >found out that sometimes two pairs of sockets used the same RTP and RTCP >port numbers. It's the server that decides what port numbers are used for RTP and RTCP for each stream. If RTP and/or RTCP port numbers are being reused, then that appears to be a bug in your server. (Our RTSP server code should not be doing this, so I hope your server is not using our code.) >Also, in the MediaSubsession::initiate(int useSpecialRTPoffset) function >only the pointer value of fRT(C)PSocket is checked after the creation of a >Groupsock object. But if the socket creation call returns -1 in the >constructor, the program will continue using the invalid socket handle. >Apart from the pointer value of fRT(C)PSocket, the value of fSocketNum >should be checked. Yes, you're probably right. >A last remark in the MediaSubsession::initiate(int useSpecialRTPoffset) >function: I noticed that when the user does not specify a start port value >(fClientsPortNum) sockets are created and checked if they are bound to an >even port. If they don't they are added to a socketHashTable and a new >socket is created until successful. Why not just create two sockets and >trying to bind them to a given port number, just as is done when the user >actually does give a start port number Because that's not what we want to do. Instead, we want the operating system to chose a port number for itself (this is, by convention, called an "ephemeral port number"). We just have to make sure that even port numbers are used for RTP. -- Ross Finlayson Live Networks, Inc. http://www.live555.com/ From finlayson at live555.com Sun Feb 28 18:49:25 2010 From: finlayson at live555.com (Ross Finlayson) Date: Sun, 28 Feb 2010 18:49:25 -0800 Subject: [Live-devel] live555 blocked on a select In-Reply-To: <1266834412.4b825bec804c2@imp.celeos.eu> References: <1266331888.4b7ab0f0e234b@imp.celeos.eu> <1266422220.4b7c11cc667fa@imp.celeos.eu> <1266834412.4b825bec804c2@imp.celeos.eu> Message-ID: >It is a response to a get parameter. The response is a 404 Not found with a >content-length of 316 >But live555 doesn't read the 316 bytes length body of the response. >So when the library is reading again the socket, it reads the body of the >previous response, and doesn't find \r\n\r\n, so it blocks. > >The problem is in RTSPClient.cpp in getMediaSessionParameter >function, when you >check the responseCode (line 1572). If it's != 200 then you don't >read the body >of the message, which stays in the socket. >Don't you think we should read the response body, whatever the response code ? I suppose so, although it's strange that the response has additional content following the "404 Not found" response header. However, in the spirit of "be liberal in what you accept", we should check for (and discard) this extra data. I'll make this change in a future release of the code. -- Ross Finlayson Live Networks, Inc. http://www.live555.com/