<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns="http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=Content-Type content="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 11 (filtered medium)">
<base href="x-msg://180/">
<!--[if !mso]>
<style>
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style>
<![endif]-->
<style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:Helvetica;
        panose-1:2 11 6 4 2 2 2 2 2 4;}
@font-face
        {font-family:SimSun;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:SimSun;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman";}
a:link, span.MsoHyperlink
        {color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {color:blue;
        text-decoration:underline;}
span.EmailStyle19
        {mso-style-type:personal-reply;
        font-family:Arial;
        color:navy;}
@page Section1
        {size:595.3pt 841.9pt;
        margin:72.0pt 90.0pt 72.0pt 90.0pt;}
div.Section1
        {page:Section1;}
-->
</style>
<!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
 <o:shapelayout v:ext="edit">
  <o:idmap v:ext="edit" data="1" />
 </o:shapelayout></xml><![endif]-->
</head>

<body lang=ZH-CN link=blue vlink=blue style='word-wrap: break-word;-webkit-nbsp-mode: space;
-webkit-line-break: after-white-space'>

<div class=Section1>

<p class=MsoNormal><font size=1 color=navy face=Arial><span lang=EN-US
style='font-size:9.0pt;font-family:Arial;color:navy'>Hi,<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=1 color=navy face=Arial><span lang=EN-US
style='font-size:9.0pt;font-family:Arial;color:navy'>Thank you very much, I did
as you say, and now it works fine: the ts packets can save as local file.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=1 color=navy face=Arial><span lang=EN-US
style='font-size:9.0pt;font-family:Arial;color:navy'>If  I want to save ts
packets to a seial of files:<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=1 color=navy face=Arial><span lang=EN-US
style='font-size:9.0pt;font-family:Arial;color:navy'>For example, when I found
a I frame (h264 encoded, we only have I frame and P frame), I save the next
packets to a file: 1.ts, when I found a next I frame,I save next packets to
2.ts,….<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=1 color=navy face=Arial><span lang=EN-US
style='font-size:9.0pt;font-family:Arial;color:navy'>I tried:<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=1 color=navy face=Arial><span lang=EN-US
style='font-size:9.0pt;font-family:Arial;color:navy'>MediaSink* sink =
FileSink::createNew(envir(), outputFileName, 20000,true);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=1 color=navy face=Arial><span lang=EN-US
style='font-size:9.0pt;font-family:Arial;color:navy'>but the saved each
 files are 1316B , because the source send packets are 188*7.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=1 color=navy face=Arial><span lang=EN-US
style='font-size:9.0pt;font-family:Arial;color:navy'>What should I do?<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=1 color=navy face=Arial><span lang=EN-US
style='font-size:9.0pt;font-family:Arial;color:navy'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=1 color=navy face=Arial><span lang=EN-US
style='font-size:9.0pt;font-family:Arial;color:navy'>BR,<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=1 color=navy face=Arial><span lang=EN-US
style='font-size:9.0pt;font-family:Arial;color:navy'>Chao, Yuan<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=1 color=navy face=Arial><span lang=EN-US
style='font-size:9.0pt;font-family:Arial;color:navy'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=1 color=navy face=Arial><span lang=EN-US
style='font-size:9.0pt;font-family:Arial;color:navy'><o:p> </o:p></span></font></p>

<div>

<div class=MsoNormal align=center style='text-align:center'><font size=3
face="Times New Roman"><span lang=EN-US style='font-size:12.0pt'>

<hr size=2 width="100%" align=center tabindex=-1>

</span></font></div>

<p class=MsoNormal><b><font size=2 face=Tahoma><span lang=EN-US
style='font-size:10.0pt;font-family:Tahoma;font-weight:bold'>From:</span></font></b><font
size=2 face=Tahoma><span lang=EN-US style='font-size:10.0pt;font-family:Tahoma'>
live-devel-bounces@ns.live555.com [mailto:live-devel-bounces@ns.live555.com] <b><span
style='font-weight:bold'>On Behalf Of </span></b>Ross Finlayson<br>
<b><span style='font-weight:bold'>Sent:</span></b> Tuesday, July 10, 2012 8:14
PM<br>
<b><span style='font-weight:bold'>To:</span></b> LIVE555 Streaming Media -
development & use<br>
<b><span style='font-weight:bold'>Subject:</span></b> Re: [Live-devel] Pls give
suggestion about the testReplicator.cpp</span></font><span lang=EN-US><o:p></o:p></span></p>

</div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span lang=EN-US
style='font-size:12.0pt'><o:p> </o:p></span></font></p>

<div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span lang=EN-US
style='font-size:12.0pt'>The basic problem is your code's use of the port
number 8556.  First, you shouldn't think of it as being the server's
'output' port.  Instead, it's the 'control' port that the server uses for
incoming RTSP connections from clients.  (The actual RTP/RTCP stream
'output' uses other port numbers, which will differ for each client.)<o:p></o:p></span></font></p>

</div>

<div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span lang=EN-US
style='font-size:12.0pt'><o:p> </o:p></span></font></p>

</div>

<div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span lang=EN-US
style='font-size:12.0pt'>Anyway, the key point is that because the server uses
port number 8556 for RTSP, your code can't reuse it.<o:p></o:p></span></font></p>

</div>

<div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span lang=EN-US
style='font-size:12.0pt'><o:p> </o:p></span></font></p>

</div>

<div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span lang=EN-US
style='font-size:12.0pt'>Also, you should not be calling
"getStreamParameters()" and "getStreamSource()" at all.
 Those functions are only used internally by our library code to implement
RTSP server functionality; you should not be calling them yourself in your
code.<o:p></o:p></span></font></p>

</div>

<div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span lang=EN-US
style='font-size:12.0pt'><o:p> </o:p></span></font></p>

</div>

<div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span lang=EN-US
style='font-size:12.0pt'>Because your server is receiving Transport Stream
packets on a UDP port (1236, in your case), and then re-serving this data via
RTSP, you should just be using a variant of the code that's used (in lines
330-356 of "testProgs/testOnDemandRTSPServer.cpp") to demonstrate
this functionality in the "testOnDemandRTSPServer" demo application.<o:p></o:p></span></font></p>

</div>

<div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span lang=EN-US
style='font-size:12.0pt'><o:p> </o:p></span></font></p>

</div>

<div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span lang=EN-US
style='font-size:12.0pt'>The change that you would make is that instead of
using the "MPEG2TransportUDPServerMediaSubsession" class, you would
use a *subclass* of this - that you would write.  For the purposes of this
email, let's call this subclass "modifiedMPEG2TransportUDPServerMediaSubsession".<o:p></o:p></span></font></p>

</div>

<div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span lang=EN-US
style='font-size:12.0pt'><o:p> </o:p></span></font></p>

</div>

<div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span lang=EN-US
style='font-size:12.0pt'>Your
"modifiedMPEG2TransportUDPServerMediaSubsession" class would be a
subclass of "MPEG2TransportUDPServerMediaSubsession", and would
reimplement just one virtual function: "createNewStreamSource()".
 Your reimplemented "createNewStreamSource()" function would
look something like this:<o:p></o:p></span></font></p>

</div>

<div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span lang=EN-US
style='font-size:12.0pt'><o:p> </o:p></span></font></p>

</div>

<div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span lang=EN-US
style='font-size:12.0pt'><o:p> </o:p></span></font></p>

</div>

<div>

<div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span lang=EN-US
style='font-size:12.0pt'>FramedSource*
modifiedMPEG2TransportUDPServerMediaSubsession<o:p></o:p></span></font></p>

</div>

<div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span lang=EN-US
style='font-size:12.0pt'>::createNewStreamSource(unsigned clientSessionId,
unsigned& estBitrate) {<o:p></o:p></span></font></p>

</div>

<div>

<p class=MsoNormal><span class=apple-tab-span><font size=3
face="Times New Roman"><span lang=EN-US style='font-size:12.0pt'>            </span></font></span><span
lang=EN-US>FramedSource* inputSource = MPEG2TransportUDPServerMediaSubsession:: createNewStreamSource(clientSessionId,
estBitrate);<o:p></o:p></span></p>

</div>

<div>

<p class=MsoNormal><span class=apple-tab-span><font size=3
face="Times New Roman"><span lang=EN-US style='font-size:12.0pt'>                        </span></font></span><span
lang=EN-US>// call the parent class's implementation first<o:p></o:p></span></p>

</div>

<div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span lang=EN-US
style='font-size:12.0pt'><o:p> </o:p></span></font></p>

</div>

<div>

<p class=MsoNormal><span class=apple-tab-span><font size=3
face="Times New Roman"><span lang=EN-US style='font-size:12.0pt'>            </span></font></span><span
lang=EN-US>StreamReplicator* replicator = StreamReplicator::createNew(envir(),
inputSource);<o:p></o:p></span></p>

</div>

<div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span lang=EN-US
style='font-size:12.0pt'><o:p> </o:p></span></font></p>

</div>

<div>

<div>

<p class=MsoNormal><span class=apple-tab-span><font size=3
face="Times New Roman"><span lang=EN-US style='font-size:12.0pt'>            </span></font></span><span
lang=EN-US>startReplicaFileSink(replicator, "test.ts");<o:p></o:p></span></p>

</div>

<div>

<p class=MsoNormal><span class=apple-tab-span><font size=3
face="Times New Roman"><span lang=EN-US style='font-size:12.0pt'>            </span></font></span><span
lang=EN-US>startReplicaFileSink(replicator, "test2.ts");<o:p></o:p></span></p>

</div>

</div>

<div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span lang=EN-US
style='font-size:12.0pt'><o:p> </o:p></span></font></p>

</div>

<div>

<p class=MsoNormal><span class=apple-tab-span><font size=3
face="Times New Roman"><span lang=EN-US style='font-size:12.0pt'>            </span></font></span><span
lang=EN-US>return replicator->createStreamReplica();<o:p></o:p></span></p>

</div>

<div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span lang=EN-US
style='font-size:12.0pt'>}<o:p></o:p></span></font></p>

</div>

<div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span lang=EN-US
style='font-size:12.0pt'><o:p> </o:p></span></font></p>

</div>

<div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span lang=EN-US
style='font-size:12.0pt'><o:p> </o:p></span></font></p>

</div>

<div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span lang=EN-US
style='font-size:12.0pt'>I.e., your code would replace the input source stream
with a replica, while creating two more replicas for use in output files.<o:p></o:p></span></font></p>

</div>

</div>

<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3
face="Times New Roman"><span lang=EN-US style='font-size:12.0pt'><o:p> </o:p></span></font></p>

<span style='orphans: 2;text-align:-webkit-auto;widows: 2;-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;word-spacing:
0px'><span style='orphans: 2;text-align:-webkit-auto;widows: 2;-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;word-spacing:
0px'>

<div apple-content-edited=true>

<p class=MsoNormal><span class=apple-style-span><font size=4 color=black
face=Helvetica><span lang=EN-US style='font-size:13.5pt;font-family:Helvetica;
color:black'>Ross Finlayson</span></font></span><font size=4 color=black
face=Helvetica><span lang=EN-US style='font-size:13.5pt;font-family:Helvetica;
color:black'><br>
<span class=apple-style-span>Live Networks, Inc.</span><br>
<span class=apple-style-span><a href="http://www.live555.com/">http://www.live555.com/</a></span></span></span></span></font><span
lang=EN-US> <o:p></o:p></span></p>

</div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span lang=EN-US
style='font-size:12.0pt'><o:p> </o:p></span></font></p>

</div>

</body>

</html>