From: Calin Crisan Date: Mon, 12 Sep 2016 19:22:40 +0000 (+0300) Subject: Merge branch 'master' into masksupport X-Git-Url: http://www.vanbest.org/gitweb/?a=commitdiff_plain;h=6b559263e309a4efa28f836a6c2cad6a64efd06d;p=motioneye-debian Merge branch 'master' into masksupport --- 6b559263e309a4efa28f836a6c2cad6a64efd06d diff --cc motioneye/config.py index 0b9ec4d,bfbafec..4b82ad9 --- a/motioneye/config.py +++ b/motioneye/config.py @@@ -843,27 -854,16 +857,27 @@@ def motion_camera_ui_to_dict(ui, old_co elif recording_mode == 'continuous': data['emulate_motion'] = True - if proto == 'v4l2': - max_val = data['width'] * data['height'] * data['framerate'] - - else: # assume a netcam image size of 640x480, since we have no means to know it at this point - max_val = 640 * 480 * data['framerate'] - - max_val = min(max_val, 9999999) + data['ffmpeg_video_codec'] = ui['movie_format'] + q = int(ui['movie_quality']) + if data['ffmpeg_video_codec'] in _EXPONENTIAL_QUALITY_CODECS: + vbr = max(1, _MAX_FFMPEG_VARIABLE_BITRATE * (1 - math.log(max(1, q * _EXPONENTIAL_QUALITY_FACTOR), _EXPONENTIAL_QUALITY_FACTOR * 100))) + + else: + vbr = 1 + (_MAX_FFMPEG_VARIABLE_BITRATE - 1) / 100.0 * (100 - q) - data['ffmpeg_bps'] = int(int(ui['movie_quality']) * max_val / 100) + data['ffmpeg_variable_bitrate'] = int(vbr) + # motion detection + if ui['mask']: + if ui['mask_type'] == 'smart': + data['smart_mask_speed'] = 10 - int(ui['smart_mask_slugginess']) + + elif ui['mask_type'] == 'editable': + data['mask_file'] = utils.build_editable_mask_file(ui['editable_mask']) + + else: + data['mask_file'] = ui['mask_file'] + # working schedule if ui['working_schedule']: data['@working_schedule'] = ( diff --cc motioneye/utils.py index d3f0765,d9258fe..50763e7 --- a/motioneye/utils.py +++ b/motioneye/utils.py @@@ -23,13 -23,12 +23,15 @@@ import loggin import os import re import socket +import struct + import sys import time import urllib + import urllib2 import urlparse +from PIL import Image, ImageDraw + from tornado.httpclient import AsyncHTTPClient, HTTPRequest from tornado.iostream import IOStream from tornado.ioloop import IOLoop @@@ -719,48 -766,17 +769,64 @@@ def build_digest_header(method, url, us return 'Digest %s' % (base) + def urlopen(*args, **kwargs): + if sys.version_info >= (2, 7, 9) and not settings.VALIDATE_CERTS: + # ssl certs are not verified by default + # in versions prior to 2.7.9 + + import ssl + + ctx = ssl.create_default_context() + ctx.check_hostname = False + ctx.verify_mode = ssl.CERT_NONE + + kwargs.setdefault('context', ctx) + + return urllib2.urlopen(*args, **kwargs) ++ ++ +def build_editable_mask_file(editable_mask): + width = editable_mask[0] + height = editable_mask[1] + nx = editable_mask[2] + ny = editable_mask[3] + lines = editable_mask[4:] + + data = struct.pack('