提交 3caa6fab authored 作者: blu's avatar blu

new upload script with /mnt/sd card as backup

上级 7b32b236
......@@ -6,5 +6,5 @@
</script>
<video id="example_video_1" class="video-js vjs-default-skin" controls preload="true" width="640" height="320"
data-setup='{"autoplay": "true"}'>
<source src="rtmp://qz.videostreaming.ilabservice.cloud:1935/hls/D72158932" type='flv' />
<source src="./output.mp4" type='mp4' />
</video>
\ No newline at end of file
import requests, glob, os, json, socket, datetime, time, sys
import pdb
import traceback
FILE_PATH = os.getenv('FILE_PATH', '/var/data/evsuits/failed_events/')
VIDEO_PATH = os.getenv('VIDEO_PATH', '/root/work/opencv-pocs/opencv-motion-detect/')
API_ADDR=os.getenv('API_ADDR', 'http://evcloudsvc.ilabservice.cloud:10009/upload/evtvideos/')
#{"fileNames":["slices/237808840_3/20200304_124406.mp4","slices/237808840_3/20200304_124437.mp4"],"params":{"cameraId":"237808840","endTime":"1583297091","headOffset":"0","startTime":"1583297066","tailOffset":"0","type":"event"}}
def upload_file(file):
success = False
fileNames = []
try:
with open(file) as jf:
data = json.load(jf)
print("data: ", data, file)
fileNames = ["{}{}".format(VIDEO_PATH, x) for x in data["fileNames"]]
blob = [('files', open(f, 'rb')) for f in fileNames]
url = API_ADDR + data["params"]["cameraId"] + '?' + '&'.join(["{}={}".format(k,v) for k,v in data["params"].items()])
r = requests.post(url, files = blob, timeout = 60*10)
print(file, fileNames, r.status_code, r.text)
if(r.status_code == 200 and ('code' in r.json()) and r.json()['code'] == 0):
success = True
if success:
os.remove(file)
# for f in fileNames:
# try:
# os.remove(f)
# except:
# pass
except requests.exceptions.ConnectionError as e:
print ("Error Connecting:",e)
except requests.exceptions.Timeout as e:
print ("Timeout Error:",e)
except requests.exceptions.RequestException as e:
print ("Request Exception",e)
except IOError as e:
success = True
# file io error
os.remove(file)
print("IOError Exception:", e)
except Exception as e:
print("General Exception:", e)
return success
def list_files(dir):
out = glob.glob("{}/*.json".format(dir))
out.sort(key=os.path.getmtime)
# prevent memory overflow
if len(out) > 5:
out = out[:5]
return out
if __name__ == "__main__":
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('localhost', 45431))
files = list_files(FILE_PATH)
for f in files:
now = time.mktime(datetime.datetime.now().timetuple())
mts = os.path.getmtime(f)
# defer those files may still in recording
if now - mts < 35:
continue
res = upload_file(f)
if res:
continue
else:
# TODO: report
break
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论