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

Update run.py

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