On Thu, Oct 7, 2010 at 9:12 AM, iain <span dir="ltr">&lt;<a href="mailto:iain@idcl.co.uk">iain@idcl.co.uk</a>&gt;</span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<div link="blue" vlink="purple" lang="EN-GB"><div><p class="MsoNormal">I’ve got two requests, really.  Firstly, has anyone got this to work properly or can they recommend an alternative (open source) which works reliably.</p>
</div></div></blockquote><div><br>Hey Iain, long time no see.  :)  I also looked at that sourceforge project 
when I was first trying to integrate Live555 into a DirectShow source filter, 
and ultimately decided that their filter implementation was horrible, which it is.  So I wrote an RTSP Source Filter using Live555 from scratch, and it works fairly 
well.  I inherited from CBaseFilter/CBaseOutputPin and made my own 
streaming threads (I used QThread, but of course you can use any threading 
library you like)--CSource/CSourceStream aren&#39;t well suited
 towards Live555.  I also implemented IFileSourceFilter to aid testability.<br>
<br>
As for Live555 code, I started with the openRTSP code (which implements an RTSP client), hacked out most of the stuff I didn&#39;t care about and then integrated 
that into the filter.   I generally connect twice to the server--once to fetch media types so I
 can generate output pins, and a second time to start streaming 
media--this is sort of a necessity if you&#39;re going to test in 
GraphEdit.  However, I also put in a small hack to IFileSourceFilter to 
do this in a single pull in my own app where it happens fast enough that
 I can pull all at once.  Live555 is single-threaded, so I have one thread that runs the openRTSP-ish code and plops samples into queues based on media type--it&#39;s important to do all Live555 operations on a single thread and not to block the Live555 thread in any way.  Then, I have the streaming threads for the output pins service those queues. <br>

<br>
However, getting timestamping working correctly has been (and continues to be) an issue.  Live555 timestamps aren&#39;t accurate until the RTCP channel has been sync-d up, so the first few frame that come through have invalid timestamps.  And DirectShow&#39;s timestamping for live sources sucks in general--I have yet to make heads or tails of it.  If you have any good advice for getting timestamping working better in DShow, that&#39;d be awesome.<br>
 </div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"><div link="blue" vlink="purple" lang="EN-GB"><div><p class="MsoNormal">Secondly, the documentation for Live555 is a touch on the light side, however I have found some references to tutorials (<a href="http://www.mail-archive.com/live-devel@lists.live555.com/msg00238.html" target="_blank">http://www.mail-archive.com/live-devel@lists.live555.com/msg00238.html</a>), however the referenced link does not appear to exist anymore.  Does anyone have a copy of this.</p>
</div></div></blockquote><div><br>My biggest recommendation, if you want to stream H264, is to completely disregard that guy&#39;s code.  It&#39;s profoundly incorrect (particularly if you&#39;re writing a server component), and I made the mistake of following it as well.  Your best resource is definitely openRTSP code, the FAQ on Live555&#39;s site, and the mailing list here.<br>
<br>Are you writing a server filter as well?<br></div></div><br>