From TAYK0004 at ntu.edu.sg Mon Jan 1 14:01:33 2007 From: TAYK0004 at ntu.edu.sg (#TAY KOON HWEE#) Date: Tue, 2 Jan 2007 06:01:33 +0800 Subject: [Live-devel] H264VideoStreamFramer Message-ID: <438567054C073949AEBE5A28B83E7DE133FC8C@MAIL21.student.main.ntu.edu.sg> Hi guys, i attempted to write the h.264videoframer. Can you guy help me take a look? I am super noivce in this area but thanks to the many help provided so far. // Additional Implementation for H264videostreamframer void H264VideoStreamFramer::doGetNextFrame() { // Try to read as many bytes as will fit in the buffer provided // (or "fPreferredFrameSize" if less) if (fPreferredFrameSize > 0 && fPreferredFrameSize < fMaxSize) { fMaxSize = fPreferredFrameSize; } fFrameSize = g_video_enc_rbuf->read(fTo,fMaxSize,0); //g_video_enc_rbuf is a ring buffer which contains the encoded video // Record the current time as the 'presentation time': gettimeofday(&fPresentationTime, NULL); } I have problem understanding and writing the "currentNALUnitEndsAccessUnit()". Can someone provide more information on this? Many thanks in advanced. Regards zkunhui -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.live555.com/pipermail/live-devel/attachments/20070101/2922a22d/attachment.html From finlayson at live555.com Mon Jan 1 16:07:44 2007 From: finlayson at live555.com (Ross Finlayson) Date: Mon, 1 Jan 2007 16:07:44 -0800 Subject: [Live-devel] H264VideoStreamFramer In-Reply-To: <438567054C073949AEBE5A28B83E7DE133FC8C@MAIL21.student.main.ntu.edu.sg> References: <438567054C073949AEBE5A28B83E7DE133FC8C@MAIL21.student.main.ntu.edu.sg> Message-ID: > fFrameSize = g_video_enc_rbuf->read(fTo,fMaxSize,0); >//g_video_enc_rbuf is a ring buffer which contains the encoded video This will work only if the 'read()' function returns only a complete NAL unit - nothing more and nothing less. Also, you should really be doing the read asynchronously - e.g., using TaskScheduler::turnOnBackgroundReadProcessing()". Otherwise your application won't be able to do any work while your 'read()' function is blocked waiting for data. >I have problem understanding and writing the >"currentNALUnitEndsAccessUnit()". Can someone provide more >information on this? An 'access unit' is a complete video frame (which is typically made up from several consecutive NAL units). Your "currentNALUnitEndsAccessUnit()" function returns True iff the NAL unit that you're currently delivering is the last NAL unit in an access unit (video frame). -- Ross Finlayson Live Networks, Inc. http://www.live555.com/ -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.live555.com/pipermail/live-devel/attachments/20070101/22d47252/attachment.html From mrnikhilagrawal at gmail.com Mon Jan 1 21:15:43 2007 From: mrnikhilagrawal at gmail.com (Nikhil Agrawal) Date: Tue, 2 Jan 2007 10:45:43 +0530 Subject: [Live-devel] Regarding MPEG1or2AudioVideo Streaming Message-ID: <733cde3e0701012115y70c731e7q4f5e12545b369d8d@mail.gmail.com> Hi, In case of using testMPEG1or2AudioVideoStreamer , server starts broadcasting/unicasting data as soon as it gets started. I want to make it start unicasting , only when a request from client comes ( like Wav streaming is working) , so how can i proceed to do so? Regards, Nikhil Agrawal -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.live555.com/pipermail/live-devel/attachments/20070101/84a45fc4/attachment.html From nimesh.kanoth at gmail.com Mon Jan 1 23:01:28 2007 From: nimesh.kanoth at gmail.com (Nimesh Kanoth) Date: Tue, 2 Jan 2007 16:01:28 +0900 Subject: [Live-devel] Regarding the mpeg2-ts streaming Message-ID: Dear all , I have a mpeg2-ts file of size 2.4 GB. when I try to stream this file usin./testMPEG2TransportStreamer I am getting below error [main:60]destinationAddressStr-232.255.42.42 RTCPInstance[0x8a67598]::RTCPInstance() schedule(2.384201->1167721181.463044) Play this stream using the URL "rtsp://10.81.32.156/testStream" Beginning streaming... unable to open file Unable to open file "test.ts" as a byte-stream file source Please give me some suggestons.. Nimesh Kanoth -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.live555.com/pipermail/live-devel/attachments/20070101/99240f8a/attachment.html From ritsgenx at gmail.com Mon Jan 1 23:32:38 2007 From: ritsgenx at gmail.com (Ritesh Mittal) Date: Tue, 2 Jan 2007 13:02:38 +0530 Subject: [Live-devel] Query regarding video streaming of MPEG file Message-ID: Hi, I have been working on Live555 for around 4 days. Its really an interesting Open source media server. I have few queiries and it will be great if you can help me: 1. Using the testonDemandRTPServer.cpp i have been able to stream .MPEG files (MPEG1, MPEG-2) files. But there exist test code for a. // A MPEG-1 or 2 audio+video program stream b. // A MPEG-1 or 2 video elementary stream So, my question is what is the mail difference between MPEG program stream and MPEG elementary stream. 2. According to the documentaion of Live555 RTSP streaming is supported by the following clients : a. QuickTime b. VLC c. Real Player Can anyone suggest any other (either proprietary or free / open source or paid) media client that support rtsp stream from Live555 server. 3. I have personally tried streaming on following file extension: .mpeg, .dat. .wav, .mp3 My third question is on what other file extension Live555 support streaming. Specially i want to know about file .avi, .3gp and .mp4 4. Is this possible to inform the client machine that on which player this stream needs to be play. For examle it is possible to inform the client machine that this video stream should be played by Real Player. Can we make some changes in the source code of Live555 for the same. Thanks. I will be waiting for your reply. Regards, Ritesh Mittal -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.live555.com/pipermail/live-devel/attachments/20070101/43b5e63c/attachment.html From finlayson at live555.com Tue Jan 2 00:21:54 2007 From: finlayson at live555.com (Ross Finlayson) Date: Tue, 2 Jan 2007 00:21:54 -0800 Subject: [Live-devel] Query regarding video streaming of MPEG file In-Reply-To: References: Message-ID: > So, my question is what is the mail difference between MPEG >program stream and MPEG elementary stream. The former has audio and video streams multiplexed together; the latter is just a single video (or audio) stream. See the MPEG specifications for more information. > > 2. According to the documentaion of Live555 RTSP streaming is >supported by the following clients : > > a. QuickTime > b. VLC > c. Real Player > > Can anyone suggest any other (either proprietary or free / open >source or paid) media client that support rtsp stream from Live555 >server. openRTSP The Amino set-top box (for playing MPEG-2 Transport Streams only) probably lots of other clients > >3. I have personally tried streaming on following file extension: > > .mpeg, .dat. .wav, .mp3 I have no idea what a ".dat" file is. > > My third question is on what other file extension Live555 support >streaming. Specially i want to know about file .avi, .3gp and .mp4 No, not yet. > >4. Is this possible to inform the client machine that on which >player this stream needs to be play. > For examle it is possible to inform the client machine that this >video stream should be played by Real Player. That makes no sense, because if RealPlayer is being used to access the stream, then it *is* the client (by definition). (If you are talking about launching a media player automatically from a web browser, then that is a question for some other mailing list.) -- Ross Finlayson Live Networks, Inc. http://www.live555.com/ From finlayson at live555.com Tue Jan 2 00:22:22 2007 From: finlayson at live555.com (Ross Finlayson) Date: Tue, 2 Jan 2007 00:22:22 -0800 Subject: [Live-devel] Regarding MPEG1or2AudioVideo Streaming In-Reply-To: <733cde3e0701012115y70c731e7q4f5e12545b369d8d@mail.gmail.com> References: <733cde3e0701012115y70c731e7q4f5e12545b369d8d@mail.gmail.com> Message-ID: >Hi, > >In case of using testMPEG1or2AudioVideoStreamer , server starts >broadcasting/unicasting data as soon as it gets started. I want to >make it start unicasting , only when a request from client comes ( >like Wav streaming is working) , so how can i proceed to do so? Use "testOnDemandRTSPServer", or the "live555MediaServer". -- Ross Finlayson Live Networks, Inc. http://www.live555.com/ From finlayson at live555.com Tue Jan 2 00:24:13 2007 From: finlayson at live555.com (Ross Finlayson) Date: Tue, 2 Jan 2007 00:24:13 -0800 Subject: [Live-devel] Regarding the mpeg2-ts streaming In-Reply-To: References: Message-ID: >Dear all , > >I have a mpeg2-ts file of size 2.4 GB. when I try to stream this >file usin./testMPEG2TransportStreamer >I am getting below error > >[main:60]destinationAddressStr-232.255.42.42 >RTCPInstance[0x8a67598]::RTCPInstance() >schedule(2.384201->1167721181.463044) >Play this stream using the URL "rtsp://10.81.32.156/testStream" >Beginning streaming... >unable to open file >Unable to open file "test.ts" as a byte-stream file source Are you sure that the file "test.ts" exists in the "testProgs" directory (and that it's readable)? -- Ross Finlayson Live Networks, Inc. http://www.live555.com/ -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.live555.com/pipermail/live-devel/attachments/20070102/212a2bfa/attachment.html From armandopoulos at yahoo.fr Tue Jan 2 02:50:02 2007 From: armandopoulos at yahoo.fr (Armando Ko) Date: Tue, 2 Jan 2007 10:50:02 +0000 (GMT) Subject: [Live-devel] (no subject) Message-ID: <20070102105003.79798.qmail@web86910.mail.ukl.yahoo.com> hallo all, i am a new user form the live555 but how can i modify the quantization value in with the source files ? thx and happy new yeah. Armando __________________________________________________ Do You Yahoo!? En finir avec le spam? Yahoo! Mail vous offre la meilleure protection possible contre les messages non sollicit?s http://mail.yahoo.fr Yahoo! Mail -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.live555.com/pipermail/live-devel/attachments/20070102/b32dbfc8/attachment-0001.html From nimesh.kanoth at gmail.com Tue Jan 2 03:31:21 2007 From: nimesh.kanoth at gmail.com (Nimesh Kanoth) Date: Tue, 2 Jan 2007 03:31:21 -0800 Subject: [Live-devel] to Rossy Message-ID: Hi, yeah I am sure that is readable and present in testprog directory. Rgds nimesh >Dear all , > >I have a mpeg2-ts file of size 2.4 GB. when I try to stream this >file usin./testMPEG2TransportStreamer >I am getting below error > >[main:60]destinationAddressStr-232.255.42.42 >RTCPInstance[0x8a67598]::RTCPInstance() >schedule(2.384201->1167721181.463044) >Play this stream using the URL "rtsp://10.81.32.156/testStream" >Beginning streaming... >unable to open file >Unable to open file "test.ts" as a byte-stream file source Are you sure that the file "test.ts" exists in the "testProgs" directory (and that it's readable)? -- Nimesh Kanoth -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.live555.com/pipermail/live-devel/attachments/20070102/61e7f5ab/attachment.html From rishikerala at gmail.com Tue Jan 2 04:05:34 2007 From: rishikerala at gmail.com (Rishi kerala) Date: Tue, 2 Jan 2007 04:05:34 -0800 Subject: [Live-devel] hi all need help for trickmode Message-ID: <4ba29cc0701020405p186db64cgda4b8c73958c7857@mail.gmail.com> Hi all, I want to give support for trickmode in mpeg2-ts streaming. any one have idea about this. Please help me to get some information. i am using live media library to stream media content to my board. still under intergartion.Please help me to get some information. I am using a hardware decoder based board. So how can i give trick mode support. rgds Rishi -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.live555.com/pipermail/live-devel/attachments/20070102/f66c3c64/attachment.html From finlayson at live555.com Tue Jan 2 07:42:14 2007 From: finlayson at live555.com (Ross Finlayson) Date: Tue, 2 Jan 2007 07:42:14 -0800 Subject: [Live-devel] to Rossy In-Reply-To: References: Message-ID: > >Hi, >yeah I am sure that is readable and present in testprog directory. Then you're going to have to trace through the call to "OpenInputFile()" (in "liveMedia/InputFile.cpp"), to figure out why the call to "fopen" is failing. -- Ross Finlayson Live Networks, Inc. http://www.live555.com/ From finlayson at live555.com Tue Jan 2 07:43:20 2007 From: finlayson at live555.com (Ross Finlayson) Date: Tue, 2 Jan 2007 07:43:20 -0800 Subject: [Live-devel] hi all need help for trickmode In-Reply-To: <4ba29cc0701020405p186db64cgda4b8c73958c7857@mail.gmail.com> References: <4ba29cc0701020405p186db64cgda4b8c73958c7857@mail.gmail.com> Message-ID: >I want to give support for trickmode in mpeg2-ts streaming. any one >have idea about this. See -- Ross Finlayson Live Networks, Inc. http://www.live555.com/ -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.live555.com/pipermail/live-devel/attachments/20070102/b24050bc/attachment.html From rishikerala at gmail.com Tue Jan 2 17:16:49 2007 From: rishikerala at gmail.com (Rishi kerala) Date: Tue, 2 Jan 2007 17:16:49 -0800 Subject: [Live-devel] to Rossy In-Reply-To: References: Message-ID: <4ba29cc0701021716w44cf24eev2c785e3b72642cba@mail.gmail.com> Hi Ross, I debug that file with a simple program. fd = fopen("test.ts","rb") if (fd == NULL) perror(Failed to open"); error it is givingas ./a.out Failed to open : File too large. How to slove this Rgds Rishi On 1/2/07, Ross Finlayson wrote: > > > > >Hi, > >yeah I am sure that is readable and present in testprog directory. > > Then you're going to have to trace through the call to > "OpenInputFile()" (in "liveMedia/InputFile.cpp"), to figure out why > the call to "fopen" is failing. > -- > > 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: http://lists.live555.com/pipermail/live-devel/attachments/20070102/17e4d90b/attachment.html From rishikerala at gmail.com Tue Jan 2 19:51:33 2007 From: rishikerala at gmail.com (Rishi kerala) Date: Tue, 2 Jan 2007 19:51:33 -0800 Subject: [Live-devel] hi all need help for trickmode In-Reply-To: References: <4ba29cc0701020405p186db64cgda4b8c73958c7857@mail.gmail.com> Message-ID: <4ba29cc0701021951k64be9f3fk70484eb62b3f9ba1@mail.gmail.com> Hi Ross, I try to use the trick mode support.. MPEG2TransportStreamIndexer avc_css.ts Writing index file "avc_css.tsx" ............ done. It takes around 5 mins. then when i tried to check the size of file du -h avc_css.tsx 0 It is showing zero .. when I try to use testMPEG2TransportStreamTrickPlay avc_css.ts 0 8 avc_new.ts Warning: Size of the index file " Warning: Size of the index file "avc_css.tsx" (0) is not a multiple of the index record size (11) Writing output file "avc_new.ts" (start time 0.000000, scale 8)......done Please give me a suggestion thanks Nimesh On 1/2/07, Ross Finlayson wrote: > > I want to give support for trickmode in mpeg2-ts streaming. any one have > idea about this. > > > > See tml> > > -- > > > 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: http://lists.live555.com/pipermail/live-devel/attachments/20070102/7126227c/attachment.html From finlayson at live555.com Tue Jan 2 19:57:07 2007 From: finlayson at live555.com (Ross Finlayson) Date: Tue, 2 Jan 2007 19:57:07 -0800 Subject: [Live-devel] "fopen()" problem with large files on Fedora? In-Reply-To: <4ba29cc0701021948j1b794689k9778dfad30abf264@mail.gmail.com> References: <4ba29cc0701021716w44cf24eev2c785e3b72642cba@mail.gmail.com> <4ba29cc0701021948j1b794689k9778dfad30abf264@mail.gmail.com> Message-ID: Can anyone shed light on this guy's problem. He says he's using Fedora Core 5, but gets a "File too large" error when he tries to open a 2+ GByte file using "fopen()". I thought that all modern OSs could now handle files this large? Could he perhaps be using an out-of-date version of "libc" instead?? >I am using Fedora Core 5 here. >thanks >Rgds >Rishi > >On 1/3/07, Ross Finlayson ><finlayson at live555.com > wrote: > > >I debug that file with a simple program. >>fd = fopen("test.ts ","rb") >>if (fd == NULL) perror(Failed to open"); >> >> >>error it is givingas >>./a.out >>Failed to open >>: File too large. >> >>How to slove this > >You need to upgrade to a newer operating system (one that supports >files >2^31 bytes in size). >-- > >Ross Finlayson >Live Networks, Inc. >http://www.live555.com/ -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.live555.com/pipermail/live-devel/attachments/20070102/3197fba3/attachment.html From finlayson at live555.com Tue Jan 2 20:04:21 2007 From: finlayson at live555.com (Ross Finlayson) Date: Tue, 2 Jan 2007 20:04:21 -0800 Subject: [Live-devel] hi all need help for trickmode In-Reply-To: <4ba29cc0701021951k64be9f3fk70484eb62b3f9ba1@mail.gmail.com> References: <4ba29cc0701020405p186db64cgda4b8c73958c7857@mail.gmail.com> <4ba29cc0701021951k64be9f3fk70484eb62b3f9ba1@mail.gmail.com> Message-ID: >I try to use the trick mode support.. > >MPEG2TransportStreamIndexer avc_css.ts >Writing index file "avc_css.tsx" ............ done. It takes around 5 mins. >then when i tried to check the size of file >du -h avc_css.tsx >0 > >It is showing zero .. Once again - You Have Complete Source Code. You're going to have to track down yourself what's going wrong on your system. I suspect that it is related to the problem that you are having opening your >2GByte file. -- Ross Finlayson Live Networks, Inc. http://www.live555.com/ From rishikerala at gmail.com Tue Jan 2 20:53:41 2007 From: rishikerala at gmail.com (Rishi kerala) Date: Wed, 3 Jan 2007 13:53:41 +0900 Subject: [Live-devel] hi all need help for trickmode In-Reply-To: References: <4ba29cc0701020405p186db64cgda4b8c73958c7857@mail.gmail.com> <4ba29cc0701021951k64be9f3fk70484eb62b3f9ba1@mail.gmail.com> Message-ID: <4ba29cc0701022053u644c893dp13d9d2e38edef320@mail.gmail.com> Hi, I am now in confusion see this test.ts is playing good with mplayer. I just compiled mplayer and installed. It is playing properly. just wonder. I copied the out put of mplayer MPlayer 1.0rc1-4.1.0 (C) 2000-2006 MPlayer Team CPU: Intel(R) Pentium(R) 4 CPU 3.00GHz (Family: 15, Model: 4, Stepping: 1) CPUflags: MMX: 1 MMX2: 1 3DNow: 0 3DNow2: 0 SSE: 1 SSE2: 1 Compiled for x86 CPU with extensions: MMX MMX2 SSE SSE2 Playing avc_csj.ts. TS file format detected. VIDEO H264(pid=481) AUDIO MPA(pid=482) NO SUBS (yet)! PROGRAM N. 1 FPS seems to be: 29.970030 ========================================================================== Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family Selected video codec: [ffh264] vfm: ffmpeg (FFmpeg H.264) ========================================================================== ========================================================================== Opening audio decoder: [mp3lib] MPEG layer-2, layer-3 AUDIO: 48000 Hz, 2 ch, s16le, 224.0 kbit/14.58% (ratio: 28000->192000) Selected audio codec: [mp3] afm: mp3lib (mp3lib MPEG layer-2, layer-3) ========================================================================== AO: [oss] 48000Hz 2ch s16le (2 bytes per sample) Starting playback... [h264 @ 0x87aa638]PAFF interlacing is not implemented [h264 @ 0x87aa638]PAFF interlacing is not implemented [h264 @ 0x87aa638]PAFF interlacing is not implemented [h264 @ 0x87aa638]PAFF interlacing is not implemented [h264 @ 0x87aa638]concealing 4080 DC, 4080 AC, 4080 MV errors VDec: vo config request - 1920 x 1080 (preferred colorspace: Planar YV12) VDec: using Planar YV12 as output csp (no 0) Movie-Aspect is 1.78:1 - prescaling to correct movie aspect. VO: [xv] 1920x1080 => 1920x1080 Planar YV12 [xv] Source image dimensions are too high: 1920x1080 (maximum is 1440x1080) Is it because the Source Image dimensions.. rgds rishi On 1/3/07, Ross Finlayson wrote: > > >I try to use the trick mode support.. > > > >MPEG2TransportStreamIndexer avc_css.ts > >Writing index file "avc_css.tsx" ............ done. It takes around 5 > mins. > >then when i tried to check the size of file > >du -h avc_css.tsx > >0 > > > >It is showing zero .. > > Once again - You Have Complete Source Code. You're going to have to > track down yourself what's going wrong on your system. > > I suspect that it is related to the problem that you are having > opening your >2GByte file. > > -- > > 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: http://lists.live555.com/pipermail/live-devel/attachments/20070102/1f985a4d/attachment-0001.html From rishikerala at gmail.com Tue Jan 2 21:17:18 2007 From: rishikerala at gmail.com (Rishi kerala) Date: Wed, 3 Jan 2007 14:17:18 +0900 Subject: [Live-devel] find problem in Large size Message-ID: <4ba29cc0701022117p3565d2b7l5c310841e88f851b@mail.gmail.com> Hi Ross, I fI use fopen64 and with some CFLAGS settings like CFLAGS+= -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE Now I can open this files. can You give some suggestions what we need change any thing other than this to support for Large files. Thank you for You kind coperation. One more Still I am not getting the trick mode problem , I am trying to solve that also. Any idea please pass to me Thanks Rgds Rishi n 1/3/07, Ross Finlayson wrote: > > Can anyone shed light on this guy's problem. He says he's using Fedora > Core 5, but gets a "File too large" error when he tries to open a 2+ GByte > file using "fopen()". I thought that all modern OSs could now handle files > this large? > > Could he perhaps be using an out-of-date version of "libc" instead?? > > > I am using Fedora Core 5 here. > thanks > Rgds > Rishi > > On 1/3/07,* Ross Finlayson* wrote: > > >I debug that file with a simple program. > >fd = fopen("test.ts ","rb") > >if (fd == NULL) perror(Failed to open"); > > > > > >error it is givingas > >./a.out > >Failed to open > >: File too large. > > > >How to slove this > > You need to upgrade to a newer operating system (one that supports > files >2^31 bytes in size). > -- > > 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: http://lists.live555.com/pipermail/live-devel/attachments/20070102/896b397b/attachment.html From jackymaillist at gmail.com Tue Jan 2 22:43:29 2007 From: jackymaillist at gmail.com (Jacky Cheung) Date: Wed, 03 Jan 2007 14:43:29 +0800 Subject: [Live-devel] Device Source Message-ID: <459B5091.7020905@gmail.com> Hi, I've read the faq on how to stream live source instead of from a file. And now I am thinking how to implement the deviceSource.cpp. In my case, my device will stream out MPEG4 frame by frame via a socket. After reading the comment of deviceSource.cpp, seemed that I need to implement deliverFrame() and doGetNextFrame(). However, I've got confused with these functions. What I think is ::doGetNextFrame() is called by the parent class for streaming out the frame via RTP. And ::deliverFrame() is used to obtain a new frame from device. Am I right? If so, I think I need to add the deliverFrame() to envir().taskScheduler().turnOnBackgroundHandling(..) and pack the incoming frame to a buffer or queue. And one doGetNextFrame() is called, then it should prepare fTo, fFrameSize, etc . Am I right? Thanks a lot Regards, Jacky From morgan.torvolt at gmail.com Tue Jan 2 23:23:23 2007 From: morgan.torvolt at gmail.com (=?ISO-8859-1?Q?Morgan_T=F8rvolt?=) Date: Wed, 3 Jan 2007 11:23:23 +0400 Subject: [Live-devel] "fopen()" problem with large files on Fedora? In-Reply-To: References: <4ba29cc0701021716w44cf24eev2c785e3b72642cba@mail.gmail.com> <4ba29cc0701021948j1b794689k9778dfad30abf264@mail.gmail.com> Message-ID: <3cc3561f0701022323k482296c9q3a5436760b97ac5@mail.gmail.com> Hi folks. Experienced the same problem. I believe what we did was alter the first line of the config.linux file to this: COMPILE_OPTS = $(INCLUDES) -I. -O2 -DSOCKLEN_T=socklen_t -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 IIRC it was the file offset bits that did the trick. This needed to be done even on our AMD64 based computer running 64 bits linux. Don't ask why, I don't know... Best "new year" regards -Morgan- On 03/01/07, Ross Finlayson wrote: > > > Can anyone shed light on this guy's problem. He says he's using Fedora Core > 5, but gets a "File too large" error when he tries to open a 2+ GByte file > using "fopen()". I thought that all modern OSs could now handle files this > large? > > > Could he perhaps be using an out-of-date version of "libc" instead?? > > > > > I am using Fedora Core 5 here. > thanks > Rgds > Rishi > > On 1/3/07, Ross Finlayson wrote: > > >I debug that file with a simple program. > >fd = fopen("test.ts ","rb") > >if (fd == NULL) perror(Failed to open"); > > > > > >error it is givingas > >./a.out > >Failed to open > >: File too large. > > > >How to slove this > > You need to upgrade to a newer operating system (one that supports > files >2^31 bytes in size). > -- > > 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 finlayson at live555.com Tue Jan 2 23:25:52 2007 From: finlayson at live555.com (Ross Finlayson) Date: Tue, 2 Jan 2007 23:25:52 -0800 Subject: [Live-devel] find problem in Large size In-Reply-To: <4ba29cc0701022117p3565d2b7l5c310841e88f851b@mail.gmail.com> References: <4ba29cc0701022117p3565d2b7l5c310841e88f851b@mail.gmail.com> Message-ID: >I fI use fopen64 and with some CFLAGS settings like CFLAGS+= >-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE >Now I can open this files. can You give some suggestions what we >need change any thing other than this to support for Large files. I've never heard of "fopen64()" before. And I've never heard of any (modern) operating system that can't open large files with the regular "fopen()" routine. It seems clear that you're not using the standard runtime libraries. You're on your own now - sorry. -- Ross Finlayson Live Networks, Inc. http://www.live555.com/ From finlayson at live555.com Tue Jan 2 23:39:18 2007 From: finlayson at live555.com (Ross Finlayson) Date: Tue, 2 Jan 2007 23:39:18 -0800 Subject: [Live-devel] "fopen()" problem with large files on Fedora? In-Reply-To: <3cc3561f0701022323k482296c9q3a5436760b97ac5@mail.gmail.com> References: <4ba29cc0701021716w44cf24eev2c785e3b72642cba@mail.gmail.com> <4ba29cc0701021948j1b794689k9778dfad30abf264@mail.gmail.com> <3cc3561f0701022323k482296c9q3a5436760b97ac5@mail.gmail.com> Message-ID: >Hi folks. > >Experienced the same problem. I believe what we did was alter the >first line of the config.linux file to this: > >COMPILE_OPTS = $(INCLUDES) -I. -O2 -DSOCKLEN_T=socklen_t >-D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 > >IIRC it was the file offset bits that did the trick. This needed to be >done even on our AMD64 based computer running 64 bits linux. Don't ask >why, I don't know... OK, so to be on the safe side I'll add - to the next release of the software - the flag -D_FILE_OFFSET_BITS=64 to the COMPILE_OPTS line in each of the "linux" config files. ("-D_LARGEFILE_SOURCE=1" is already there.) -- Ross Finlayson Live Networks, Inc. http://www.live555.com/ From kurutepe at nue.tu-berlin.de Wed Jan 3 02:30:26 2007 From: kurutepe at nue.tu-berlin.de (Engin Kurutepe) Date: Wed, 03 Jan 2007 11:30:26 +0100 Subject: [Live-devel] h.264 media subsession implementation Message-ID: <459B85C2.6090206@nue.tu-berlin.de> Hello All, Are any implementations for H.264 media subsessions as defined in RFC 3984 available? Best wishes for the new year, Engin. From TAYK0004 at ntu.edu.sg Wed Jan 3 06:44:01 2007 From: TAYK0004 at ntu.edu.sg (#TAY KOON HWEE#) Date: Wed, 3 Jan 2007 22:44:01 +0800 Subject: [Live-devel] more help on h.264 References: <438567054C073949AEBE5A28B83E7DE133FC8D@MAIL21.student.main.ntu.edu.sg> Message-ID: <438567054C073949AEBE5A28B83E7DE133FC8E@MAIL21.student.main.ntu.edu.sg> Hi Ross, thanks for helping me with the h.264 framer. Few more questions before I test out the framer. 1) "currentNALUnitEndsAccessUnit()" - for this boolean function, how do we know whether a NAL unit is the last unit in a frame? How different is this NAL unit so that i can write a IF statement 2) My teammate is still working on the encoder so I can only test with a encoded file. The file is using Annex B file format. Do I have to amend the previous framer which i posted to take into account? // Additional Implementation for H264videostreamframer void H264VideoStreamFramer::doGetNextFrame() { // Try to read as many bytes as will fit in the buffer provided // (or "fPreferredFrameSize" if less) if (fPreferredFrameSize > 0 && fPreferredFrameSize < fMaxSize) { fMaxSize = fPreferredFrameSize; } fFrameSize = g_video_enc_rbuf->read(fTo,fMaxSize,0); //g_video_enc_rbuf is a ring buffer which contains the encoded video // Record the current time as the 'presentation time': gettimeofday(&fPresentationTime, NULL); } Many thanks again. Hopefully I can make it by dateline Regards. Zkunhui -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.live555.com/pipermail/live-devel/attachments/20070103/f46dc195/attachment.html From TAYK0004 at ntu.edu.sg Wed Jan 3 08:39:22 2007 From: TAYK0004 at ntu.edu.sg (#TAY KOON HWEE#) Date: Thu, 4 Jan 2007 00:39:22 +0800 Subject: [Live-devel] currentNALUnitEndsAccessUnit() Message-ID: <438567054C073949AEBE5A28B83E7DE133FC91@MAIL21.student.main.ntu.edu.sg> Hi guys, after reading more ont he encoder, I discovered that NAL unit of type 11 will declare end of stream. Is it the one which the currentNALUnitEndsAccessUnit will check? If the NAL unit that is read from the file or buffer belongs to this type, then return false, else retun true? // Is this correct? int currentNALUnitEndsAccessUnit() { if(nal_type ==11) return 1; else return 0; } Many thanks once again. zkunhui -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.live555.com/pipermail/live-devel/attachments/20070103/16379da8/attachment.html From xcsmith at rockwellcollins.com Wed Jan 3 08:59:07 2007 From: xcsmith at rockwellcollins.com (xcsmith at rockwellcollins.com) Date: Wed, 3 Jan 2007 10:59:07 -0600 Subject: [Live-devel] Initial support for server 'trick play' operations on Transport Stream files Message-ID: >To support 'trick play' operations on a Transport Stream file, the >server must have a corresponding "index file". My server is doing transcoding from MPEG2 PS file to TS stream on the fly, exactly as described by you in recent posts. I can't use this implementation of trick mode then, can I? Xochitl From finlayson at live555.com Wed Jan 3 09:51:02 2007 From: finlayson at live555.com (Ross Finlayson) Date: Wed, 3 Jan 2007 09:51:02 -0800 Subject: [Live-devel] Initial support for server 'trick play' operations on Transport Stream files In-Reply-To: References: Message-ID: > >To support 'trick play' operations on a Transport Stream file, the >>server must have a corresponding "index file". > >My server is doing transcoding from MPEG2 PS file to TS stream on the fly, >exactly as described by you in recent posts. I can't use this >implementation of trick mode then, can I? If you're streaming from a live source (regardless of the media type), then obviously you can't support 'trick play' operations at all. If your source data is a MPEG-2 Program Stream *file* - rather than a MPEG-2 Program Stream live source - then, to support 'trick play', you would need to convert your file, in advance, to a Transport Stream file. You could then create an index file from the Transport Stream file, as I described in my earlier message, and then stream from the Transport Stream file (plus the index file). I.e., don't convert from a Program to a Transport Stream file on the fly, but instead do it in advance. -- Ross Finlayson Live Networks, Inc. http://www.live555.com/ From TAYK0004 at ntu.edu.sg Wed Jan 3 10:59:16 2007 From: TAYK0004 at ntu.edu.sg (#TAY KOON HWEE#) Date: Thu, 4 Jan 2007 02:59:16 +0800 Subject: [Live-devel] H.264 Message-ID: <438567054C073949AEBE5A28B83E7DE133FC94@MAIL21.student.main.ntu.edu.sg> Hi guys, found this reading ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// Earlier video compression standards were always centered around the concept of a bit stream. Higher layer syntax elements were separated by start codes to allow re-synchronization to the bit stream in case of corruption-be it the result of an erasure or of bit errors. H.264, when employing its optional Annex B, also allows such a framing scheme, primarily to support a few legacy protocol environments such as H.320 or MPEG-2 transport. The RTP packetization, however, employs the native NAL interface that is based on NAL units (NALUs). ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// Does this mean that if my encoder employ Annex B file format, I can use the livemedia MPEG2VideoFramer and MPEG2VideoSink to send the h.264 data over? many thanks. Zkunhui -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.live555.com/pipermail/live-devel/attachments/20070103/eabbd191/attachment.html From finlayson at live555.com Wed Jan 3 11:11:39 2007 From: finlayson at live555.com (Ross Finlayson) Date: Wed, 3 Jan 2007 11:11:39 -0800 Subject: [Live-devel] H.264 In-Reply-To: <438567054C073949AEBE5A28B83E7DE133FC94@MAIL21.student.main.ntu.edu.sg> References: <438567054C073949AEBE5A28B83E7DE133FC94@MAIL21.student.main.ntu.edu.sg> Message-ID: >Earlier video compression standards were always centered around the >concept of a bit stream. Higher layer syntax elements were separated >by start codes to allow re-synchronization to the bit stream in case >of corruption-be it the result of an erasure or of bit errors. > > > >H.264, when employing its optional Annex B, also allows such a >framing scheme, primarily to support a few legacy protocol >environments such as H.320 or MPEG-2 transport. The RTP >packetization, however, employs the native NAL interface that is >based on NAL units (NALUs). > >////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// > > > >Does this mean that if my encoder employ Annex B file format, I can >use the livemedia MPEG2VideoFramer and MPEG2VideoSink to send the >h.264 data over? No. The text you quoted referred to the possibility of carrying H.264 video data within a MPEG-2 *Transport* Stream. If you were to do that, then you could stream the Transport Stream data using our Transport Stream-related classes. But to stream H.264/RTP data by itself, you must use "H264VideoRTPSink". I'm probably not going to be answering any more questions about streaming H.264 for a while; I'm getting sick of them... -- Ross Finlayson Live Networks, Inc. http://www.live555.com/ -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.live555.com/pipermail/live-devel/attachments/20070103/42ef6c7b/attachment.html From TAYK0004 at ntu.edu.sg Wed Jan 3 11:35:40 2007 From: TAYK0004 at ntu.edu.sg (#TAY KOON HWEE#) Date: Thu, 4 Jan 2007 03:35:40 +0800 Subject: [Live-devel] Enquiries on H.264 Framer Message-ID: <438567054C073949AEBE5A28B83E7DE133FC95@MAIL21.student.main.ntu.edu.sg> Hi Ross, > fFrameSize = g_video_enc_rbuf->read(fTo,fMaxSize,0); >//g_video_enc_rbuf is a ring buffer which contains the encoded video > This will work only if the 'read()' function returns only a complete > NAL unit - nothing more and nothing less. for the below comment which u made, can I check with you further. I can set my encoder to produce one frame one slice (VCL NAL unit), and each NAL unit size is limited slightly less than the MTU for LAN. Therefore, my NAL unit will not be fragmented, as such can this statement work? SInce one frame one slice (VCL NAL unit), therefore I can simply write a currentNALUnitEndsAccessUnit() to always be true? int currentNALUnitEndsAccessUnit() { return 1 } Starting to get the hang of it. Just realised that the fPresentationTime will overwrite the time in SEI during decoding. Many thanks for all the help in getting me started on H.264 Zkunhui -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.live555.com/pipermail/live-devel/attachments/20070103/ad18f029/attachment.html From zjuchenjun at hotmail.com Thu Jan 4 00:41:09 2007 From: zjuchenjun at hotmail.com (chenjun) Date: Thu, 4 Jan 2007 16:41:09 +0800 Subject: [Live-devel] about h.264 streaming Message-ID: Hi all, I want to stream h.264 video from a live source using live555, and I have read the FAQ but still I feel it is difficulty to fill the member function. I list some codes I wrote myself below and I have not validate it. I should appreciate if you can give me some suggestions. void H264VideoStreamDiscreteFramer::doGetNextFrame() { //**************************non-blocking fashion**************************// while(1){ watchVariableforH264=0; env->tashScheduler().doEventLoop(&watchVariableforH264); deliverFrame(); } if (fFramsize==0 /* the source stops being readable */) { handleClosure(this); return; } } void H264VideoStreamDiscreteFramer::deliverFrame() { if (!isCurrentlyAwaitingData()) return; // we're not ready for the data yet fFrameSize=LenOfEncode; //LENOFENCODE is defined in another thread if (fFrameSize > fMaxSize) { fNumTruncatedBytes = fFrameSize - fMaxSize; fFrameSize = fMaxSize; } memcpy(fTo,Encode_data,fFrameSize); //Encode_data is defined in another thread //????????? I am not sure how to copy encoded data to the address point by fTo, especially how to deal with // data which be truncated (fNumTruncatedBytes). // Set the 'presentation time': if (fPresentationTime.tv_sec == 0 && fPresentationTime.tv_usec == 0) { // This is the first frame, so use the current time: gettimeofday(&fPresentationTime, NULL); } else { // Increment by the play time of the previous frame (64ms), my encoder?s frame rate is 15.6fps unsigned uSeconds = fPresentationTime.tv_usec + 64000; fPresentationTime.tv_sec += uSeconds/1000000; fPresentationTime.tv_usec = uSeconds%1000000; } fDurationInMicroseconds = 64000; // each frame is 64 ms // Deliver the data here: // ????????? what does this mean? How to Deliver? // After delivering the data, inform the reader that it is now available: FramedSource::afterGetting(this); } Boolean H264VideoStreamDiscreteFramer::currentNALUnitEndsAccessUnit() { // How to know whether the NAL unit that you're currently delivering is the last NAL unit in an access unit (video frame). } _________________________________________________________________ Windows Live Safety Center ?????????????????? http://safety.live.com/site/ZH-CN/default.htm -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.live555.com/pipermail/live-devel/attachments/20070104/76e941af/attachment-0001.html From ritsgenx at gmail.com Thu Jan 4 01:58:41 2007 From: ritsgenx at gmail.com (Ritesh Mittal) Date: Thu, 4 Jan 2007 15:28:41 +0530 Subject: [Live-devel] regarding JPEG file streaming Message-ID: Hi, Can I directly stream a RTP stream containing JPEG2000 video codec data. I have another query Why cant i stream .avi and .jpeg files since the JPEGSink and AVIFileSink are provided with the source code of LIVE555 server. Thanks Regards, Ritesh Mittal -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.live555.com/pipermail/live-devel/attachments/20070104/9787ec44/attachment.html From ritsgenx at gmail.com Thu Jan 4 02:29:26 2007 From: ritsgenx at gmail.com (Ritesh Mittal) Date: Thu, 4 Jan 2007 15:59:26 +0530 Subject: [Live-devel] Can I stream a series of BMP images Message-ID: Hi, Can i stream a series of BMP images. if not directly is there any indirect method like converting them into some specific format..?? Thanks Regards, Ritesh Mittal -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.live555.com/pipermail/live-devel/attachments/20070104/d202dece/attachment.html From jackymaillist at gmail.com Thu Jan 4 02:39:32 2007 From: jackymaillist at gmail.com (Jacky Cheung) Date: Thu, 04 Jan 2007 18:39:32 +0800 Subject: [Live-devel] class MPEG4VideoStreamDiscreteFramer Message-ID: <459CD964.8000308@gmail.com> Hi Is that the following class is not in used when running mediaServer? class MPEG4VideoStreamDiscreteFramer If so, what is the purpose of this class? Thx a lot Regards, Jacky Cheung From shaswata at alumnux.com Thu Jan 4 03:20:39 2007 From: shaswata at alumnux.com (Shaswata Jash) Date: Thu, 4 Jan 2007 16:50:39 +0530 Subject: [Live-devel] Can I stream a series of BMP images References: Message-ID: <012b01c72ff2$5d02bc80$2e0aa8c0@NITU> Hi Ritesh, You can obviously change those series of BMP images to RGB frames and then encode those series of RGB frames to any video format like MPEG4 or H.263 etc. For that you have to use third party encoding libraries like ffmpeg. Now you can use Live to stream those encoded video. The whole process is possible in real time. With regards, Shaswata Jash --------------------------------------- Alumnus Software Ltd. Infinity, Tower II, 2nd Floor Plot A3, Block GP, Sector - V, Salt Lake City, Kolkata - 700 091, India Phone: (+91 33) 2357 5626/5627/5628 www.alumnux.com ----- Original Message ----- From: Ritesh Mittal To: live-devel at ns.live555.com Sent: Thursday, January 04, 2007 3:59 PM Subject: [Live-devel] Can I stream a series of BMP images Hi, Can i stream a series of BMP images. if not directly is there any indirect method like converting them into some specific format..?? Thanks Regards, Ritesh Mittal ------------------------------------------------------------------------------ _______________________________________________ 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: http://lists.live555.com/pipermail/live-devel/attachments/20070104/8ce910ff/attachment.html From finlayson at live555.com Thu Jan 4 08:13:41 2007 From: finlayson at live555.com (Ross Finlayson) Date: Thu, 4 Jan 2007 08:13:41 -0800 Subject: [Live-devel] class MPEG4VideoStreamDiscreteFramer In-Reply-To: <459CD964.8000308@gmail.com> References: <459CD964.8000308@gmail.com> Message-ID: >class MPEG4VideoStreamDiscreteFramer > >If so, what is the purpose of this class? Read the comment in the code, near the top of the file (under the copyright notice). Remember, You Have Complete Source Code. -- Ross Finlayson Live Networks, Inc. http://www.live555.com/ From the-bishop at rogers.com Thu Jan 4 11:49:56 2007 From: the-bishop at rogers.com (the-bishop at rogers.com) Date: Thu, 4 Jan 2007 11:49:56 -0800 (PST) Subject: [Live-devel] Frame truncation if network bandwidth is not enough Message-ID: <20070104194956.68812.qmail@web88113.mail.re2.yahoo.com> Hi Ross: I have the following problem. I stream videos using Unicast over the Internet using live555 library. The frames are provided by DirectShow streams. The frames are complete, so no framer class from live555 is used. Instead, I simply feed the DirectShow frames to my class derived from SimpleRTPSink. If the network bandwidth is not enough to deliver samples, they arrive truncated on the client side (in afterGettingFrame function). What can possibly be causing it? Is it a part of RTP standard- to truncate frames if they can't be delivered on time? I'd much prefer for samples to arrive late, then to arrive truncated... Any ideas? Thanks, Michael -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.live555.com/pipermail/live-devel/attachments/20070104/b28dee63/attachment.html From finlayson at live555.com Thu Jan 4 14:16:40 2007 From: finlayson at live555.com (Ross Finlayson) Date: Thu, 4 Jan 2007 14:16:40 -0800 Subject: [Live-devel] Frame truncation if network bandwidth is not enough In-Reply-To: <20070104194956.68812.qmail@web88113.mail.re2.yahoo.com> References: <20070104194956.68812.qmail@web88113.mail.re2.yahoo.com> Message-ID: >I have the following problem. I stream videos using Unicast over the >Internet using live555 library. The frames are provided by >DirectShow streams. The frames are complete, so no framer class from >live555 is used. Instead, I simply feed the DirectShow frames to my >class derived from SimpleRTPSink. Out of curiosity, what codec are you using? (Or are you trying to stream raw, uncompressed video data??) > If the network bandwidth is not enough to deliver samples, they >arrive truncated on the client side (in afterGettingFrame function). >What can possibly be causing it? I think you've answered your own question. If you don't have enough network bandwidth, then you're going to get packet loss. Therefore some frames (or parts of some frames, if frames span more than one RTP packet) are going to get lost. > Is it a part of RTP standard- to truncate frames if they can't be >delivered on time? RTP (by default) is an unreliable protocol, over UDP. if packets get lost, then yes, you're going to lose data (of course). > I'd much prefer for samples to arrive late, then to arrive truncated... That's not possible, for a UDP-based protocol. Your real problem is that you don't have enough network bandwidth. From PHarper at c-cor.com Thu Jan 4 14:26:35 2007 From: PHarper at c-cor.com (Harper, Paul) Date: Thu, 04 Jan 2007 14:26:35 -0800 Subject: [Live-devel] Patch to liveMedia for Consideration In-Reply-To: References: Message-ID: <1167949595.14617.17.camel@centos1.c-cor.com> I appreciate your position, thanks for taking a look. I have requested changes to our RTSP server to allow compatibility with liveMedia. -- Paul Harper pharper at c-cor.com 503.531.6438 On Mon, 2006-12-25 at 21:58 -0800, Ross Finlayson wrote: > > Attached is a patch file to liveMedia that I would like to submit > > for consideration. It allows liveMedia to initiate an RTSP session > > on an nCUBE/C-COR video server. The code that was added is similar > > to the code currently in place for Kasenna and Microsoft. > > > Thanks for the submission. Unfortunately, however, I'm getting > increasingly reluctant to keep adding ugly hacks to the RTSP client > code in order to support all sorts of different weird, non-standard > servers. (I realize that - for historical reasons - we already have > ugly code there to support Kasenna servers; however, I'd like to > remove this at some point in the future (as these broken old Kasenna > servers fade into irrelevance).) > > > Our installed base (in VLC, MPlayer, and other RTSP clients) is now > sufficiently large (far larger than the installed base of any > particular RTSP server implementation) that I believe it's now > reasonable and appropriate for us to put pressure on these server > implementors to clean up their implementations to make them more > compliant with standards, and with other existing implementations. > > > With this in mind, rather than add your patch to the code, I ask that > the implementors of the "nCUBE/C-COR" video server make the following > three simple changes to their implementation. If they do this, their > server should - I believe - work with the existing "LIVE555 Streaming > Media" RTSP client implementation - and the large existing installed > base of VLC (and MPlayer etc.) clients: > > > 1/ Change the SDP description returned in response to a RTSP > "DESCRIBE" command to say > RAW/RAW/UDP > instead of > RTP/AVP > (reporting "RTP/AVP" is very wrong, because the server is quite > clearly *not* sending RTP) > > > 2/ Accept "RAW/RAW/UDP" in the "Transport:" header of RTSP "SETUP" > commands (rather than requiring that the string "MP2T/DVBC/UDP" be > used). > > > 3/ Make whatever (presumably minor) fixes are necessary to the server > so that you don't need to modify the existing implementation of the > "constructSubsessionURL()" command. > -- > > Ross Finlayson > Live Networks, Inc. > http://www.live555.com/ > plain text document attachment (ATT92777.txt), "ATT92777.txt" > _______________________________________________ > live-devel mailing list > live-devel at lists.live555.com > http://lists.live555.com/mailman/listinfo/live-devel From the-bishop at rogers.com Thu Jan 4 14:44:43 2007 From: the-bishop at rogers.com (the-bishop at rogers.com) Date: Thu, 4 Jan 2007 14:44:43 -0800 (PST) Subject: [Live-devel] Frame truncation if network bandwidth is not enough Message-ID: <20070104224443.91121.qmail@web88105.mail.re2.yahoo.com> I checked and this truncation seems to be caused by large packet loss. Is this the way UDP operates- if bandwidth is not enough it drops packets? How would it be possible to make sure server sends UDP packets only as fast as the network can let through, so that client gets all packets? I'm talking about the Unicast scenario... Cheers, Michael ----- Original Message ---- From: "the-bishop at rogers.com" To: live-devel at lists.live555.com Sent: Thursday, January 4, 2007 2:49:56 PM Subject: Frame truncation if network bandwidth is not enough Hi Ross: I have the following problem. I stream videos using Unicast over the Internet using live555 library. The frames are provided by DirectShow streams. The frames are complete, so no framer class from live555 is used. Instead, I simply feed the DirectShow frames to my class derived from SimpleRTPSink. If the network bandwidth is not enough to deliver samples, they arrive truncated on the client side (in afterGettingFrame function). What can possibly be causing it? Is it a part of RTP standard- to truncate frames if they can't be delivered on time? I'd much prefer for samples to arrive late, then to arrive truncated... Any ideas? Thanks, Michael -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.live555.com/pipermail/live-devel/attachments/20070104/0ca63b96/attachment-0001.html From rahul.ray at gmail.com Thu Jan 4 15:01:23 2007 From: rahul.ray at gmail.com (Rahul Ray) Date: Thu, 4 Jan 2007 15:01:23 -0800 Subject: [Live-devel] encoding mpeg-4 or mpeg-2 Message-ID: Hi, It would be a great help if some of you can point me to the code of how to encode a sequence of jpg images into mpeg-4 or mpeg-2 ? Thanks in advance. -best, Rahul -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.live555.com/pipermail/live-devel/attachments/20070104/7b916509/attachment.html From jackymaillist at gmail.com Thu Jan 4 17:06:53 2007 From: jackymaillist at gmail.com (Jacky Cheung) Date: Fri, 05 Jan 2007 09:06:53 +0800 Subject: [Live-devel] class MPEG4VideoStreamDiscreteFramer In-Reply-To: References: <459CD964.8000308@gmail.com> Message-ID: <459DA4AD.4000007@gmail.com> An HTML attachment was scrubbed... URL: http://lists.live555.com/pipermail/live-devel/attachments/20070104/50d91c9e/attachment.html From finlayson at live555.com Thu Jan 4 17:09:39 2007 From: finlayson at live555.com (Ross Finlayson) Date: Thu, 4 Jan 2007 17:09:39 -0800 Subject: [Live-devel] class MPEG4VideoStreamDiscreteFramer In-Reply-To: <459DA4AD.4000007@gmail.com> References: <459CD964.8000308@gmail.com> <459DA4AD.4000007@gmail.com> Message-ID: >Thanks for your reply. > Is that mean if I have MPEG4 video and can be obtain the vidoe >frame-by-frame. Then I should use this class instead of another one? Yes. -- Ross Finlayson Live Networks, Inc. http://www.live555.com/ From rishikerala at gmail.com Thu Jan 4 19:08:54 2007 From: rishikerala at gmail.com (Rishi kerala) Date: Fri, 5 Jan 2007 12:08:54 +0900 Subject: [Live-devel] Help me for a buffering section from playCommon.cpp In-Reply-To: <4ba29cc0701041849m83df897ic5fe0b877cbf0d48@mail.gmail.com> References: <4ba29cc0701041849m83df897ic5fe0b877cbf0d48@mail.gmail.com> Message-ID: <4ba29cc0701041908t45b8f453h46eaaadfdb03f482@mail.gmail.com> Hi Ross, I know full source is here. I am jusr going through the source for Client module. I am not good in C++. I already written a client module with player I will just give the code below Here In player I am using a VLC stucture. static block_t *Block_New(RMuint32 i_size); static int Block_FifoPut(block_fifo_t*,block_t *); static block_t *Block_FifoGet(block_fifo_t *); static block_fifo_t *Block_FifoNew(); /****************************************************************** * ******************************************************************/ static block_t *BlockParseRTP(block_t *p_block); block_t *stream_Block(RMuint32 i_size,struct context_per_task *p_task); static int Stream_Read_Block(void *p_read, RMuint32 i_read,struct context_per_task *p_task); static block_t *Read_Block(struct context_per_task *); I just want to prebuffer .. to pass to the harware decoder. if(!pre_done){ for(;;){ if(p_task->p_sys == NULL){ printf("stream_sys_t null\n"); goto cleanup; } if(p_task->p_sys-> block.i_size > STREAM_CACHE_SIZE){//STREAM_CACHE_PREBUFFER_SIZE){ printf("[%s:%d] cache size(%lu) pre done\n",__FUNCTION__,__LINE__,p_task->p_sys->block.i_size ); pre_done = TRUE; break; } block_t *b; if((b = Read_Block(p_task)) == NULL){ perror("fetch error"); continue; } // while(b){ p_task->p_sys->block.i_size += b->i_buffer; *p_task->p_sys->block.pp_last = b; p_task->p_sys-> block.pp_last = &b->p_next; b = b->p_next; //} // Block_FifoPut(gp_fifo,b); } p_task->p_sys->block.p_current = p_task->p_sys->block.p_first; } p_block = stream_Block(UDP_PACKET_SIZE * 3,p_task); } static int Block_FifoPut(block_fifo_t *p_fifo, block_t *p_block) { RMuint32 i_size = 0; pthread_mutex_lock(&p_fifo->lock); // do{ i_size += p_block->i_buffer; *p_fifo->pp_last = p_block; p_fifo->pp_last = &p_block->p_next; p_fifo->i_depth++; p_fifo->i_size += p_block->i_buffer; p_block = p_block->p_next; //}while(p_block); pthread_cond_signal(&p_fifo->wait); pthread_mutex_unlock(&p_fifo->lock); return i_size; } I am trying to port the openRTSP module (Client) to my board. Here I have to pass the buffer like this. the player is written in c. so i need to avoid the header portion and pass data to the deoder. I am trying to make a api module from LiveMedia Client module. So that I can get the buffer to the player by calling this api. i am now concentrating on mpeg2-ts only. I just need to get the buffer ( which is skipped with all header). Please give me some idea and where I need to hack for this. this is a personal mail I am doing. If possible help me .. Rgds Rishi -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.live555.com/pipermail/live-devel/attachments/20070104/730059b2/attachment.html From ritsgenx at gmail.com Thu Jan 4 20:37:44 2007 From: ritsgenx at gmail.com (Ritesh Mittal) Date: Fri, 5 Jan 2007 10:07:44 +0530 Subject: [Live-devel] encoding mpeg-4 or mpeg-2 In-Reply-To: References: Message-ID: Hi Rahul, I have the similar query but I want to encode a series of BMP images into mpeg encoding. One of the concept which i came across is first converting the BMP images into RGB format and this format can be converted into MPEG-4 encoding stream using ffmpeg library. And we can stream MPEG-4 encoding stream using LIVE555. Regards, Ritesh Mittal On 1/5/07, Rahul Ray wrote: > > Hi, > It would be a great help if some of you can point me to the code of > how to encode a sequence of jpg images into mpeg-4 or mpeg-2 ? > Thanks in advance. > -best, > Rahul > > _______________________________________________ > 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: http://lists.live555.com/pipermail/live-devel/attachments/20070104/3e13267b/attachment.html From rajeshkumar.r at imimobile.com Thu Jan 4 23:08:42 2007 From: rajeshkumar.r at imimobile.com (rajesh) Date: Fri, 5 Jan 2007 12:38:42 +0530 Subject: [Live-devel] Hi Message-ID: <002d01c73098$55281180$6902000a@imidomain.com> HI All wish u Happy new Year. I have made one RTSP client using live555 lib. RTSP client is able to recv the video-audio data from Helix server. The audio-video port on which i am recv the streaming content from Helix server is same as the port used to transfer Data to mobile using 3g-H324M protocol. 1)I run the Appl that is responsible to stream the content on mobile. 2)and started my client who is recv the streaming content from Helix server. both the application are running fine independently. both 1 and 2 are using the same port for video and same for audio. I did not recv any n/w event in application 1. Any clue.plz let me know. with Regards Rajesh -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.live555.com/pipermail/live-devel/attachments/20070104/45bc8282/attachment-0001.html From finlayson at live555.com Fri Jan 5 00:07:25 2007 From: finlayson at live555.com (Ross Finlayson) Date: Fri, 5 Jan 2007 00:07:25 -0800 Subject: [Live-devel] Hi In-Reply-To: <002d01c73098$55281180$6902000a@imidomain.com> References: <002d01c73098$55281180$6902000a@imidomain.com> Message-ID: >I have made one RTSP client using live555 lib. >RTSP client is able to recv the video-audio data from Helix server. >The audio-video port on which i am recv the streaming content from >Helix server >is same as the port used to transfer Data to mobile using 3g-H324M protocol. > >1)I run the Appl that is responsible to stream the content on mobile. >2)and started my client who is recv the streaming content from Helix server. > >both the application are running fine independently. > >both 1 and 2 are using the same port for video and same for audio. > >I did not recv any n/w event in application 1. > >Any clue.plz let me know. In general I can't help people with their custom code. However, have you tried running the supplied "openRTSP" client (preferably with the "-V" option, for verbose output). If it works correctly with your Helix server, but your own RTSP client does not, then that should give you a hint as to what you are doing wrong. -- Ross Finlayson Live Networks, Inc. http://www.live555.com/ -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.live555.com/pipermail/live-devel/attachments/20070105/38040b27/attachment.html From rishikerala at gmail.com Fri Jan 5 00:38:13 2007 From: rishikerala at gmail.com (Rishi kerala) Date: Fri, 5 Jan 2007 17:38:13 +0900 Subject: [Live-devel] Hi In-Reply-To: References: <002d01c73098$55281180$6902000a@imidomain.com> Message-ID: <4ba29cc0701050038k73c3cdeal1608adbcb5afa4ec@mail.gmail.com> Hi Ross, In the case of mpeg2ts I can pass the content directly to hardware decoder. I just need to how I can get the buffer to the playComon.cpp appliaction. Instead of saving data. I need video-audio(buffer) data to be in playCommon application. How can I get. If possible give me where I need to see in source for that. i checked the source. it is going to MultiFramedRTPSource.cpp file. Got confused here. So i am asking.. thankyou Rgds Rishi In general I can't help people with their custom code. However, have you > tried running the supplied "openRTSP" client (preferably with the "-V" > option, for verbose output). If it works correctly with your Helix server, > but your own RTSP client does not, then that should give you a hint as to > what you are doing wrong. > > -- > > > 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: http://lists.live555.com/pipermail/live-devel/attachments/20070105/ba46ef37/attachment.html From asmundg at snap.tv Fri Jan 5 05:28:52 2007 From: asmundg at snap.tv (=?utf-8?q?=C3=85smund_Grammeltvedt?=) Date: Fri, 5 Jan 2007 14:28:52 +0100 Subject: [Live-devel] Busy waiting on file sources Message-ID: <200701051428.57061.asmundg@snap.tv> Hello. Playing around with the MediaServer, I noticed that cpu usage goes to 100% when streaming from files. It appears that after opening a ByteStreamFileSource and calling ByteStreamFileSource::doGetNextFrame, BasicTaskScheduler will always find that the file socket is ready for reading and will trigger the callback ByteStreamFileSource::fileReadableHandler. This function in turn concludes that we're not really waiting for any data and returns, leading to a new select, a new callback, and so on until the next source actually calls ByteStreamFileSource::doGetNextFrame, resetting fIsCurrentlyAwaitingData. This tight busy-waiting loop eats cpu, but doesn't appear to do anything useful with it. Is there any particular reason why fileReadableHandler cannot call stopGettingFrames, removing the file socket from the select list until the data is actually needed? Applying the attached patch does appear to reduce cpu usage significantly, without any nasty side effects. Is this a reasonable approach, or am I breaking something? -- ?smund Grammeltvedt Snap TV -------------- next part -------------- A non-text attachment was scrubbed... Name: bytestreamfilesource_busy_wait.patch Type: text/x-diff Size: 514 bytes Desc: not available Url : http://lists.live555.com/pipermail/live-devel/attachments/20070105/d900485c/attachment.bin -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 189 bytes Desc: not available Url : http://lists.live555.com/pipermail/live-devel/attachments/20070105/d900485c/attachment-0001.bin From TAYK0004 at ntu.edu.sg Fri Jan 5 05:46:25 2007 From: TAYK0004 at ntu.edu.sg (#TAY KOON HWEE#) Date: Fri, 5 Jan 2007 21:46:25 +0800 Subject: [Live-devel] Parser and Framer Message-ID: <438567054C073949AEBE5A28B83E7DE133FC9C@MAIL21.student.main.ntu.edu.sg> Hi guys, I have some enquiries regarding parser and framer function. A parser is used when the video/ audio data is a file and to split the data into frames. If the encoder produces frames directly instead of writing to a file, the parser can be skipped when streaming. Is this true? A framer is to frame the frames produced by the encoder such that they contained information like fFramesize, fPresentationTime. Is this true. Thanks for any help in clarifying. Regards. Zkunhui -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.live555.com/pipermail/live-devel/attachments/20070105/4672b5e3/attachment.html From finlayson at live555.com Fri Jan 5 07:35:12 2007 From: finlayson at live555.com (Ross Finlayson) Date: Fri, 5 Jan 2007 07:35:12 -0800 Subject: [Live-devel] Parser and Framer In-Reply-To: <438567054C073949AEBE5A28B83E7DE133FC9C@MAIL21.student.main.ntu.edu.sg> References: <438567054C073949AEBE5A28B83E7DE133FC9C@MAIL21.student.main.ntu.edu.sg> Message-ID: >I have some enquiries regarding parser and framer function. > >A parser is used when the video/ audio data is a file and to split >the data into frames. If the encoder produces frames directly >instead of writing to a file, the parser can be skipped when >streaming. Is this true? Yes. This is the purpose of "MPEG1or2VideoStreamDiscreteFramer" and "MPEG4VideoStreamDiscreteFramer", for example. (In practice, these classes will do a small amount of 'parsing' within each frame, to get timing information that's used to compute presentation times. See the *DiscreteFramer classes for examples of this. However, they won't need to do any parsing to actually find the start and end of each frame; that information is already given to them. > >A framer is to frame the frames produced by the encoder such that >they contained information like fFramesize, fPresentationTime. Is >this true. Yes. -- Ross Finlayson Live Networks, Inc. http://www.live555.com/ -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.live555.com/pipermail/live-devel/attachments/20070105/42e1a340/attachment.html From finlayson at live555.com Fri Jan 5 07:39:20 2007 From: finlayson at live555.com (Ross Finlayson) Date: Fri, 5 Jan 2007 07:39:20 -0800 Subject: [Live-devel] Busy waiting on file sources In-Reply-To: <200701051428.57061.asmundg@snap.tv> References: <200701051428.57061.asmundg@snap.tv> Message-ID: >Is there any particular reason why fileReadableHandler cannot call >stopGettingFrames, removing the file socket from the select list until the >data is actually needed? Applying the attached patch does appear to reduce >cpu usage significantly, without any nasty side effects. Is this a reasonable >approach, or am I breaking something? No, your approach is OK. A fix, probably similar to this, will appear in the next release of the code. Thanks for the note. Out of curiosity, what kind of data are you streaming when you encounter this situation? (The problem that you noted will occur only for some media types; for others, "doGetNextFrame()" won't end up getting called until the downstream recipient is actually ready to get/handle new data.) -- Ross Finlayson Live Networks, Inc. http://www.live555.com/ From asmundg at snap.tv Fri Jan 5 08:27:28 2007 From: asmundg at snap.tv (=?utf-8?q?=C3=85smund_Grammeltvedt?=) Date: Fri, 5 Jan 2007 17:27:28 +0100 Subject: [Live-devel] Busy waiting on file sources In-Reply-To: References: <200701051428.57061.asmundg@snap.tv> Message-ID: <200701051727.32176.asmundg@snap.tv> On Friday 05 January 2007 16:39, Ross Finlayson wrote: > No, your approach is OK. A fix, probably similar to this, will > appear in the next release of the code. Thanks for the note. Thanks for the quick response! > Out of curiosity, what kind of data are you streaming when you > encounter this situation? (The problem that you noted will occur > only for some media types; for others, "doGetNextFrame()" won't end > up getting called until the downstream recipient is actually ready to > get/handle new data.) It's a TS file. I'm sure you know better than me what sources are used by MediaServer for those. :) -- ?smund Grammeltvedt Snap TV -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 189 bytes Desc: not available Url : http://lists.live555.com/pipermail/live-devel/attachments/20070105/72a4343a/attachment.bin From xcsmith at rockwellcollins.com Fri Jan 5 13:00:11 2007 From: xcsmith at rockwellcollins.com (xcsmith at rockwellcollins.com) Date: Fri, 5 Jan 2007 15:00:11 -0600 Subject: [Live-devel] DynamicRTSPServer is not part of the LIVE library. Message-ID: I am working on an RTSP server which is inherited from DynamicRTSPServer (I had to change some things from private to protected). I ran into trouble linking my new class, and eventually discovered this was because DynamicRTSPServer.o is not in put into the live555 library when the library is built. Because DynamicRTSPServer is a class which is used much like RTSPServer in the mediaServer application, should DynamicRTSPServer.cpp / .hh go into the liveMedia and liveMedia/include folders and be built as part of the library? It seems to me that programs besides mediaServer might want create objects of the DynamicRTSPServer class. (Maybe I have no reason to inherit from it other than to show that my server is the same kind of server, and I should just write a stand alone.) Thanks for considering! Xochitl From TAYK0004 at ntu.edu.sg Fri Jan 5 15:06:36 2007 From: TAYK0004 at ntu.edu.sg (#TAY KOON HWEE#) Date: Sat, 6 Jan 2007 07:06:36 +0800 Subject: [Live-devel] getNextFrame Variables Message-ID: <438567054C073949AEBE5A28B83E7DE133FCA0@MAIL21.student.main.ntu.edu.sg> Hi guys, once again, great thanks to Ross for helping me clear many doubts in RTP. I have some uncertainties regarding DoGetNextFrame() Variables, which I hope anyone can assist. fTO : a RTP buffer, we are to copy video data into this buffer for framing eg. g_video_enc_rbuf->read(fTo, fMaxSize, 0); //the read function will copy the data to fTo memcpy(fTo,g_video_enc_rbuf,fFrameSize); // using memcpy function fPresentationTime: give time information to each frame eg. gettimeofday(&fPresentationTime, NULL); //a simpler form // a more detailed form if (fPresentationTime.tv_sec == 0 && fPresentationTime.tv_usec == 0) { // This is the first frame, so use the current time: gettimeofday(&fPresentationTime, NULL); } else { // Increment by the play time of the previous frame (50ms), my encoder's frame rate is 20fps unsigned uSeconds = fPresentationTime.tv_usec + 50000; fPresentationTime.tv_sec += uSeconds/1000000; fPresentationTime.tv_usec = uSeconds%1000000; fMaxSize: Setting the maximum size of a rtp frame. Not necessary if you have already set your encoder to limit the size of a frame. For truncation purpose. eg. Can anyone provide some examples on setting fMaxSize? fFrameSize: Determine the RTP frame size eg. Can anyone provide some examples on setting fFrameSize? That's all I can think of for the variables for DoGetNextFrame. If I miss out anything, pls kindly add in. I compiling all the emails which contains information on these information so that anyone in future can refer to them instead of asking again in the mailing list. I can share a file which I have done detailing on NAL units so that people doing h.264 framer can have a better understanding when writing the code. Many thanks and regards. Zkunhui -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.live555.com/pipermail/live-devel/attachments/20070105/60c29b71/attachment.html From finlayson at live555.com Fri Jan 5 15:26:37 2007 From: finlayson at live555.com (Ross Finlayson) Date: Fri, 5 Jan 2007 15:26:37 -0800 Subject: [Live-devel] DynamicRTSPServer is not part of the LIVE library. In-Reply-To: References: Message-ID: >Because DynamicRTSPServer is a class which is used much like >RTSPServer in the mediaServer application, should DynamicRTSPServer.cpp / >.hh go into the liveMedia and liveMedia/include folders and be built as >part of the library? The "DynamicRTSPServer" class was written specifically for use by the "LIVE555 Media Server" application. Because this is application-specific rather than generic functionality, it probably won't get added to the "liveMedia" library. However you are, of course, free to use it within your own application(s). -- Ross Finlayson Live Networks, Inc. http://www.live555.com/ From finlayson at live555.com Fri Jan 5 15:28:08 2007 From: finlayson at live555.com (Ross Finlayson) Date: Fri, 5 Jan 2007 15:28:08 -0800 Subject: [Live-devel] getNextFrame Variables In-Reply-To: <438567054C073949AEBE5A28B83E7DE133FCA0@MAIL21.student.main.ntu.edu.sg> References: <438567054C073949AEBE5A28B83E7DE133FCA0@MAIL21.student.main.ntu.edu.sg> Message-ID: >fTO : a RTP buffer, we are to copy video data into this buffer for framing > >eg. g_video_enc_rbuf->read(fTo, fMaxSize, 0); //the read function >will copy the data to fTo > > memcpy(fTo,g_video_enc_rbuf,fFrameSize); // using memcpy function OK, but don't forget to assign "fFrameSize" first. -- Ross Finlayson Live Networks, Inc. http://www.live555.com/ -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.live555.com/pipermail/live-devel/attachments/20070105/f25c3426/attachment.html From victor_l2000 at hotmail.com Fri Jan 5 22:10:37 2007 From: victor_l2000 at hotmail.com (Victor Lee) Date: Fri, 05 Jan 2007 22:10:37 -0800 Subject: [Live-devel] how to set RTSP Client use TCP instead of UDP Message-ID: Hi All, I have a RTSP Server built with LiveMedia on PC, and now I am trying to use TCP to transport streams between RTSP Server and RTSP Client. From what i read about LiveMedia, it support both UDP and TCP. I used the 2 examples provided by LiveMedia, testOnDemandRTSPServer and openRTSP, with the -t option. The the client sent the cmd with: Transport: RTP/AVP/TCP;unicast;interleaved=0-1 While the stream is transferring from the Server to the Client, using netstat, I still find the RTSP Server and Client each has 2 UDP connections, which is the same case as when i do not use the -t option. The 2 UDP connections use 2 continuous port numbers. The even one for RTP data and the odd one for RTCP control information (Please correct me if i am wrong). Could any one answer me the following questions or tell me where i can find further info? 1. Does the mean that actually UDP is still used? How can i be sure that TCP is used? 2. When not using -t option, UDP is used, there is still another TCP connection, established with the server's port 8554. I have no idea about what this one is for. 3. what is the correct way to set the RTSP Client using TCP instead of UDP? Thanks in advance! Victor _________________________________________________________________ Type your favorite song.  Get a customized station.  Try MSN Radio powered by Pandora. http://radio.msn.com/?icid=T002MSN03A07001 From rajeshkumar.r at imimobile.com Fri Jan 5 22:21:04 2007 From: rajeshkumar.r at imimobile.com (rajesh) Date: Sat, 6 Jan 2007 11:51:04 +0530 Subject: [Live-devel] DynamicRTSPServer is not part of the LIVE library. References: Message-ID: <01a401c7315a$d839e900$6902000a@imidomain.com> Hi Ross RTSPCLIENT::playMediaSession is responsible for starting the play operation. which part of live media is listening on the port where the streaming data is coming. my aim is to store the recvd audio and video in different buffer. can i play the streaming content getting on some audio port and video port using any media player. I am waiting for ur response. with Regards Rajesh From finlayson at live555.com Fri Jan 5 22:32:20 2007 From: finlayson at live555.com (Ross Finlayson) Date: Fri, 5 Jan 2007 22:32:20 -0800 Subject: [Live-devel] how to set RTSP Client use TCP instead of UDP In-Reply-To: References: Message-ID: RTSP uses a control channel - which is always TCP, using a standard RTSP TCP port number (554 or 8554). Then, for each data stream (audio and/or video), it uses a data channel (for sending RTP/RTCP packets from the server to the client). Normally (i.e., if you don't use the "-t" option to "openRTSP"), each data channel uses UDP. However, if the client requests it (using the "streamUsingTCP" parameter to "RTSPClient:: setupMediaSubsession()", or, using "openRTSP", the "-t" option), then each data channel will also use TCP - using *the same* TCP connection as the control channel. (The RTP/RTCP data is interleaved over the control channel TCP connection - from the server back to the client.) It turns out that in our implementation, we create UDP sockets even when the client requests streaming over TCP. However, in this case those UDP sockets don't get used; all data is sent over the TCP connection instead. -- Ross Finlayson Live Networks, Inc. http://www.live555.com/ From finlayson at live555.com Fri Jan 5 22:38:01 2007 From: finlayson at live555.com (Ross Finlayson) Date: Fri, 5 Jan 2007 22:38:01 -0800 Subject: [Live-devel] DynamicRTSPServer is not part of the LIVE library. In-Reply-To: <01a401c7315a$d839e900$6902000a@imidomain.com> References: <01a401c7315a$d839e900$6902000a@imidomain.com> Message-ID: >Hi Ross >RTSPCLIENT::playMediaSession is responsible for starting the play operation. >which part of live media is listening on the port where the streaming data >is coming. >my aim is to store the recvd audio and video in different buffer. See the code for "openRTSP" - in particular "testProgs/playCommon.cpp". Note the use of a "FileSink" class on line 693. You can use your own 'sink' class instead to store the incoming data. > >can i play the streaming content getting on some audio port and video port >using any media player. Yes. See, for example, the code for the Open Source VLC media player - in particular, the file "live555.com". This media player uses our RTSP client code to receive and play incoming RTP data. -- Ross Finlayson Live Networks, Inc. http://www.live555.com/ From jackymaillist at gmail.com Sun Jan 7 23:01:27 2007 From: jackymaillist at gmail.com (Jacky Cheung) Date: Mon, 08 Jan 2007 15:01:27 +0800 Subject: [Live-devel] FramedSource Message-ID: <45A1EC47.6030205@gmail.com> Hi Ross, I am implementing a new class inherited from FramedSource. And it will be used along with MPEG4VideoStreamDiscreteFramer Assume I can receive the MPEG4 frame-by-frame. I am thinking what should I do in the NewFramedSource::doGetNextFrame, if the current frame size is bigger than the fMaxSize? Thanks a lot Regards, Jacky Cheung From rafi at evtt.com Mon Jan 8 05:00:34 2007 From: rafi at evtt.com (Rafael Buchbinder) Date: Mon, 8 Jan 2007 15:00:34 +0200 Subject: [Live-devel] streaming with Real Player/QuickTime player Message-ID: Hi, live555 mailing list! Is it possible to stream to Real Player from OnDemandRTSPServer? More precisely: is it possible to stream H.263+ using Real Player. I have OnDemandRTSPServer up and running. VLC opens the stream well. One of our functional requirements is the ability to open the stream using Real Player and/or QuickTime player. However, none of those proprietary players opens the stream. Real Player seems to simply drop the received frames. Can anybody confirm ability/disability to do it? Thanks Rafael -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.live555.com/pipermail/live-devel/attachments/20070108/4a6b920b/attachment.html From zjuchenjun at hotmail.com Mon Jan 8 06:22:49 2007 From: zjuchenjun at hotmail.com (chenjun) Date: Mon, 8 Jan 2007 22:22:49 +0800 Subject: [Live-devel] getNextFrame Variables Message-ID: hi Zkunhui? Thanks for your works and your reply for my questions.I want to get the file you said about NAL units. Again, I want to ask a question which i refered in previous question: If the size of NAL unit is bigger than fMaxsize(should I set fMaxsize myself?), then fFrameSize=fMaxsize,fNumTruncatedBytes = fFrameSize - fMaxSize ,as the code below: ///////////////////////////////////////////////// if (fFrameSize > fMaxSize) { fNumTruncatedBytes = fFrameSize - fMaxSize; fFrameSize = fMaxSize; } memcpy(fTo,Encode_data,fFrameSize); //Encode_data is defined in another thread ////////////////////////////////////////////////// but how to deal with the fNumTruncatedBytes data? in H264VideoRTPSink.cpp , i see the clue below, should i do it like this in deliverFrame()? // We have NAL unit data in the buffer. There are three cases to consider: // 1. There is a new NAL unit in the buffer, and it's small enough to deliver // to the RTP sink (as is). // 2. There is a new NAL unit in the buffer, but it's too large to deliver to // the RTP sink in its entirety. Deliver the first fragment of this data, // as a FU-A packet, with one extra preceding header byte. // 3. There is a NAL unit in the buffer, and we've already delivered some // fragment(s) of this. Deliver the next fragment of this data, // as a FU-A packet, with two extra preceding header bytes. Thanks in advance. I am looking forward helps from anyone! Date: Sat, 6 Jan 2007 07:06:36 +0800From: TAYK0004 at ntu.edu.sgTo: live-devel at ns.live555.comSubject: [Live-devel] getNextFrame Variables Hi guys, once again, great thanks to Ross for helping me clear many doubts in RTP. I have some uncertainties regarding DoGetNextFrame() Variables, which I hope anyone can assist. fTO : a RTP buffer, we are to copy video data into this buffer for framing eg. g_video_enc_rbuf->read(fTo, fMaxSize, 0); //the read function will copy the data to fTo memcpy(fTo,g_video_enc_rbuf,fFrameSize); // using memcpy function fPresentationTime: give time information to each frame eg. gettimeofday(&fPresentationTime, NULL); //a simpler form // a more detailed form if (fPresentationTime.tv_sec == 0 && fPresentationTime.tv_usec == 0) { // This is the first frame, so use the current time: gettimeofday(&fPresentationTime, NULL); } else { // Increment by the play time of the previous frame (50ms), my encoder?s frame rate is 20fps unsigned uSeconds = fPresentationTime.tv_usec + 50000; fPresentationTime.tv_sec += uSeconds/1000000; fPresentationTime.tv_usec = uSeconds%1000000; fMaxSize: Setting the maximum size of a rtp frame. Not necessary if you have already set your encoder to limit the size of a frame. For truncation purpose. eg. Can anyone provide some examples on setting fMaxSize? fFrameSize: Determine the RTP frame size eg. Can anyone provide some examples on setting fFrameSize? That?s all I can think of for the variables for DoGetNextFrame. If I miss out anything, pls kindly add in. I compiling all the emails which contains information on these information so that anyone in future can refer to them instead of asking again in the mailing list. I can share a file which I have done detailing on NAL units so that people doing h.264 framer can have a better understanding when writing the code. Many thanks and regards. Zkunhui _________________________________________________________________ ?? Windows Live Messenger ?????? http://get.live.com/messenger/overview -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.live555.com/pipermail/live-devel/attachments/20070108/4b424a3e/attachment.html From xcsmith at rockwellcollins.com Mon Jan 8 07:59:57 2007 From: xcsmith at rockwellcollins.com (xcsmith at rockwellcollins.com) Date: Mon, 8 Jan 2007 09:59:57 -0600 Subject: [Live-devel] ForceMulticastOnUnspecified Message-ID: Ross & LIVE, How can I modify the RTSPServer class and related classes so that testOnDemandRTSPServer can accept transport parameters which force the stream to be multicast? RTSPClient --> Transport: RTP/AVP;multicast=224.0.1.2;client_port=12008-12009 testOnDemandServer response --> Transport: RTP/AVP;unicast;destination=127.0.0.1;client_port=12008-12009;server_port=6970-6971 Do I need to also add TTL to my Transport parameters? Thanks! Xochitl From drobbins at fsmlabs.com Mon Jan 8 09:08:41 2007 From: drobbins at fsmlabs.com (Daniel Robbins) Date: Mon, 08 Jan 2007 10:08:41 -0700 Subject: [Live-devel] Initial support for server 'trick play' operations on Transport Stream files In-Reply-To: References: Message-ID: <45A27A99.1030708@fsmlabs.com> Ross Finlayson wrote: > The latest version (2006.12.31) of the "LIVE555 Streaming Media" > software includes initial support for server 'trick play' operations > (seeking, fast forward, reverse play) on MPEG-2 Transport Stream > files. The actual RTSP server code itself does not yet support > Transport Stream 'trick play' operations; however, that will be added > probably for the next release - perhaps within a day or so. > Hi Ross, Do you have a realistic estimate for when MPEG-2 trick mode support will be completed, and do you expect it to be included in next release of the libraries? -Daniel From TAYK0004 at ntu.edu.sg Mon Jan 8 09:11:59 2007 From: TAYK0004 at ntu.edu.sg (#TAY KOON HWEE#) Date: Tue, 9 Jan 2007 01:11:59 +0800 Subject: [Live-devel] Playing back H.264 stream using PDA Message-ID: <438567054C073949AEBE5A28B83E7DE133FCA4@MAIL21.student.main.ntu.edu.sg> Hi guys, I got some questions regarding playback of H.264 streaming. Is there any software (free or purchase) that can playback H.264 streamed using Livemedia. I looking at Coreplayer 1.0. Found out it can play H.264 raw format and support streaming. However email, regarding whether it can support livemedia RTP H.264 streaming, to the staff was unreplied. Anyone can advise. I using DELL Axim (Windows Mobile 5) Regards. Zkunhui -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.live555.com/pipermail/live-devel/attachments/20070108/0ff5ad50/attachment-0001.html From finlayson at live555.com Mon Jan 8 10:16:31 2007 From: finlayson at live555.com (Ross Finlayson) Date: Mon, 8 Jan 2007 10:16:31 -0800 Subject: [Live-devel] ForceMulticastOnUnspecified In-Reply-To: References: Message-ID: >How can I modify the RTSPServer class and related classes so that >testOnDemandRTSPServer can accept transport parameters which force the >stream to be multicast? You can't do this; it's the server that decides whether or not a stream is multicast or unicast. It specifies this in its response to the initial RTSP "DESCRIBE" command (and it's not something that the client can change in its subsequent "SETUP" command). If you want the client to chose between unicast and multicast, then you could support this by adding two different "ServerMediaSession" objects to your server: One that has "PassiveServerMediaSubsession" object(s) for subsession(s), and one that has "OnDemandServerMediaSubsession" (subclass) object(s) for subsession(s). These two "ServerMediaSession" objects would have different names, and each client could choose either multicast or unicast, depending on the name (which would be used at the end of the "rtsp://" URL.) -- Ross Finlayson Live Networks, Inc. http://www.live555.com/ From finlayson at live555.com Mon Jan 8 10:39:37 2007 From: finlayson at live555.com (Ross Finlayson) Date: Mon, 8 Jan 2007 10:39:37 -0800 Subject: [Live-devel] getNextFrame Variables In-Reply-To: References: Message-ID: >hi Zkunhui?C > Thanks for your works and your reply for my >questions.I want to get the file you said about >NAL units. > Again, I want to ask a question which i >refered in previous question: If the size of NAL >unit is bigger than fMaxsize(should I set >fMaxsize myself?), > then fFrameSize=fMaxsize,fNumTruncatedBytes >= fFrameSize - fMaxSize ,as the code below: > >///////////////////////////////////////////////// > if (fFrameSize > fMaxSize) { > fNumTruncatedBytes = fFrameSize - fMaxSize; > fFrameSize = fMaxSize; > } > > memcpy(fTo,Encode_data,fFrameSize); >//Encode_data is defined in another thread >////////////////////////////////////////////////// > >but how to deal with the fNumTruncatedBytes data? Are you asking: How to *prevent* ending up with truncated bytes (i.e., discarded bytes at the end)? The only way to prevent this is to make sure that your downstream object(s) have enough buffer space when they are created. If your downstream object is a "FileSink" - i.e., you're saving data into a file - then use the "bufferSize" parameter to "FileSink::createNew()". If your downstream object is a "RTPSink" (subclass) - i.e., you're sending RTP packets - then assign "OutPacketBuffer::maxSize" to a new value, before creating the RTPSink. (You should see a warning message about this.) -- Ross Finlayson Live Networks, Inc. http://www.live555.com/ -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.live555.com/pipermail/live-devel/attachments/20070108/3616eb1b/attachment.html From finlayson at live555.com Mon Jan 8 10:50:52 2007 From: finlayson at live555.com (Ross Finlayson) Date: Mon, 8 Jan 2007 10:50:52 -0800 Subject: [Live-devel] Playing back H.264 stream using PDA In-Reply-To: <438567054C073949AEBE5A28B83E7DE133FCA4@MAIL21.student.main.ntu.edu.sg> References: <438567054C073949AEBE5A28B83E7DE133FCA4@MAIL21.student.main.ntu.edu.sg> Message-ID: >Is there any software (free or purchase) that can playback H.264 >streamed using Livemedia. Any standards-compliant RTSP/RTP media player client (that supports H.264 decoding) should work. In particular VLC , and Apple's QuickTime Player. -- Ross Finlayson Live Networks, Inc. http://www.live555.com/ -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.live555.com/pipermail/live-devel/attachments/20070108/1f78bf1e/attachment.html From finlayson at live555.com Mon Jan 8 11:01:01 2007 From: finlayson at live555.com (Ross Finlayson) Date: Mon, 8 Jan 2007 11:01:01 -0800 Subject: [Live-devel] streaming with Real Player/QuickTime player In-Reply-To: References: Message-ID: >Is it possible to stream to Real Player from OnDemandRTSPServer? This depends on the codec that your streaming. When RealNetworks came out with "Real Player version 10" a couple of years ago, its support for playing standard RTSP/RTP streams was badly broken. I found that it could now play only a few codecs; I'm not sure if H.263+ was one of them. For this reason, I no longer consider "Real Player" a credible client. QuickTime Player - on the other hand - is a lot more standards compliant. I have found that it plays H.263+ video streams OK, so I'm surprised that you have had problems with this. (Of course, to stream H.263 video, you will have needed to modify the existing "testOnDemandRTSPServer" code to use a "H263plusVideoFileServerMediaSubsession" (and to read from a H.263+ Elementary Steam video file).) -- Ross Finlayson Live Networks, Inc. http://www.live555.com/ -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.live555.com/pipermail/live-devel/attachments/20070108/d4834db5/attachment.html From xcsmith at rockwellcollins.com Mon Jan 8 12:45:40 2007 From: xcsmith at rockwellcollins.com (xcsmith at rockwellcollins.com) Date: Mon, 8 Jan 2007 14:45:40 -0600 Subject: [Live-devel] ForceMulticastOnUnspecified Message-ID: It is the server that decides whether or not a stream is multicast or unicast. It specifies this in its response to the initial RTSP "DESCRIBE" command (and it's not something that the client can change in its subsequent "SETUP" command). Ross, Thank you for your reply. The SDP that I receive from testOnDemandRTSPServer has the following lines: m=video 0 RTP/AVP 33 c=IN IP4 0.0.0.0 In the SDP I don't see that the server specifies unicast. The sessions are set up ahead of time as unicast though, i see your point. I thought I could use multicast because of the parameter forceMulticastOnUnspecified in the function RTSPClient::setupMediaSubsession(). What is the meaning of this parameter then if I cannot force multicast on a session who's SDP has "0" in the address / port information? I want in the end to use mediaServer and have the sessions created dynamically as multicast sessions if the client transport string says multicast. I am confused about how to do this using PassiveServerMediaSubsession. In the examples of using PassiveServerMediaSubsession, the RTPSink is created ahead of time and sink->startPlaying() is called before the event loop is entered. Is it reasonable to use PassiveServerMediaSubsession with mediaServer? Will I have to modify anything so that handleCmd_PLAY() will set the stream playing? What I really need is an "on demand" multicast session. I implemented a class inherited from FileServerMediaSubsession with the 2 pure virtual functions done using the setup in testMPEG2TransportStreamer: FramedSource* mySub::createNewStreamSource(unsigned /*clientSessionId*/, unsigned& estBitrate) { estBitrate = 5000; // kbps, estimate // Create the video source: unsigned const inputDataChunkSize = TRANSPORT_PACKETS_PER_NETWORK_PACKET*TRANSPORT_PACKET_SIZE; ByteStreamFileSource* fileSource = ByteStreamFileSource::createNew(envir(), fFileName, inputDataChunkSize); if (fileSource == NULL) return NULL; MPEG1or2Demux* demux = MPEG1or2Demux::createNew(mEnv, fileSource); MPEG1or2DemuxedElementaryStream* pesSource = demux->newRawPESStream(); FramedSource* tsFrames = MPEG2TransportStreamFromPESSource::createNew(mEnv, pesSource); // Create a framer for the Transport Stream: return MPEG2TransportStreamFramer::createNew(envir(), tsFrames); } RTPSink* mySub::createNewRTPSink(Groupsock* rtpGroupsock, unsigned char /*rtpPayloadTypeIfDynamic*/, FramedSource* /*inputSource*/) { return SimpleRTPSink::createNew(envir(), rtpGroupsock, rtpPayloadType, 90000, "video", "mp2t", 1, True, False /*no 'M' bit*/); } I have mediaServer DynamicRTSPServer create an instance of this class whenever there is a file with ".mpg" extension, and so far I think it works. Now I want to make it so the reformatted stream can be multicast. There aren't any functions similar to createNewRTPSink() and createNewStreamSource() in PassiveServerMediaSubsession, so I would have to do this setup somewhere else, and I don't know where to put the setup if I use mediaServer. Do you have advice on this? (And I think there was a mistake in the client transport line i posted earlier. I think it should be: " RTP/AVP;multicast;destination=224.0.1.2;client_port=12008-12009".) Thanks very much! Xochitl From finlayson at live555.com Mon Jan 8 14:28:35 2007 From: finlayson at live555.com (Ross Finlayson) Date: Mon, 8 Jan 2007 14:28:35 -0800 Subject: [Live-devel] ForceMulticastOnUnspecified In-Reply-To: References: Message-ID: >It is the server that decides whether or not a >stream is multicast or unicast. It specifies this in its response to >the initial RTSP "DESCRIBE" command (and it's not something that the >client can change in its subsequent "SETUP" command). > >Ross, > >Thank you for your reply. >The SDP that I receive from testOnDemandRTSPServer has the following lines: > >m=video 0 RTP/AVP 33 >c=IN IP4 0.0.0.0 > >In the SDP I don't see that the server specifies unicast. By convention, the "0.0.0.0" destination address (and the "0" port number) specifies that the stream will be unicast. The RTSP specification does, however, allow for this to be used even for a multicast stream (in which case the address and port could get assigned by the client during "SETUP"). This feature is not well supported, however. So far I've seen it only on some Axis servers (network cameras), but even they don't support this feature correctly (they assign the multicast address themselves during "SETUP", rather than letting the client assign the address). The optional "forceMulticastOnUnspecified" parameter to "RTSPClient::setupMediaSubsession()" was added as a hack just over a year ago, in response to someone who wanted to accommodate those weird servers. Because this feature is little understood and little implemented, I'm not going to try to support it at all in our RTSP *server* implementation. Instead, the server can specify alternative unicast and multicast "ServerMediaSession" objects, as I noted in my earlier message. >I want in the end to use mediaServer and have the sessions created >dynamically as multicast sessions if the client transport string says >multicast. I am confused about how to do this using >PassiveServerMediaSubsession. In the examples of using >PassiveServerMediaSubsession, the RTPSink is created ahead of time and >sink->startPlaying() is called before the event loop is entered. Is it >reasonable to use PassiveServerMediaSubsession with mediaServer? Will I >have to modify anything so that handleCmd_PLAY() will set the stream >playing? What I really need is an "on demand" multicast session. An 'on demand multicast session' doesn't really make a whole lot of sense. Sure, you could (somehow) arrange to start streaming multicast only after the first client arrives, but thereafter every other client will end up getting the same multicast stream, so what's the point? You might as well just stream multicast continuously - which is what "PassiveServerMediaSubsession" does. (Sending a multicast stream that noone is listening to is OK; in modern multicast routing protocols, such traffic will never get past the first hop.) So, just use separate "ServerMediaSession"s for unicast and multicast, as I noted earlier. That's the simplest and most standard solution. -- Ross Finlayson Live Networks, Inc. http://www.live555.com/ From amit.awasthi at iptvlabs.biz Tue Jan 9 04:14:08 2007 From: amit.awasthi at iptvlabs.biz (Amit Alok Awasthi) Date: Tue, 9 Jan 2007 17:44:08 +0530 Subject: [Live-devel] Initial support for server 'trick play' operations on Transport Stream files In-Reply-To: Message-ID: <200701091214.l09CE5I5038205@ns.live555.com> Dear Mr. Finlayson, Thanks for the information on the latest version (2006.12.31). However, I also wish to know the following: 1. "RTSP server code itself does not yet support Transport Stream "trick play" operations". Has this change now been introduced in the latest Live's release? 2. I had been using 2006.12.08, downloaded from Live555's website to stream a MPEG2-TS. I set Live555 as the server on SuSE Linux 10.0 and VLC 0.8.6 as a client on Windows. However, I had the following observations: >>TS video comes after a 'long wait' from the start while audio goes well in track right from the beginning. Whenever video starts, it is however in sync with the audio. The TS is being streamed though it is not being paused. 'Play fast' functionality is not working thoroughly since after moving fast for a while, the video stops. 3. With the latest binary available (2006.12.31 with Live555's Trick Play support) and the same set up, I am getting the same set of observations as above. (I checked this using the two new utilities - MPEG2TransportStreamIndexer and testMPEG2TransportStreamTrickPlay - present in the "testProgs" directory using the instructions provided in the forum but didn't manage to get 'trick play' working) Please help us know the reason for the points mentioned above and how to rectify them. Happy New Year and Warm Regards, Amit Alok Awasthi iptv Business Analyst iptvLabs (India) Pvt. Ltd. Email: amit.awasthi at iptvlabs.biz Phone: +91-120-4352189 Cell: +09811177092 Company Site: www.iptvlabs.biz -----Original Message----- From: live-devel-bounces at ns.live555.com [mailto:live-devel-bounces at ns.live555.com] On Behalf Of Ross Finlayson Sent: Monday, January 01, 2007 7:02 AM To: live-devel at ns.live555.com Subject: [Live-devel] Initial support for server 'trick play' operations on Transport Stream files The latest version (2006.12.31) of the "LIVE555 Streaming Media" software includes initial support for server 'trick play' operations (seeking, fast forward, reverse play) on MPEG-2 Transport Stream files. The actual RTSP server code itself does not yet support Transport Stream 'trick play' operations; however, that will be added probably for the next release - perhaps within a day or so. To support 'trick play' operations on a Transport Stream file, the server must have a corresponding "index file". This index file describes the position - within the Transport Stream file - of video I-frames (i.e., key frames); these frames are used to produce a fast forward or reverse play stream. Each Transport Stream file that you wish to stream must have a corresponding "index file" (if it doesn't, the the server will still be able to stream the file, but without 'trick play' operations). The index files use the file name suffix ".tsx"; for example, if your Transport Stream file is named "foo.ts", then the corresponding index file will be named "foo.tsx". The current release of the "LIVE 555 Streaming Media" software includes a utility - called "MPEG2TransportStreamIndexer", in the "testProgs" directory - that you can use to generate index files for your Transport Stream files. To generate each index file, run MPEG2TransportStreamIndexer Be warned that this program is currently rather slow, so I suggest running it on the fastest computer that you have. Once you have generated your index files, you can try running a demo application called "testMPEG2TransportStreamTrickPlay" (also in the "testProgs" directory) to simulate the effect of 'trick play' operations on Transport Stream files. To run it: testMPEG2TransportStreamTrickPlay where is the original Transport Stream file name (which must end with ".ts"). There must also be a corresponding index file for this file. is the starting play time in seconds (use 0 to play from the start) is a non-zero integer, representing the playing speed (use a negative number for reverse play) Examples (assume that your original Transport Stream file is named "foo.ts", and that you have already generated an index file, named "too.tsx"): testMPEG2TransportStreamTrickPlay foo.ts 0 8 foo8.ts The output file "foo8.ts" is the original stream, sped up 8x testMPEG2TransportStreamTrickPlay foo.ts 30 -1 foo-1.ts The output file "foo-1.ts" is the original stream, played backwards (at 1x speed), starting from the 30 second point. testMPEG2TransportStreamTrickPlay foo.ts 30 -5 foo-5.ts The output file "foo-5.ts" is the original stream, played backwards (at 5x speed), starting from the 30 second point. If you have any problems with these programs, please let us know, including the URL of the original Transport Stream file, so we can take a look at it. A reminder once again that this 'trick play' functionality will be added to the RTSP server code shortly. -- 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 luk666 at wp.pl Tue Jan 9 05:39:08 2007 From: luk666 at wp.pl (Paul) Date: Tue, 09 Jan 2007 14:39:08 +0100 Subject: [Live-devel] streaming .mp4 Message-ID: <45a39afcb190b@wp.pl> Hi All, I am a newbie in multimedia programming. Is it possible to stream .mp4 file using live554 library? If not do you know some other c++ libraries which provide such functionality Thanks for any hint. Paul ---------------------------------------------------- Zuzia ma wielki k?opot - jak ubra? si? na bal? Zosta? stylist? Zuzi i wyszykuj j? na bal. http://klik.wp.pl/?adr=http%3A%2F%2Fadv.reklama.wp.pl%2Fas%2Fd54.html&sid=986 From shaswata at alumnux.com Tue Jan 9 06:55:40 2007 From: shaswata at alumnux.com (Shaswata Jash) Date: Tue, 9 Jan 2007 20:25:40 +0530 Subject: [Live-devel] streaming .mp4 References: <45a39afcb190b@wp.pl> Message-ID: <005901c733fe$3ac30e80$2e0aa8c0@NITU> Hi Paul, Live555 yet doesn't support streaming from ISO base media file format (like .mp4 or .3gp). Apples's Darwin Streaming server (DSS) does so. DSS's source code is open too. With regards, Shaswata Jash ----- Original Message ----- From: "Paul" To: "LIVE555 Streaming Media - development & use" Sent: Tuesday, January 09, 2007 7:09 PM Subject: [Live-devel] streaming .mp4 > Hi All, > I am a newbie in multimedia programming. Is it possible to stream .mp4 file using live554 library? If not do you know some other c++ libraries which provide such functionality > Thanks for any hint. > Paul > > > ---------------------------------------------------- > Zuzia ma wielki k?opot - jak ubra? si? na bal? > Zosta? stylist? Zuzi i wyszykuj j? na bal. > http://klik.wp.pl/?adr=http%3A%2F%2Fadv.reklama.wp.pl%2Fas%2Fd54.html&sid=986 > > > _______________________________________________ > live-devel mailing list > live-devel at lists.live555.com > http://lists.live555.com/mailman/listinfo/live-devel > From mrnikhilagrawal at gmail.com Tue Jan 9 09:49:05 2007 From: mrnikhilagrawal at gmail.com (Nikhil Agrawal) Date: Tue, 9 Jan 2007 23:19:05 +0530 Subject: [Live-devel] streaming .mp4 In-Reply-To: <005901c733fe$3ac30e80$2e0aa8c0@NITU> References: <45a39afcb190b@wp.pl> <005901c733fe$3ac30e80$2e0aa8c0@NITU> Message-ID: <733cde3e0701090949l71221925vc79073e573ab84ce@mail.gmail.com> Hi, But the problem with Darwin Server is that it works only on TCP unlike Live555 Streaming Server. Thats the biggest drawback of using and i didn't find any support for UDP on Darwin Server. Regards, Nikhil Agrawal On 1/9/07, Shaswata Jash wrote: > > Hi Paul, > > Live555 yet doesn't support streaming from ISO base media file format > (like > .mp4 or .3gp). > Apples's Darwin Streaming server (DSS) does so. DSS's source code is open > too. > > With regards, > Shaswata Jash > > ----- Original Message ----- > From: "Paul" > To: "LIVE555 Streaming Media - development & use" > > Sent: Tuesday, January 09, 2007 7:09 PM > Subject: [Live-devel] streaming .mp4 > > > > Hi All, > > I am a newbie in multimedia programming. Is it possible to stream .mp4 > file using live554 library? If not do you know some other c++ libraries > which provide such functionality > > Thanks for any hint. > > Paul > > > > > > ---------------------------------------------------- > > Zuzia ma wielki k?opot - jak ubra? si? na bal? > > Zosta? stylist? Zuzi i wyszykuj j? na bal. > > > > http://klik.wp.pl/?adr=http%3A%2F%2Fadv.reklama.wp.pl%2Fas%2Fd54.html&sid=986 > > > > > > _______________________________________________ > > live-devel mailing list > > live-devel at lists.live555.com > > http://lists.live555.com/mailman/listinfo/live-devel > > > > _______________________________________________ > 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: http://lists.live555.com/pipermail/live-devel/attachments/20070109/d2714220/attachment.html From rahul.ray at gmail.com Tue Jan 9 11:08:33 2007 From: rahul.ray at gmail.com (Rahul Ray) Date: Tue, 9 Jan 2007 11:08:33 -0800 Subject: [Live-devel] video over IP Message-ID: Hi, I would like to stream real time MPEG-4 over IP so that it can be played using a quicktime by accessing the IP. Could you please tell me how to do this or is this at all possible using LIVE555 ? Thanks, Rahul -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.live555.com/pipermail/live-devel/attachments/20070109/2711feb8/attachment.html From finlayson at live555.com Tue Jan 9 12:09:09 2007 From: finlayson at live555.com (Ross Finlayson) Date: Tue, 9 Jan 2007 12:09:09 -0800 Subject: [Live-devel] video over IP In-Reply-To: References: Message-ID: > I would like to stream real time MPEG-4 over IP so that it can >be played using a quicktime by accessing the IP. Could you please >tell me how to do this or is this at all possible using LIVE555 ? Of course it's possible. Examine the demo applications, and read the FAQ - in particular http://www.live555.com/liveMedia/faq.html#liveInput and http://www.live555.com/liveMedia/faq.html#liveInput-unicast -- Ross Finlayson Live Networks, Inc. http://www.live555.com/ -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.live555.com/pipermail/live-devel/attachments/20070109/69d65d77/attachment.html From vd_mail_id at yahoo.com Tue Jan 9 12:13:53 2007 From: vd_mail_id at yahoo.com (vd mail_id) Date: Tue, 9 Jan 2007 12:13:53 -0800 (PST) Subject: [Live-devel] UsageEnvironment & TaskScheduler In-Reply-To: Message-ID: <549581.49721.qm@web59010.mail.re1.yahoo.com> I know I will get scolded for this from Ross, but I really need some quick pointers about what UsageEnvironment and TaskScheduler are doing and how? I would be glad if anyone can forward me any past email from mail list which might shed some light on these two classes. TIA --Vikram __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.live555.com/pipermail/live-devel/attachments/20070109/4d49e75f/attachment.html From finlayson at live555.com Tue Jan 9 14:01:10 2007 From: finlayson at live555.com (Ross Finlayson) Date: Tue, 9 Jan 2007 14:01:10 -0800 Subject: [Live-devel] Initial support for server 'trick play' operations on Transport Stream files In-Reply-To: <200701091214.l09CE5I5038205@ns.live555.com> References: <200701091214.l09CE5I5038205@ns.live555.com> Message-ID: >1. "RTSP server code itself does not yet support Transport Stream "trick >play" operations". Has this change now been introduced in the latest Live's >release? Yes, as of the latest release (2007.01.09). I'll be documenting and saying more about this shortly. (In the meantime, I suggest reviewing my previous message about this - where I described the new 'Transport Stream index files'.) >2. I had been using 2006.12.08, downloaded from Live555's website to stream >a MPEG2-TS. I set Live555 as the server on SuSE Linux 10.0 and VLC 0.8.6 as >a client on Windows. However, I had the following observations: > >>>TS video comes after a 'long wait' from the start while audio goes well in >track right from the beginning. This may be a VLC issue - e.g., perhaps it takes a while to recognize the video stream... >The TS is being streamed though it is not being paused. >'Play fast' functionality is not working thoroughly since after moving fast >for a while, the video stops. Trick play functions (like 'fast forward') will work only with the latest release of the software, and only if you have an index file for each Transport File that you're streaming. (Also, the VLC client currently doesn't appear to perform the 'trick play' operations properly; the VLC people will need to fix this. However, other clients - such as the Amino set-top box - work OK.) -- Ross Finlayson Live Networks, Inc. http://www.live555.com/ From drobbins at fsmlabs.com Tue Jan 9 14:31:09 2007 From: drobbins at fsmlabs.com (Daniel Robbins) Date: Tue, 09 Jan 2007 15:31:09 -0700 Subject: [Live-devel] Initial support for server 'trick play' operations on Transport Stream files In-Reply-To: References: <200701091214.l09CE5I5038205@ns.live555.com> Message-ID: <45A417AD.3030503@fsmlabs.com> Ross Finlayson wrote: > Trick play functions (like 'fast forward') will work only with the > latest release of the software, and only if you have an index file > for each Transport File that you're streaming. (Also, the VLC client > currently doesn't appear to perform the 'trick play' operations > properly; the VLC people will need to fix this. However, other > clients - such as the Amino set-top box - work OK.) > Do you know of any Windows or Linux clients that properly support fast forward and rewind, that you would recommend for using to test the new trick play functionality? -Daniel From shaswata at alumnux.com Tue Jan 9 22:27:15 2007 From: shaswata at alumnux.com (Shaswata Jash) Date: Wed, 10 Jan 2007 11:57:15 +0530 Subject: [Live-devel] streaming .mp4 References: <45a39afcb190b@wp.pl> <005901c733fe$3ac30e80$2e0aa8c0@NITU> <733cde3e0701090949l71221925vc79073e573ab84ce@mail.gmail.com> Message-ID: <001601c73480$5f32a000$2e0aa8c0@NITU> Hi Nikhil, I'm extremely surprised from your observation. I can't really agree with your point of view - we have checked through ethereal that DSS streams over UDP. Please double check that your client is not sending 'channel' information instead of port as it should have been for UDP. I think, somehow DSS is detecting that the client is requesting streaming over TCP. With regards, Shaswata Jash ----- Original Message ----- From: Nikhil Agrawal To: LIVE555 Streaming Media - development & use Sent: Tuesday, January 09, 2007 11:19 PM Subject: Re: [Live-devel] streaming .mp4 Hi, But the problem with Darwin Server is that it works only on TCP unlike Live555 Streaming Server. Thats the biggest drawback of using and i didn't find any support for UDP on Darwin Server. Regards, Nikhil Agrawal On 1/9/07, Shaswata Jash wrote: Hi Paul, Live555 yet doesn't support streaming from ISO base media file format (like .mp4 or .3gp). Apples's Darwin Streaming server (DSS) does so. DSS's source code is open too. With regards, Shaswata Jash ----- Original Message ----- From: "Paul" < luk666 at wp.pl> To: "LIVE555 Streaming Media - development & use" Sent: Tuesday, January 09, 2007 7:09 PM Subject: [Live-devel] streaming .mp4 > Hi All, > I am a newbie in multimedia programming. Is it possible to stream .mp4 file using live554 library? If not do you know some other c++ libraries which provide such functionality > Thanks for any hint. > Paul > > > ---------------------------------------------------- > Zuzia ma wielki k?opot - jak ubra? si? na bal? > Zosta? stylist? Zuzi i wyszykuj j? na bal. > http://klik.wp.pl/?adr=http%3A%2F%2Fadv.reklama.wp.pl%2Fas%2Fd54.html&sid=986 > > > _______________________________________________ > live-devel mailing list > live-devel at lists.live555.com > http://lists.live555.com/mailman/listinfo/live-devel > _______________________________________________ live-devel mailing list live-devel at lists.live555.com http://lists.live555.com/mailman/listinfo/live-devel ------------------------------------------------------------------------------ _______________________________________________ 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: http://lists.live555.com/pipermail/live-devel/attachments/20070109/a8eff2b7/attachment-0001.html From mrnikhilagrawal at gmail.com Tue Jan 9 22:44:13 2007 From: mrnikhilagrawal at gmail.com (Nikhil Agrawal) Date: Wed, 10 Jan 2007 12:14:13 +0530 Subject: [Live-devel] streaming .mp4 In-Reply-To: <001601c73480$5f32a000$2e0aa8c0@NITU> References: <45a39afcb190b@wp.pl> <005901c733fe$3ac30e80$2e0aa8c0@NITU> <733cde3e0701090949l71221925vc79073e573ab84ce@mail.gmail.com> <001601c73480$5f32a000$2e0aa8c0@NITU> Message-ID: <733cde3e0701092244n1f3b64e2n97fb695c39a5daf0@mail.gmail.com> Hi, I am also really surprised to know such facts from you . Thanks , I will check it from my side once again. But do tell me, do have the source code for DSS that is supporting UDP, because in the code I have , I saw support for TCP only , if you have any information (including code location site )regarding the same , please tell me. Thanks and Regards, Nikhil Agrawal On 1/10/07, Shaswata Jash wrote: > > Hi Nikhil, > > I'm extremely surprised from your observation. I can't really agree with > your point of view - we have checked through ethereal that DSS streams over > UDP. > Please double check that your client is not sending 'channel' information > instead of port as it should have been for UDP. I think, somehow DSS is > detecting that the client is requesting streaming over TCP. > > With regards, > Shaswata Jash > > > ----- Original Message ----- > *From:* Nikhil Agrawal > *To:* LIVE555 Streaming Media - development & use > *Sent:* Tuesday, January 09, 2007 11:19 PM > *Subject:* Re: [Live-devel] streaming .mp4 > > > Hi, > > But the problem with Darwin Server is that it works only on TCP unlike > Live555 Streaming Server. Thats the biggest drawback of using and i didn't > find any support for UDP on Darwin Server. > > Regards, > Nikhil Agrawal > > > On 1/9/07, Shaswata Jash wrote: > > > > Hi Paul, > > > > Live555 yet doesn't support streaming from ISO base media file format > > (like > > .mp4 or .3gp). > > Apples's Darwin Streaming server (DSS) does so. DSS's source code is > > open > > too. > > > > With regards, > > Shaswata Jash > > > > ----- Original Message ----- > > From: "Paul" < luk666 at wp.pl> > > To: "LIVE555 Streaming Media - development & use" > > > > Sent: Tuesday, January 09, 2007 7:09 PM > > Subject: [Live-devel] streaming .mp4 > > > > > > > Hi All, > > > I am a newbie in multimedia programming. Is it possible to stream .mp4 > > file using live554 library? If not do you know some other c++ libraries > > which provide such functionality > > > Thanks for any hint. > > > Paul > > > > > > > > > ---------------------------------------------------- > > > Zuzia ma wielki k?opot - jak ubra? si? na bal? > > > Zosta? stylist? Zuzi i wyszykuj j? na bal. > > > > > > > http://klik.wp.pl/?adr=http%3A%2F%2Fadv.reklama.wp.pl%2Fas%2Fd54.html&sid=986 > > > > > > > > > _______________________________________________ > > > live-devel mailing list > > > live-devel at lists.live555.com > > > http://lists.live555.com/mailman/listinfo/live-devel > > > > > > > _______________________________________________ > > live-devel mailing list > > live-devel at lists.live555.com > > http://lists.live555.com/mailman/listinfo/live-devel > > > > ------------------------------ > > _______________________________________________ > live-devel mailing list > live-devel at lists.live555.com > http://lists.live555.com/mailman/listinfo/live-devel > > > _______________________________________________ > 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: http://lists.live555.com/pipermail/live-devel/attachments/20070109/873f5bbb/attachment.html From mrnikhilagrawal at gmail.com Tue Jan 9 22:51:45 2007 From: mrnikhilagrawal at gmail.com (Nikhil Agrawal) Date: Wed, 10 Jan 2007 12:21:45 +0530 Subject: [Live-devel] Regarding Windows Media Player as Client Message-ID: <733cde3e0701092251l3171c5m76a00cbfc6ae552e@mail.gmail.com> Hi, I want to use Windows Media Player as Client player with Live555 Media Streaming Server. Although everything is working fine with VLC , but according to my requirements at client end , I want WMP to be used as client. Also WMP doc says its sn RTSP complaint player so please tell me how can I use it at client player . Am i need to change in code related to negotiation part ( SET_UP , DESCRIBE , SDP lines..._). Regards, Nikhil Agrawal -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.live555.com/pipermail/live-devel/attachments/20070109/3422b340/attachment.html From finlayson at live555.com Wed Jan 10 00:31:54 2007 From: finlayson at live555.com (Ross Finlayson) Date: Wed, 10 Jan 2007 00:31:54 -0800 Subject: [Live-devel] Regarding Windows Media Player as Client In-Reply-To: <733cde3e0701092251l3171c5m76a00cbfc6ae552e@mail.gmail.com> References: <733cde3e0701092251l3171c5m76a00cbfc6ae552e@mail.gmail.com> Message-ID: >I want to use Windows Media Player as Client player with Live555 >Media Streaming Server. Although everything is working fine with VLC >, but according to my requirements at client end , I want WMP to be >used as client. Also WMP doc says its sn RTSP complaint player They lie. The protocol that Windows Media Player speaks apparently does not conform to the RTSP standard. To my knowledge it cannot be used with our RTSP server. -- Ross Finlayson Live Networks, Inc. http://www.live555.com/ From finlayson at live555.com Wed Jan 10 00:30:56 2007 From: finlayson at live555.com (Ross Finlayson) Date: Wed, 10 Jan 2007 00:30:56 -0800 Subject: [Live-devel] streaming .mp4 In-Reply-To: <733cde3e0701092244n1f3b64e2n97fb695c39a5daf0@mail.gmail.com> References: <45a39afcb190b@wp.pl> <005901c733fe$3ac30e80$2e0aa8c0@NITU> <733cde3e0701090949l71221925vc79073e573ab84ce@mail.gmail.com> <001601c73480$5f32a000$2e0aa8c0@NITU> <733cde3e0701092244n1f3b64e2n97fb695c39a5daf0@mail.gmail.com> Message-ID: Of course the Darwin Streaming Server streams RTP over UDP (or over TCP, if the client requests it) - just as our RTSP server does. However, a discussion of the capabilities of the Darwin Streaming Server is off-topic for this mailing list. -- Ross Finlayson Live Networks, Inc. http://www.live555.com/ From shaswata at alumnux.com Wed Jan 10 03:14:56 2007 From: shaswata at alumnux.com (Shaswata Jash) Date: Wed, 10 Jan 2007 16:44:56 +0530 Subject: [Live-devel] Regarding Windows Media Player as Client References: <733cde3e0701092251l3171c5m76a00cbfc6ae552e@mail.gmail.com> Message-ID: <002a01c734a8$8f436fe0$2e0aa8c0@NITU> Hi Nikhil, As Ross has already mentioned abo