提交 100610b8 authored 作者: zw.wang's avatar zw.wang

chore: influxdb 保留策略和ffmpeg日志

上级 2540f8af
......@@ -35,7 +35,7 @@ def event_rcv():
'time': dateutil.parser.parse(event['happenTime'])
})
influxdb.write_points(events)
influxdb.write_points(events, retention_policy='one_week')
return jsonify({
'code': 200
......
......@@ -30,11 +30,12 @@ class InfluxDB(object):
def query(self, query_string):
return self._influxdb.query(query_string)
def write_points(self, points):
def write_points(self, points, retention_policy=None):
if not points:
return
return self._influxdb.write_points(points)
return self._influxdb.write_points(
points, retention_policy=retention_policy)
def create_database(self, database=None):
if not database:
......
......@@ -3,51 +3,6 @@ import subprocess
from intelab_python_sdk.logger import log
class RecordThread:
def __init__(self, stream):
self.stream = stream
self.shell = [
'ffmpeg',
'-y',
'-v', 'info',
'-i', '-',
'-c', 'copy',
'-f', 'mp4'
]
def run(self, stream_url, out_file):
log_buffer = ''
cmd = self.shell + [out_file]
process = subprocess.Popen(cmd, stdout=subprocess.PIPE, stdin=subprocess.PIPE)
out, err = process.communicate(stream_url)
return_code = process.poll()
while return_code is None:
line = process.stdout.readline(81)
log_buffer += line.decode()
# 换行打印日志
if r'\n' in str(line) or r'\r' in str(line):
# 处理日志中\r的超过81字符的日志长度
log_buffer = log_buffer.split('\r')
if len(log_buffer) > 1:
log_buffer, stdout = '\n'.join(log_buffer[:-1]), log_buffer[-1]
else:
log_buffer = ''.join(log_buffer)
stdout = ''
if 'Non-monotonous DTS' in log_buffer:
# 屏蔽日志中'Non-monotonous DTS in output stream:' 的告警信息
log_buffer = ''
log.debug('log: %s', log_buffer)
log_buffer = stdout
return_code = process.poll()
return out_file
def record_thread(stream_url, out_file):
cmd = [
......@@ -62,7 +17,9 @@ def record_thread(stream_url, out_file):
]
log_buffer = ''
process = subprocess.Popen(cmd, stdout=subprocess.PIPE, stdin=None)
process = subprocess.Popen(cmd, stdout=subprocess.PIPE,
stdin=None,
stderr=subprocess.STDOUT)
return_code = process.poll()
while return_code is None:
line = process.stdout.readline(81)
......@@ -77,11 +34,12 @@ def record_thread(stream_url, out_file):
else:
log_buffer = ''.join(log_buffer)
stdout = ''
if 'Non-monotonous DTS' in log_buffer:
if 'DTS' in log_buffer:
# 屏蔽日志中'Non-monotonous DTS in output stream:' 的告警信息
log_buffer = ''
if log_buffer:
log.debug('ffmpeg-log: %s', log_buffer.strip())
log.debug('ffmpeg-log: %s', log_buffer)
log_buffer = stdout
return_code = process.poll()
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论