mirror of https://git.ffmpeg.org/ffmpeg.git
libavformat/hls: Reset options after open_url_keepalive() fails
open_url_keepalive() unsets the options when it uses them, this includes the offsets for the Range: header. When using the HLS tag #EXT-X-BYTERANGE along with multiple files, the range options must be preserved after open_url_keepalive() returns EOF so that the new file can be opened. Failure to do this results in ignoring the #EXT-X-BYTERANGE tag and reading the wrong bytes of the file. To fix it, reset the options before calling io_open() following open_url_keepalive() reaching EOF Reviewed-by: Steven Liu <liuqi05@kuaishou.com>
This commit is contained in:
parent
8e77624e84
commit
63344337f9
|
@ -677,6 +677,8 @@ static int open_url(AVFormatContext *s, AVIOContext **pb, const char *url,
|
||||||
av_log(s, AV_LOG_WARNING,
|
av_log(s, AV_LOG_WARNING,
|
||||||
"keepalive request failed for '%s' with error: '%s' when opening url, retrying with new connection\n",
|
"keepalive request failed for '%s' with error: '%s' when opening url, retrying with new connection\n",
|
||||||
url, av_err2str(ret));
|
url, av_err2str(ret));
|
||||||
|
av_dict_copy(&tmp, *opts, 0);
|
||||||
|
av_dict_copy(&tmp, opts2, 0);
|
||||||
ret = s->io_open(s, pb, url, AVIO_FLAG_READ, &tmp);
|
ret = s->io_open(s, pb, url, AVIO_FLAG_READ, &tmp);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in New Issue