<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:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal;
        font-family:"Calibri",sans-serif;
        color:#1F497D;}
span.EmailStyle18
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></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="EN-GB" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US">Hi Guys,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US">>>
</span>I doubt that *each* frame is 160 kBytes - presumably only the ‘key frames’.<span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US">Yes, but in this case the GOP length is 1, so every frame is a key frame. Yes it’s nuts I know
</span><span style="font-size:11.0pt;font-family:Wingdings;color:#1F497D;mso-fareast-language:EN-US">J</span><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US">>>
</span>I recommend that you reconfigure your encoder so that…<span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US">I totally agree with your recommendations as regards to encoding, however I am actually working on a decoding product. I am using the
 RTSP server as a way to simulate various cameras out in the wild, so I would capture streams from cameras to raw h264 and then replay them using live555 media server so that we can do regression tests. If I transcode the stream it defeats the purpose, so I
 need the server to be able to play back any encoded stream.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US">>>
</span>have been successfully streamed at full framerate on a single thread in debug mode or on low end dedicated PC<span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US">Actually I found that a slow CPU drops less packets for the case I was describing, because the CPU is not capable of queueing as many
 packets to the OS in a short period of time as a fast CPU is. Therefore the buffers don’t get filled up quick enough to overflow them.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US">I’ve solved my problem for now, just thought it would be nice to contribute something back.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US">Regards,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US">Martin.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><b><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif">From:</span></b><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif"> live-devel [mailto:live-devel-bounces@ns.live555.com]
<b>On Behalf Of </b>Jeff Shanab<br>
<b>Sent:</b> 01 December 2015 01:46<br>
<b>To:</b> LIVE555 Streaming Media - development & use <live-devel@ns.live555.com><br>
<b>Subject:</b> Re: [Live-devel] RTSP Server Packet Loss<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt">I concour.<o:p></o:p></p>
</div>
<p class="MsoNormal">Here are some data points. <o:p></o:p></p>
</div>
<p class="MsoNormal">  I have been streaming 4K cameras recently one of them is actually 4000x3000 resolution.<o:p></o:p></p>
</div>
<p class="MsoNormal">  A Sony is the normal 3840 x 2150 streaming at 30 fps, It puts out 5 slices  for each frame type. I,P,B  Slices also enable us to parallelize the decoding so it can be reasonably decoded. The keyframes are indeed 250K+  
<o:p></o:p></p>
</div>
<p class="MsoNormal">  A 12MB (4000x3000) Samsung also streams at 30 fps but no slices. keyframes are large, I am not near my measurements so I cannot say but I would not be surprised if they hit 160K.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">  A Panasonic does not have slices either but it has a powerful processor on board.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<p class="MsoNormal" style="margin-bottom:12.0pt">  The Sony has larger frames than the Samsung but is by far smoother and easier to stream, less resources and better at maintaining the framerate. Rock solid timestamps not varying more than a ms, not dropping
 either. <o:p></o:p></p>
</div>
<p class="MsoNormal" style="margin-bottom:12.0pt">  All 3 of these as well as some panoramic cameras that use slices and stitch the images into a ridiculously wide view, have been successfully streamed at full framerate on a single thread in debug mode or on
 low end dedicated PC.s<o:p></o:p></p>
</div>
<p class="MsoNormal" style="margin-bottom:12.0pt">TCP has overhead and if combined with any network latency, I think it taxes the camera's internal buffer and it will drop framerate.  I was surprised by this,  really sensitive to latency.  I am guessing that
 it must hold onto packets until they are acked and if there is delay the queue is forced to hold more.<o:p></o:p></p>
</div>
<p class="MsoNormal">Measure your network latency and try UDP transport if you think you are hitting a wall. 
<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">On Mon, Nov 30, 2015 at 7:06 PM, Ross Finlayson <<a href="mailto:finlayson@live555.com" target="_blank">finlayson@live555.com</a>> wrote:<o:p></o:p></p>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm">
<p class="MsoNormal"><br>
> I have a 40 Mb/s 1920x1080 H264 source video file running at 30 frames per second. So each frame is roughly 160 kB being bursted out every 33ms.<br>
<br>
I doubt that *each* frame is 160 kBytes - presumably only the ‘key frames’.  But in any case, with key frames this large, I recommend that you reconfigure your encoder so that each key frame is encoded as a sequence of ’slice’ NAL units, rather than as a single
 NAL unit.<br>
<br>
People often have trouble streaming H.264 video with extremely large I-frames, if each I-frame gets encoded as a single NAL-unit.  The problem with this is that these NAL units get sent as a (very long) sequence of RTP packets - and if even one of these RTP
 packets gets lost, then the whole NAL (I-frame in this case) will get discarded by the receiver; see<br>
        <a href="http://lists.live555.com/pipermail/live-devel/2011-December/014190.html" target="_blank">
http://lists.live555.com/pipermail/live-devel/2011-December/014190.html</a><br>
        <a href="http://lists.live555.com/pipermail/live-devel/2012-August/015615.html" target="_blank">
http://lists.live555.com/pipermail/live-devel/2012-August/015615.html</a><br>
        <a href="http://lists.live555.com/pipermail/live-devel/2013-May/016994.html" target="_blank">
http://lists.live555.com/pipermail/live-devel/2013-May/016994.html</a><br>
        <a href="http://lists.live555.com/pipermail/live-devel/2014-June/018426.html" target="_blank">
http://lists.live555.com/pipermail/live-devel/2014-June/018426.html</a><br>
        <a href="http://lists.live555.com/pipermail/live-devel/2014-June/018432.html" target="_blank">
http://lists.live555.com/pipermail/live-devel/2014-June/018432.html</a><br>
        <a href="http://lists.live555.com/pipermail/live-devel/2014-June/018433.html" target="_blank">
http://lists.live555.com/pipermail/live-devel/2014-June/018433.html</a><br>
        <a href="http://lists.live555.com/pipermail/live-devel/2014-June/018434.html" target="_blank">
http://lists.live555.com/pipermail/live-devel/2014-June/018434.html</a><br>
        <a href="http://lists.live555.com/pipermail/live-devel/2015-March/019135.html" target="_blank">
http://lists.live555.com/pipermail/live-devel/2015-March/019135.html</a><br>
        <a href="http://lists.live555.com/pipermail/live-devel/2015-April/019228.html" target="_blank">
http://lists.live555.com/pipermail/live-devel/2015-April/019228.html</a><br>
For streaming, it’s better to encode large I-frames as a sequence of ‘slice’ NAL units.<br>
<br>
Ross Finlayson<br>
Live Networks, Inc.<br>
<a href="http://www.live555.com/" target="_blank">http://www.live555.com/</a><br>
<br>
<br>
_______________________________________________<br>
live-devel mailing list<br>
<a href="mailto:live-devel@lists.live555.com">live-devel@lists.live555.com</a><br>
<a href="http://lists.live555.com/mailman/listinfo/live-devel" target="_blank">http://lists.live555.com/mailman/listinfo/live-devel</a><o:p></o:p></p>
</blockquote>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<p class="MsoNormal"><br>
______________________________________________________________________<br>
This email has been scanned by the Symantec Email Security.cloud service.<br>
For more information please visit <a href="http://www.symanteccloud.com">http://www.symanteccloud.com</a><br>
______________________________________________________________________<o:p></o:p></p>
</div>
<br clear="both">
______________________________________________________________________<BR>
This email has been scanned by the Symantec Email Security.cloud service.<BR>
For more information please visit http://www.symanteccloud.com<BR>
______________________________________________________________________<BR>
</body>
</html>