Updated view example
This commit is contained in:
parent
48908842c6
commit
6700b7f8b7
|
@ -158,7 +158,7 @@ class CameraSource(ViewSource):
|
||||||
self.camera_ready = False
|
self.camera_ready = False
|
||||||
|
|
||||||
class StreamSource(ViewSource):
|
class StreamSource(ViewSource):
|
||||||
DEFAULT_IDLE_TIMEOUT = 5
|
DEFAULT_IDLE_TIMEOUT = 10
|
||||||
|
|
||||||
def __init__(self, url=None):
|
def __init__(self, url=None):
|
||||||
self.url = url
|
self.url = url
|
||||||
|
@ -180,19 +180,18 @@ class StreamSource(ViewSource):
|
||||||
try:
|
try:
|
||||||
while max(self.last_update, self.started)+self.idle_timeout > time.time():
|
while max(self.last_update, self.started)+self.idle_timeout > time.time():
|
||||||
ret, frame = self.stream.read()
|
ret, frame = self.stream.read()
|
||||||
self.stream_ready = True
|
|
||||||
if not ret:
|
if not ret:
|
||||||
self.stream_ready = False
|
self.stream_ready = False
|
||||||
break
|
else:
|
||||||
|
self.stream_ready = True
|
||||||
if not self.frame_queue.empty():
|
if not self.frame_queue.empty():
|
||||||
if self.frame_queue.qsize() > 1:
|
if self.frame_queue.qsize() > 1:
|
||||||
try:
|
try:
|
||||||
self.frame_queue.get_nowait()
|
self.frame_queue.get_nowait()
|
||||||
except queue.Empty:
|
except queue.Empty:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
self.frame_queue.put(frame)
|
self.frame_queue.put(frame)
|
||||||
|
|
||||||
RNS.log(str(self)+" idled", RNS.LOG_DEBUG)
|
RNS.log(str(self)+" idled", RNS.LOG_DEBUG)
|
||||||
|
|
||||||
|
@ -206,7 +205,10 @@ class StreamSource(ViewSource):
|
||||||
self.start_reading()
|
self.start_reading()
|
||||||
while not self.stream_ready:
|
while not self.stream_ready:
|
||||||
time.sleep(0.2)
|
time.sleep(0.2)
|
||||||
|
if self.stream == None:
|
||||||
|
self.source_data = None
|
||||||
|
return
|
||||||
|
|
||||||
frame = self.frame_queue.get()
|
frame = self.frame_queue.get()
|
||||||
retval, buffer = cv2.imencode(".png", frame)
|
retval, buffer = cv2.imencode(".png", frame)
|
||||||
self.source_data = io.BytesIO(buffer).getvalue()
|
self.source_data = io.BytesIO(buffer).getvalue()
|
||||||
|
@ -320,4 +322,4 @@ register_view_sources()
|
||||||
|
|
||||||
# Finally, tell Sideband what class in this
|
# Finally, tell Sideband what class in this
|
||||||
# file is the actual plugin class.
|
# file is the actual plugin class.
|
||||||
plugin_class = ViewCommandPlugin
|
plugin_class = ViewCommandPlugin
|
||||||
|
|
Loading…
Reference in New Issue