mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
lavf/hls: add http_seekable option for HTTP partial requests
Add http_seekable option for HTTP partial requests, when The EXT-X-BYTERANGE tag indicates that a Media Segment is a sub-range of the resource identified by its URI, we can use HTTP partial requests to get the Media Segment. Reviewed-by: Steven Liu <lq@chinaffmpeg.org> Signed-off-by: Jun Zhao <barryjzhao@tencent.com>
This commit is contained in:
parent
af3ddd581f
commit
5e829262a6
@ -338,6 +338,10 @@ Enabled by default.
|
|||||||
@item http_multiple
|
@item http_multiple
|
||||||
Use multiple HTTP connections for downloading HTTP segments.
|
Use multiple HTTP connections for downloading HTTP segments.
|
||||||
Enabled by default for HTTP/1.1 servers.
|
Enabled by default for HTTP/1.1 servers.
|
||||||
|
|
||||||
|
@item http_seekable
|
||||||
|
Use HTTP partial requests for downloading HTTP segments.
|
||||||
|
0 = disable, 1 = enable, -1 = auto, Default is auto.
|
||||||
@end table
|
@end table
|
||||||
|
|
||||||
@section image2
|
@section image2
|
||||||
|
@ -207,6 +207,7 @@ typedef struct HLSContext {
|
|||||||
int max_reload;
|
int max_reload;
|
||||||
int http_persistent;
|
int http_persistent;
|
||||||
int http_multiple;
|
int http_multiple;
|
||||||
|
int http_seekable;
|
||||||
AVIOContext *playlist_pb;
|
AVIOContext *playlist_pb;
|
||||||
} HLSContext;
|
} HLSContext;
|
||||||
|
|
||||||
@ -1796,8 +1797,10 @@ static int hls_read_header(AVFormatContext *s)
|
|||||||
if ((ret = save_avio_options(s)) < 0)
|
if ((ret = save_avio_options(s)) < 0)
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
||||||
/* Some HLS servers don't like being sent the range header */
|
/* XXX: Some HLS servers don't like being sent the range header,
|
||||||
av_dict_set(&c->avio_opts, "seekable", "0", 0);
|
in this case, need to setting http_seekable = 0 to disable
|
||||||
|
the range header */
|
||||||
|
av_dict_set_int(&c->avio_opts, "seekable", c->http_seekable, 0);
|
||||||
|
|
||||||
if ((ret = parse_playlist(c, s->url, NULL, s->pb)) < 0)
|
if ((ret = parse_playlist(c, s->url, NULL, s->pb)) < 0)
|
||||||
goto fail;
|
goto fail;
|
||||||
@ -2311,6 +2314,8 @@ static const AVOption hls_options[] = {
|
|||||||
OFFSET(http_persistent), AV_OPT_TYPE_BOOL, {.i64 = 1}, 0, 1, FLAGS },
|
OFFSET(http_persistent), AV_OPT_TYPE_BOOL, {.i64 = 1}, 0, 1, FLAGS },
|
||||||
{"http_multiple", "Use multiple HTTP connections for fetching segments",
|
{"http_multiple", "Use multiple HTTP connections for fetching segments",
|
||||||
OFFSET(http_multiple), AV_OPT_TYPE_BOOL, {.i64 = -1}, -1, 1, FLAGS},
|
OFFSET(http_multiple), AV_OPT_TYPE_BOOL, {.i64 = -1}, -1, 1, FLAGS},
|
||||||
|
{"http_seekable", "Use HTTP partial requests, 0 = disable, 1 = enable, -1 = auto",
|
||||||
|
OFFSET(http_seekable), AV_OPT_TYPE_BOOL, { .i64 = -1}, -1, 1, FLAGS},
|
||||||
{NULL}
|
{NULL}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user