<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div><blockquote type="cite" class=""><div class="">I'm interested in creating an RTSP server around this MPEGTS stream. To be clear, my data source provides some amount encoded MPEGTS packets. Should I simply write my packetized data to a `DeviceSource` implementation, or do I need to subclass MPEGTransportStreamFramer or something else? It's a little unclear if I need a `filter` or a `framer` in this case.<br class=""></div></blockquote><div><br class=""></div></div>Is your MPEG TS stream accessible as a named file (e.g., under “/dev”), or via a named pipe?  If so, then you can probably use the existing “testOnDemandRTSPServer.cpp” code as a model for your server, by changing “test.ts” to the name of your device or pipe.  You should also change “reuseFirstSource” to True; see<div class=""><span class="Apple-tab-span" style="white-space:pre">     </span><a href="http://live555.com/liveMedia/faq.html#liveInput-unicast" class="">http://live555.com/liveMedia/faq.html#liveInput-unicast</a></div><div class=""><br class=""></div><div class="">If, however, your MPEG TS stream is not accessible as a file (or via a named pipe), then you will have to write your own “FramedSource’ subclass (possibly based on the “DeviceSource” model code), and your own subclass of “OnDemandServerMediaSubsession”.  This is also described in the FAQ entry.  One more thing to be aware of: Because Transport Stream ‘packets’ are so small (188 bytes), you may want to aggregate them before delivering them.  Usually, people deliver chunks of 7 Transport Stream ‘packets’ at a time (to ensure that the resulting RTP packet will fit within a typical 1500-byte MTU).</div><br class=""><br class=""><div apple-content-edited="true" class="">
<span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;  "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;  ">Ross Finlayson<br class="">Live Networks, Inc.<br class=""><a href="http://www.live555.com/" class="">http://www.live555.com/</a></span></span>
</div>
<br class=""></body></html>