Commit 7994c04e authored by 簡碩辰's avatar 簡碩辰

Update run.py

parent 6209b3fb
...@@ -21,7 +21,7 @@ def TryConnect(tag, host, port): ...@@ -21,7 +21,7 @@ def TryConnect(tag, host, port):
except: except:
print(Fore.RED + "[{0}][{1}][{2}:{3}]: Unknown Error".format(now, tag, host, port)) print(Fore.RED + "[{0}][{1}][{2}:{3}]: Unknown Error".format(now, tag, host, port))
return False return False
user = os.getenv("DVR_USER") user = os.getenv("DVR_USER")
pswd = os.getenv("DVR_PSWD") pswd = os.getenv("DVR_PSWD")
...@@ -34,93 +34,90 @@ ch = os.getenv("ED_CH") ...@@ -34,93 +34,90 @@ ch = os.getenv("ED_CH")
topic = "dvr/{0}/{1}".format(name, ch) topic = "dvr/{0}/{1}".format(name, ch)
while True: payload = { 'status': 0, 'host': "", 'name': "", 'ch': "", 'msg': "" }
payload = { 'status': 0, 'host': "", 'name': "", 'ch': "", 'msg': "" }
host = os.getenv("MQTT_HOST")
port = os.getenv("MQTT_PORT") host = os.getenv("MQTT_HOST")
if TryConnect('MQTT', host, port): # 測試連線到 MQTT port = os.getenv("MQTT_PORT")
client = MQTT()
client.connect(host, int(port), 3600) if TryConnect('MQTT', host, port): # 測試連線到 MQTT
client = MQTT()
host = os.getenv("ED_HOST") client.connect(host, int(port), 3600)
port = os.getenv("ED_PORT") host = os.getenv("ED_HOST")
if TryConnect('EasyDarwin', host, port): # 測試連線到 EasyDarwin port = os.getenv("ED_PORT")
payload['host'] = host
rtsp_out = "rtsp://{0}:{1}".format(host, port) if TryConnect('EasyDarwin', host, port): # 測試連線到 EasyDarwin
payload['host'] = host
host = os.getenv("DVR_HOST") rtsp_out = "rtsp://{0}:{1}".format(host, port)
port = os.getenv("DVR_PORT") host = os.getenv("DVR_HOST")
port = os.getenv("DVR_PORT")
if TryConnect('DVR', host, port): # 測試連線到 DVR
payload['name'] = name
if TryConnect('DVR', host, port): # 測試連線到 DVR payload['ch'] = ch
payload['name'] = name
rtsp_out = "{0}/{1}/{2}".format(rtsp_out, name, ch)
payload['ch'] = ch
if user == None or pswd == None:
rtsp_out = "{0}/{1}/{2}".format(rtsp_out, name, ch) rtsp_in = "rtsp://{0}".format(host)
else:
if user == None or pswd == None: rtsp_in = "rtsp://{0}:{1}@{2}".format(user, pswd, host)
rtsp_in = "rtsp://{0}".format(host)
else: rtsp_in = rtsp_in if port == "80" else "{0}:{1}".format(rtsp_in, port)
rtsp_in = "rtsp://{0}:{1}@{2}".format(user, pswd, host)
rtsp_in = "{0}/{1}".format(rtsp_in, key)
rtsp_in = rtsp_in if port == "80" else "{0}:{1}".format(rtsp_in, port)
command = [
rtsp_in = "{0}/{1}".format(rtsp_in, key) 'ffmpeg', # DVR to EasyDarwin
'-rtsp_transport', 'tcp', # 指定來源協定
command = [ '-i', rtsp_in, # 指定來源路徑
'ffmpeg', # DVR to EasyDarwin '-c:v', 'copy', # 指定輸出影像編碼
'-rtsp_transport', 'tcp', # 指定來源協定 '-an', # 指定輸出聲音編碼 (an: 無聲音)
'-i', rtsp_in, # 指定來源路徑 '-rtsp_transport', 'tcp', # 指定輸出協定
'-c:v', 'copy', # 指定輸出影像編碼 '-f','rtsp', rtsp_out, # 指定輸出格式與路徑
'-an', # 指定輸出聲音編碼 (an: 無聲音) ]
'-rtsp_transport', 'tcp', # 指定輸出協定
'-f','rtsp', rtsp_out, # 指定輸出格式與路徑 p = SP.Popen(command)
]
stream = cv.VideoCapture(' '.join(command))
p = SP.Popen(command)
isOpened = stream.isOpened()
stream.release()
try:
if isOpened:
payload['status'] = 1
try: payload['msg'] = "Ready to Transfer."
stream = cv.VideoCapture(' '.join(command))
if stream.isOpened(): client.publish(topic, json.dumps(payload), 1)
payload['status'] = 1
payload['msg'] = "Ready to Transfer."
client.publish(topic, json.dumps(payload), 1)
p.communicate() p.communicate()
else: else:
stream.release()
payload['status'] = 0
payload['msg'] = "Popen is closed."
client.publish(topic, json.dumps(payload), 1)
except Exception as e:
payload['status'] = 0 payload['status'] = 0
payload['msg'] = e payload['msg'] = "Popen is broke."
client.publish(topic, json.dumps(payload), 1) client.publish(topic, json.dumps(payload), 1)
else:
payload['status'] = 0 payload['status'] = 0
payload['msg'] = "Connect to DVR is refused." payload['msg'] = "Popen is closed."
client.publish(topic, json.dumps(payload), 1) p.kill()
except Exception as e:
payload['msg'] = e
else: else:
payload['status'] = 0 payload['msg'] = "Connect to DVR is refused."
else:
payload['msg'] = "Connect to EasyDarwin is refused." payload['msg'] = "Connect to EasyDarwin is refused."
client.publish(topic, json.dumps(payload), 1) client.publish(topic, json.dumps(payload), 1)
\ No newline at end of file \ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment