<br><br><div class="gmail_quote">On Sun, Jan 2, 2011 at 1:54 PM, Andoni Morales <span dir="ltr">&lt;<a href="mailto:ylatuya@gmail.com">ylatuya@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
2010/12/31 David Zhao &lt;<a href="mailto:david@davidzhao.com">david@davidzhao.com</a>&gt;:<br>
<div class="im">&gt; Thanks David! That&#39;s exactly what I was looking for.<br>
&gt;<br>
&gt; On Thu, Dec 30, 2010 at 11:23 PM, David Schleef &lt;<a href="mailto:ds@entropywave.com">ds@entropywave.com</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; On Thu, Dec 30, 2010 at 08:35:21PM -0800, David Zhao wrote:<br>
&gt;&gt; &gt; Hello,<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; I&#39;m trying to build a GStreamer plugin that would produce segments of<br>
&gt;&gt; &gt; MPEGTS<br>
&gt;&gt; &gt; files, each with a fixed duration. This is to create TS segments for the<br>
&gt;&gt; &gt; Apple HTTP live streaming protocol. I&#39;m fairly new to developing for<br>
&gt;&gt; &gt; GStreamer and have a basic understanding of how it works.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; The approach I had in mind is to create a plugin that includes both<br>
&gt;&gt; &gt; mpegtsmux and filesink. Within that plugin, it could produce individual<br>
&gt;&gt; &gt; ts<br>
&gt;&gt; &gt; files when certain duration is accumulated.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Is this feasible? Is there another way to do this without having to<br>
&gt;&gt; &gt; replicate code that&#39;s already in mpegtsmux and filesink?<br>
&gt;&gt;<br>
&gt;&gt; gst-launch ... ! mpegtsmux ! multifilesink next-file=key-frame \<br>
&gt;&gt;    location=%05d.ts<br>
<br>
</div>That&#39;s probably the quickest way to produce segments for testing<br>
purpose but these fragments wouldn&#39;t follow the spec&#39;s<br>
recommendations[1].<br>
<br>
&quot; Transport Stream files MUST contain a single MPEG-2 Program.  There<br>
   SHOULD be a Program Association Table and a Program Map Table at the<br>
   start of each file.  A file that contains video SHOULD have at least<br>
   one key frame and enough information to completely initialize a video<br>
   decoder.&quot;<br>
<br>
A client can join the stream at any moment (downloading any of the<br>
available segments), so each segment must be independently decodable,<br>
which means you need to start each fragment with a PAT table, followed<br>
with a PMT table and starting with a keyframe.<br></blockquote><div><br></div><div>Thanks for the clarification here. Looks like the &quot;correct&quot; way to implement this is still to create a special purposed mpegts muxer that will write the PAT/PMT tables at the beginning of each TS segment. </div>
<div><br></div><div>I noticed that the protocol says &quot;SHOULD&quot; instead of &quot;MUST&quot;, perhaps the current implementation of iOS treat those tables as optional?</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

<br>
Andoni<br>
<br>
[1]<a href="http://tools.ietf.org/html/draft-pantos-http-live-streaming-05#page-4" target="_blank">http://tools.ietf.org/html/draft-pantos-http-live-streaming-05#page-4</a><br>
<div class="im">&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; David<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; ------------------------------------------------------------------------------<br>
&gt;&gt; Learn how Oracle Real Application Clusters (RAC) One Node allows customers<br>
&gt;&gt; to consolidate database storage, standardize their database environment,<br>
&gt;&gt; and,<br>
&gt;&gt; should the need arise, upgrade to a full multi-node Oracle RAC database<br>
&gt;&gt; without downtime or disruption<br>
&gt;&gt; <a href="http://p.sf.net/sfu/oracle-sfdevnl" target="_blank">http://p.sf.net/sfu/oracle-sfdevnl</a><br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; gstreamer-devel mailing list<br>
&gt;&gt; <a href="mailto:gstreamer-devel@lists.sourceforge.net">gstreamer-devel@lists.sourceforge.net</a><br>
&gt;&gt; <a href="https://lists.sourceforge.net/lists/listinfo/gstreamer-devel" target="_blank">https://lists.sourceforge.net/lists/listinfo/gstreamer-devel</a><br>
&gt;<br>
&gt;<br>
&gt; ------------------------------------------------------------------------------<br>
&gt; Learn how Oracle Real Application Clusters (RAC) One Node allows customers<br>
&gt; to consolidate database storage, standardize their database environment,<br>
&gt; and,<br>
&gt; should the need arise, upgrade to a full multi-node Oracle RAC database<br>
&gt; without downtime or disruption<br>
&gt; <a href="http://p.sf.net/sfu/oracle-sfdevnl" target="_blank">http://p.sf.net/sfu/oracle-sfdevnl</a><br>
&gt; _______________________________________________<br>
&gt; gstreamer-devel mailing list<br>
&gt; <a href="mailto:gstreamer-devel@lists.sourceforge.net">gstreamer-devel@lists.sourceforge.net</a><br>
&gt; <a href="https://lists.sourceforge.net/lists/listinfo/gstreamer-devel" target="_blank">https://lists.sourceforge.net/lists/listinfo/gstreamer-devel</a><br>
&gt;<br>
&gt;<br>
<br>
<br>
<br>
</div><font color="#888888">--<br>
Andoni Morales Alastruey<br>
<br>
LongoMatch:The Digital Coach<br>
<a href="http://www.longomatch.ylatuya.es" target="_blank">http://www.longomatch.ylatuya.es</a><br>
</font><div><div></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>