[FFmpeg-devel] [PATCH 10/18] avformat/hls: add support for byte-ranged segments

Anssi Hannula anssi.hannula at iki.fi
Tue Dec 31 04:13:03 CET 2013


31.12.2013 05:05, Michael Niedermayer kirjoitti:
> On Mon, Dec 30, 2013 at 01:14:24PM +0200, Anssi Hannula wrote:
>> Add support for EXT-X-BYTERANGE added in HLS protocol v4.
>>
>> Signed-off-by: Anssi Hannula <anssi.hannula at iki.fi>
>> ---
>>  libavformat/hls.c | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++--
>>  1 file changed, 61 insertions(+), 2 deletions(-)
>>
[...]
>> @@ -635,8 +671,22 @@ static int open_input(HLSContext *c, struct playlist *pls)
>>      else
>>        ret = AVERROR(ENOSYS);
>>  
>> +    /* Seek to the requested position. If this was a HTTP request,
>> +     * the offset should already be there. */
>> +    if (ret == 0) {
>> +        int seekret = ffurl_seek(pls->input, seg->url_offset, SEEK_SET);
>> +        if (seekret < 0) {
>> +            av_log(pls->parent, AV_LOG_ERROR, "Unable to seek to offset %"PRId64" of HLS segment '%s'\n", seg->url_offset, seg->url);
>> +            ret = seekret;
>> +            ffurl_close(pls->input);
>> +            pls->input = NULL;
>> +        }
>> +    }
> 
> maybe i misunderstand something but why do you need to seek if the
> offset was already provided to the protocol ?

Well, in case the protocol is not HTTP. Of course that is indeed a bit
far-fetched as it is "HTTP Live Streaming" ;)

This was useful for local testing without needing a HTTP server, though.
I'm not too heavily against removing it, but it doesn't really hurt
either so I kept it...

-- 
Anssi Hannula


More information about the ffmpeg-devel mailing list