<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><blockquote type="cite"><div>How to invoke a RTCP BYE message to the client from the RTSP Server application (e.g testOnDemandRTSPServer) ?<br></div></blockquote><div><br></div></div>This will happen automatically when the stream ends - i.e., when the server reaches the end of the file that's being streamed.  There is nothing that you need to do to get this; the server will send this automatically.<div><br></div><div>There are exceptions to this, however.  If the file being streamed has a known 'range' - as reported in the SDP description that the server sends in response to the RTSP "DESCRIBE" - then the server will not send a RTCP "BYE" when it reaches the end of the file.  The reason for this is that files with a known range are typically also 'seekable'.  By not sending a RTCP "BYE" when the server reaches the end of this kind of file, the stream will be kept alive, which allows the client - if desired - to seek backwards in the stream, to replay part or all of it.</div><div><br></div><div>In our current implementation, the following file types are 'seekable', have a known 'range', and thus our server will *not* send a RTCP "BYE" when it reaches the end of a file:</div><div>- DV video files</div><div>- MP3 audio files</div><div>- MPEG Transport Stream files (with corresponding 'index' files)</div><div>- WAV audio files</div><div><br></div><div>A client that is receiving this kind of file therefore can't expect to receive a RTCP "BYE" to signal 'end of stream'.  Instead, it should call "MediaSession::playEndTime()" (and "MediaSession::playStartTime()") to figure out the duration of the stream, and set a timer for this duration.  (See, for example, the code for "testRTSPClient".)</div><div><br></div><div>Other kinds of files - e.g., AC-3, AAC, AMR, H.264, MPEG-4 - do not have a known 'range', are not 'seekable', and thus - for such files - the server *will* send a RTCP "BYE" when it reaches the end of the file.</div><br><br><div apple-content-edited="true">
<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; font-size: medium; "><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; font-size: medium; ">Ross Finlayson<br>Live Networks, Inc.<br><a href="http://www.live555.com/">http://www.live555.com/</a></span></span>
</div>
<br></body></html>