CC-1665: Scheduled stream rebroadcasting and recording
-ability to schedule streams without a 5 second pre-buffer
This commit is contained in:
parent
99437147dc
commit
a08b31dd39
2 changed files with 13 additions and 1 deletions
|
@ -436,6 +436,9 @@ class PypoFetch(Thread):
|
||||||
media_item['dst'] = dst
|
media_item['dst'] = dst
|
||||||
media_item['file_ready'] = False
|
media_item['file_ready'] = False
|
||||||
media_filtered[key] = media_item
|
media_filtered[key] = media_item
|
||||||
|
else if media_item['type'] == 'stream':
|
||||||
|
#flag to indicate whether the stream started prebuffering
|
||||||
|
media_item['prebuffer_start'] = False
|
||||||
|
|
||||||
self.media_prepare_queue.put(copy.copy(media_filtered))
|
self.media_prepare_queue.put(copy.copy(media_filtered))
|
||||||
except Exception, e: self.logger.error("%s", e)
|
except Exception, e: self.logger.error("%s", e)
|
||||||
|
|
|
@ -389,12 +389,17 @@ class PypoPush(Thread):
|
||||||
elif media_item['type'] == 'stream_buffer_start':
|
elif media_item['type'] == 'stream_buffer_start':
|
||||||
self.start_web_stream_buffer(media_item)
|
self.start_web_stream_buffer(media_item)
|
||||||
elif media_item['type'] == "stream":
|
elif media_item['type'] == "stream":
|
||||||
|
if not media_item['prebuffer_started']:
|
||||||
|
#this is called if the stream wasn't scheduled sufficiently ahead of time
|
||||||
|
#so that the prebuffering stage could take effect. Let's do the prebuffering now.
|
||||||
|
self.start_web_stream_buffer(media_item)
|
||||||
self.start_web_stream(media_item)
|
self.start_web_stream(media_item)
|
||||||
elif media_item['type'] == "stream_end":
|
elif media_item['type'] == "stream_end":
|
||||||
self.stop_web_stream(media_item)
|
self.stop_web_stream(media_item)
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
self.logger.error('Pypo Push Exception: %s', e)
|
self.logger.error('Pypo Push Exception: %s', e)
|
||||||
|
|
||||||
|
|
||||||
def start_web_stream_buffer(self, media_item):
|
def start_web_stream_buffer(self, media_item):
|
||||||
try:
|
try:
|
||||||
self.telnet_lock.acquire()
|
self.telnet_lock.acquire()
|
||||||
|
@ -410,6 +415,8 @@ class PypoPush(Thread):
|
||||||
|
|
||||||
tn.write("exit\n")
|
tn.write("exit\n")
|
||||||
self.logger.debug(tn.read_all())
|
self.logger.debug(tn.read_all())
|
||||||
|
|
||||||
|
media_item['prebuffer_started'] = True
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
self.logger.error(str(e))
|
self.logger.error(str(e))
|
||||||
finally:
|
finally:
|
||||||
|
@ -425,6 +432,8 @@ class PypoPush(Thread):
|
||||||
msg = 'streams.scheduled_play_start\n'
|
msg = 'streams.scheduled_play_start\n'
|
||||||
tn.write(msg)
|
tn.write(msg)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
msg = 'dynamic_source.output_start\n'
|
msg = 'dynamic_source.output_start\n'
|
||||||
self.logger.debug(msg)
|
self.logger.debug(msg)
|
||||||
tn.write(msg)
|
tn.write(msg)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue