This commit is contained in:
Antti Ajanki 2020-09-25 19:45:57 +08:00 committed by GitHub
commit 537e427ae8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 11 additions and 1 deletions

View File

@ -282,16 +282,26 @@ class F4mFD(FragmentFD):
bootstrap = self.ydl.urlopen(bootstrap_url).read()
return read_bootstrap_info(bootstrap)
def _retry_wait_time(self, boot_info):
fragments = boot_info[u'fragments'][0]['fragments']
durations = [frag['duration'] for frag in fragments]
if durations:
min_duration_sec = min(durations)/1000.0
return max(min(min_duration_sec/2, 5.0), 1.0)
else:
return 5.0
def _update_live_fragments(self, bootstrap_url, latest_fragment):
fragments_list = []
retries = 30
while (not fragments_list) and (retries > 0):
boot_info = self._get_bootstrap_from_url(bootstrap_url)
fragments_list = build_fragments_list(boot_info)
retry_wait = self._retry_wait_time(boot_info)
fragments_list = [f for f in fragments_list if f[1] > latest_fragment]
if not fragments_list:
# Retry after a while
time.sleep(5.0)
time.sleep(retry_wait)
retries -= 1
if not fragments_list: