<br><br><div class="gmail_quote">On Sun, Jan 2, 2011 at 7:28 PM, David Schleef <span dir="ltr">&lt;<a href="mailto:ds@entropywave.com">ds@entropywave.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div class="im">On Sun, Jan 02, 2011 at 04:27:25PM -0800, David Zhao wrote:<br>
&gt; On Sun, Jan 2, 2011 at 1:54 PM, Andoni Morales &lt;<a href="mailto:ylatuya@gmail.com">ylatuya@gmail.com</a>&gt; wrote:<br>
&gt;<br>
&gt; &gt; 2010/12/31 David Zhao &lt;<a href="mailto:david@davidzhao.com">david@davidzhao.com</a>&gt;:<br>
&gt; &gt; &gt; Thanks David! That&#39;s exactly what I was looking for.<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; On Thu, Dec 30, 2010 at 11:23 PM, David Schleef &lt;<a href="mailto:ds@entropywave.com">ds@entropywave.com</a>&gt;<br>
</div><div class="im">&gt; &gt; &gt;&gt; gst-launch ... ! mpegtsmux ! multifilesink next-file=key-frame \<br>
&gt; &gt; &gt;&gt;    location=%05d.ts<br>
&gt; &gt;<br>
&gt; &gt; That&#39;s probably the quickest way to produce segments for testing<br>
&gt; &gt; purpose but these fragments wouldn&#39;t follow the spec&#39;s<br>
&gt; &gt; recommendations[1].<br>
&gt; &gt;<br>
&gt; &gt; &quot; Transport Stream files MUST contain a single MPEG-2 Program.  There<br>
&gt; &gt;   SHOULD be a Program Association Table and a Program Map Table at the<br>
&gt; &gt;   start of each file.  A file that contains video SHOULD have at least<br>
&gt; &gt;   one key frame and enough information to completely initialize a video<br>
&gt; &gt;   decoder.&quot;<br>
&gt; &gt;<br>
&gt; &gt; A client can join the stream at any moment (downloading any of the<br>
&gt; &gt; available segments), so each segment must be independently decodable,<br>
&gt; &gt; which means you need to start each fragment with a PAT table, followed<br>
&gt; &gt; with a PMT table and starting with a keyframe.<br>
&gt; &gt;<br>
&gt;<br>
&gt; Thanks for the clarification here. Looks like the &quot;correct&quot; way to implement<br>
&gt; this is still to create a special purposed mpegts muxer that will write the<br>
&gt; PAT/PMT tables at the beginning of each TS segment.<br>
&gt;<br>
&gt; I noticed that the protocol says &quot;SHOULD&quot; instead of &quot;MUST&quot;, perhaps the<br>
&gt; current implementation of iOS treat those tables as optional?<br>
<br>
<br>
</div>It helps to have this commit:<br>
<br>
commit 6ab508dfa56f92c86c3b379b6cfe4ff28f2551e4<br>
Author: David Schleef &lt;<a href="mailto:ds@schleef.org">ds@schleef.org</a>&gt;<br>
Date:   Sun Jan 2 19:19:27 2011 -0800<br>
<br>
    multifilesink: send stream headers in key-frame mode<br>
<br>
However, the problems with the above pipeline are greatly exaggerated.<br>
In the worst case (without the patch), clients will start the video<br>
one keyframe late.<br>
<br>
The *actual* problems with using mpegtsmux ! multifilesink are that it<br>
doesn&#39;t write out the .m3u8 file for you, and that you have little<br>
control over keyframe placement.<br>
<div><div></div><div class="h5"><br></div></div></blockquote><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div><div class="h5">
<br>
David<br>
<br></div></div></blockquote><div><br></div><div><br></div><div><meta charset="utf-8"><div>I&#39;ve tested ts files generated by multifilesink (even before this commit) and it seems to work fine when it&#39;s not switching streams. When it does switch between variants, this commit may become necessary. I&#39;ll give this a shot, will report back with results.</div>
<div><br></div><div>Thanks!</div></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div><div class="h5">
<br>
------------------------------------------------------------------------------<br>
Learn how Oracle Real Application Clusters (RAC) One Node allows customers<br>
to consolidate database storage, standardize their database environment, and,<br>
should the need arise, upgrade to a full multi-node Oracle RAC database<br>
without downtime or disruption<br>
<a href="http://p.sf.net/sfu/oracle-sfdevnl" target="_blank">http://p.sf.net/sfu/oracle-sfdevnl</a><br>
_______________________________________________<br>
gstreamer-devel mailing list<br>
<a href="mailto:gstreamer-devel@lists.sourceforge.net">gstreamer-devel@lists.sourceforge.net</a><br>
<a href="https://lists.sourceforge.net/lists/listinfo/gstreamer-devel" target="_blank">https://lists.sourceforge.net/lists/listinfo/gstreamer-devel</a><br>
</div></div></blockquote></div><br>