Fixed how we parse file duration.
This commit is contained in:
parent
28989c4cba
commit
33a23c7868
1 changed files with 17 additions and 2 deletions
|
|
@ -33,7 +33,11 @@ class M3u8:
|
||||||
metadata = FFProbe(realFile)
|
metadata = FFProbe(realFile)
|
||||||
|
|
||||||
# video duration.
|
# video duration.
|
||||||
duration: float = float(metadata.streams[0].duration)
|
|
||||||
|
if not 'Duration' in metadata.metadata:
|
||||||
|
raise Exception(f"Unable to get {realFile} duration.")
|
||||||
|
|
||||||
|
duration: float = self.parseDuration(metadata.metadata.get('Duration'))
|
||||||
|
|
||||||
m3u8 = "#EXTM3U\n"
|
m3u8 = "#EXTM3U\n"
|
||||||
m3u8 += "#EXT-X-VERSION:3\n"
|
m3u8 += "#EXT-X-VERSION:3\n"
|
||||||
|
|
@ -67,10 +71,21 @@ class M3u8:
|
||||||
m3u8 += f"{self.config.url_prefix}segments/{i}/{file}"
|
m3u8 += f"{self.config.url_prefix}segments/{i}/{file}"
|
||||||
if len(segmentParams) > 0:
|
if len(segmentParams) > 0:
|
||||||
m3u8 += '?'+'&'.join([f"{key}={value}" for key,
|
m3u8 += '?'+'&'.join([f"{key}={value}" for key,
|
||||||
value in segmentParams.items()])
|
value in segmentParams.items()])
|
||||||
m3u8 += "\n"
|
m3u8 += "\n"
|
||||||
|
|
||||||
m3u8 += "#EXT-X-ENDLIST\n"
|
m3u8 += "#EXT-X-ENDLIST\n"
|
||||||
|
|
||||||
# m3u8 = f"{json.dumps(metadata,indent=2,ensure_ascii=False,default=lambda o: o.__dict__)}\n{m3u8}"
|
# m3u8 = f"{json.dumps(metadata,indent=2,ensure_ascii=False,default=lambda o: o.__dict__)}\n{m3u8}"
|
||||||
return m3u8
|
return m3u8
|
||||||
|
|
||||||
|
def parseDuration(self, duration: str):
|
||||||
|
if duration.find(':') > -1:
|
||||||
|
duration = duration.split(':')
|
||||||
|
duration.reverse()
|
||||||
|
duration = sum([float(duration[i]) * (60 ** i)
|
||||||
|
for i in range(len(duration))])
|
||||||
|
else:
|
||||||
|
duration = float(duration)
|
||||||
|
|
||||||
|
return duration
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue