HLS and keyframes
Andoni Morales
ylatuya at gmail.com
Thu Mar 6 08:23:38 PST 2014
2014-03-06 16:19 GMT+01:00 Dave Walker <dave at happybits.co>:
> The spec I'm reading seems looser than that:
> http://tools.ietf.org/html/draft-pantos-http-live-streaming-12, with
> SHOULD language instead of MUST. Particularly in the presence of the new
> byte range segments (which I know aren't supported by gstreamer yet) I
> wouldn't think it would be desirable to force every segment to have its own
> PPS/SPS.
>
> But my question is more about the behavior I'm seeing. Would you expect me
> to be getting glitches and dropouts with segments that *don't* start with a
> keyframe and PPS/SPS? Does the next stage in the pipeline treat each
> segment independently, rather than as one big continuous stream? If it's
> all one big stream I wouldn't think it would matter where the boundaries
> between segments are.
>
Without bitrate changes, each segment is pushed downstream and treated as a
continous stream. You are probably seeing this behaviour in bitrate
changes. Can you reproduce this issue using one the substreams url's
instead of the variant playlist ?
Andoni
>
> Dave
>
>
> On Thu, Mar 6, 2014 at 5:34 AM, Andoni Morales <ylatuya at gmail.com> wrote:
>
>>
>>
>>
>> 2014-03-06 4:46 GMT+01:00 Dave Walker <dave at happybits.co>:
>>
>> I'm experimenting with the HLS plugin, and have found that playback
>>> behaves much, much better if HLS segments begin with a key frame. Without
>>> key frames at the beginning I get skipping, dropped frames, and other
>>> glitches.
>>>
>>> I'm wondering why that is? I'm imagining that the HLS demuxer is simply
>>> responsible for fetching new content and providing it in a continuous
>>> stream to the next element in the pipeline. If that's the case then the
>>> exact boundaries between segments wouldn't matter.
>>>
>>> I definitely understand that for seeking, keyframes at the start of
>>> segments is crucial. But I'm just doing live streaming.
>>>
>>
>> HLS segment *must* start with a PPS/SPS + Keyframe, this is mandatory in
>> the spec. Even if you are not seeking and only doing live streaming, the
>> client will start play at any segment and therefore this segment must be
>> able to initialize the decoder correctly. You are also switching bitrates,
>> which means the segment for the new bitrate must also start with a keyframe
>> for a correct transition.
>>
>> Cheers,
>> Andoni
>>
>>>
>>> Thanks.
>>>
>>> Dave
>>>
>>> _______________________________________________
>>> gstreamer-android mailing list
>>> gstreamer-android at lists.freedesktop.org
>>> http://lists.freedesktop.org/mailman/listinfo/gstreamer-android
>>>
>>>
>>
>>
>> --
>> Andoni Morales Alastruey
>>
>> LongoMatch:The Digital Coach
>> http://www.longomatch.ylatuya.es
>>
>> _______________________________________________
>> gstreamer-android mailing list
>> gstreamer-android at lists.freedesktop.org
>> http://lists.freedesktop.org/mailman/listinfo/gstreamer-android
>>
>>
>
> _______________________________________________
> gstreamer-android mailing list
> gstreamer-android at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/gstreamer-android
>
>
--
Andoni Morales Alastruey
LongoMatch:The Digital Coach
http://www.longomatch.ylatuya.es
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/gstreamer-android/attachments/20140306/e092aaad/attachment-0001.html>
More information about the gstreamer-android
mailing list