remove unused segment cache code

このコミットが含まれているのは:
n9k 2021-07-05 04:35:26 +00:00
コミット b135b27c82
1個のファイルの変更0行の追加93行の削除

ファイルの表示

@ -7,99 +7,6 @@ SEGMENT = 'stream{number}.m4s'
CORRUPTING_SEGMENT = 'corrupt.m4s'
STREAM_TIMEOUT = HLS_TIME * 2 # consider the stream offline after this many seconds without a new segment
# TODO: uncommment this if it becomes useful
#
#CACHE_TIMEOUT = 360 # remove a segment from the cache if it is deleted and this many seconds have passed since it was first created
#
#class SegmentNotCached(Exception):
# pass
#
#
#class StreamRestarted(Exception):
# pass
#
#
#class SegmentsCache:
# def __init__(self, segments_dir, stream_start_path):
# self.segments_dir = segments_dir
# self.segments = {}
# self.lock = threading.Lock()
# self.stream_start_path = stream_start_path
# self.corrupting_segment = b''
# self.stream_start = self.get_stream_start_time(warn=True)
#
# def get_stream_start_time(self, warn=False):
# try:
# start = open(self.stream_start_path).read()
# start = int(start)
# except (FileNotFoundError, ValueError):
# start = None
# else:
# self.corrupting_segment = self.corrupting_segment or open(os.path.join(self.segments_dir, CORRUPTING_SEGMENT), 'rb').read()
# if start == None and warn:
# print('WARNING: SegmentsCache couldn\'t find when the stream started; it uses this to clear the cache of segments when the stream restarts or ends. The noscript livestream will not work unless we have the stream start time. If you haven\'t started the stream yet, ignore this warning.')
# return start
#
# def _purge(self):
# for segment in set(self.segments):
# segment_path = os.path.join(self.segments_dir, segment)
# if not os.path.isfile(segment_path) and int(time.time()) - self.segments[segment]['mtime'] >= CACHE_TIMEOUT:
# segment_info = self.segments.pop(segment)
# #print(f'Removed segment {segment} from the cache for inactivity')
#
# def read(self, segment, read_size, instance_id):
# segment_path = os.path.join(self.segments_dir, segment)
# with self.lock:
# # ensure we don't cache segments from a previous stream
# stream_start = self.get_stream_start_time()
# if stream_start == None:
# #print('Stream has already ended, clearing cache...')
# self.stream_start = stream_start
# self.segments.clear()
# elif stream_start != self.stream_start:
# #print('Stream restarted, clearing cache...')
# self.stream_start = stream_start
# self.segments.clear()
# raise StreamRestarted # this is because the video gets corrupted anyway when the stream restarts and you append segments from the new stream to segments from the old stream
# # TODO: fall back to reading from disk if we can't find the stream start time
# if self.stream_start == None:
# raise SegmentNotCached
#
# # if the segment is not cached, cache it
# if segment not in self.segments:
# segment_mtime = os.path.getmtime(segment_path)
# with open(segment_path, 'rb') as fp:
# segment_data = fp.read()
# self.segments[segment] = {'mtime': int(os.path.getmtime(segment_path)),
# 'data': segment_data,
# 'interest': {instance_id: 0}}
#
# # remove all inactive segments
# self._purge()
#
# if segment not in self.segments:
# raise SegmentUnavailable
#
# # get the chunk that was requested
# read_offset = self.segments[segment]['interest'].get(instance_id, 0)
# chunk = self.segments[segment]['data'][read_offset:read_offset + read_size]
# self.segments[segment]['interest'][instance_id] = read_offset + len(chunk)
#
# # remove this instance if it no longer wants this segment
# if read_offset + len(chunk) >= len(self.segments[segment]['data']):
# self.segments[segment]['interest'].pop(instance_id)
#
# # remove this segment if it is unwanted
# if len(self.segments[segment]['interest']) == 0:
# self.segments.pop(segment)
#
## print(' SegmentsCache.segments')
## for segment in self.segments:
## print(f'{segment}=', {k: self.segments[segment][k] for k in self.segments[segment] if k != 'data'})
#
# return chunk
def resolve_segment_offset(segment_offset=1):
'''
Returns the number of the segment at `segment_offset` (1 is most recent segment)