private CameraWindow NewCameraWindow(int videoSourceIndex)
{
var oc = new objectsCamera
{
alerts = new objectsCameraAlerts(),
detector = new objectsCameraDetector
{
motionzones =
new objectsCameraDetectorZone
[0]
},
notifications = new objectsCameraNotifications(),
recorder = new objectsCameraRecorder(),
schedule = new objectsCameraSchedule { entries = new objectsCameraScheduleEntry[0] },
settings = new objectsCameraSettings { pip = new objectsCameraSettingsPip { enabled = false, config = ""}},
ftp = new objectsCameraFtp(),
savelocal = new objectsCameraSavelocal(),
id = -1,
directory = RandomString(5),
ptz = -1,
x = Convert.ToInt32(Random.NextDouble() * 100),
y = Convert.ToInt32(Random.NextDouble() * 100),
ptzschedule = new objectsCameraPtzschedule
{
active = false,
entries = new objectsCameraPtzscheduleEntry[] { }
}
};
string friendlyName = LocRm.GetString("Camera") + " " + NextCameraId;
string t = friendlyName;
int i = 1;
while (Cameras.FirstOrDefault(p => p.name == t) != null)
{
t = friendlyName + " (" + i + ")";
i++;
}
oc.name = t;
oc.flipx = oc.flipy = false;
oc.width = 320;
oc.height = 240;
oc.description = "";
oc.resolution = "320x240";
oc.newrecordingcount = 0;
oc.alerts.active = true;
oc.alerts.mode = "movement";
oc.alerts.alertoptions = "false,false";
oc.alerts.objectcountalert = 1;
oc.alerts.minimuminterval = 180;
oc.alerts.processmode = "continuous";
oc.alerts.pluginconfig = "";
oc.alerts.trigger = "";
oc.notifications.sendemail = false;
oc.notifications.sendsms = false;
oc.notifications.sendmms = false;
oc.notifications.emailgrabinterval = 0;
oc.ftp.enabled = false;
oc.ftp.port = 21;
oc.ftp.mode = 0;
oc.ftp.server = "ftp://";
oc.ftp.interval = 10;
oc.ftp.intervalnew = 10;
oc.ftp.filename = "mylivecamerafeed.jpg";
oc.ftp.ready = true;
oc.ftp.text = "www.ispyconnect.com";
oc.ftp.quality = 75;
oc.ftp.counter = 0;
oc.ftp.countermax = 20;
oc.ftp.minimumdelay = 0;
oc.savelocal.enabled = false;
oc.savelocal.mode = 0;
oc.savelocal.intervalnew = 10;
oc.savelocal.filename = "{0:yyyy-MM-dd_HH-mm-ss_fff}.jpg";
oc.savelocal.text = "www.ispyconnect.com";
oc.savelocal.quality = 75;
oc.savelocal.counter = 0;
oc.savelocal.countermax = 20;
oc.savelocal.minimumdelay = 0;
oc.schedule.active = false;
oc.settings.active = false;
oc.settings.deleteavi = true;
oc.settings.ffmpeg = Conf.FFMPEG_Camera;
oc.settings.emailaddress = EmailAddress;
oc.settings.smsnumber = MobileNumber;
oc.settings.suppressnoise = true;
oc.settings.login = "";
oc.settings.password = "";
oc.settings.useragent = "Mozilla/5.0";
oc.settings.frameinterval = 10;
oc.settings.sourceindex = videoSourceIndex;
oc.settings.micpair = -1;
oc.settings.frameinterval = 200;
oc.settings.maxframerate = 10;
oc.settings.maxframeraterecord = 10;
oc.settings.ptzautotrack = false;
oc.settings.framerate = 10;
oc.settings.timestamplocation = 1;
oc.settings.ptztimetohome = 100;
oc.settings.ptzchannel = "0";
oc.settings.timestampformatter = "FPS: {FPS} {0:G} ";
oc.settings.timestampfontsize = 10;
oc.settings.notifyondisconnect = false;
oc.settings.ptzautohomedelay = 30;
oc.settings.accessgroups = "";
oc.settings.nobuffer = true;
oc.settings.reconnectinterval = 0;
oc.settings.timestampforecolor = "255,255,255";
oc.settings.timestampbackcolor = "70,70,70";
oc.settings.timestampfont = FontXmlConverter.ConvertToString(Drawfont);
oc.settings.timestampshowback = true;
oc.settings.youtube = new objectsCameraSettingsYoutube
{
category = Conf.YouTubeDefaultCategory,
tags = "iSpy, Motion Detection, Surveillance",
@public = true
};
oc.settings.cloudprovider = new objectsCameraSettingsCloudprovider();
oc.settings.storagemanagement = new objectsCameraSettingsStoragemanagement
{
enabled = false,
maxage = 72,
maxsize = 1024
};
oc.alertevents = new objectsCameraAlertevents { entries = new objectsCameraAlerteventsEntry[] { } };
oc.settings.desktopresizeheight = 480;
oc.settings.desktopresizewidth = 640;
oc.settings.resize = false;
oc.settings.directoryIndex = Conf.MediaDirectories.First().ID;
oc.settings.vlcargs = VlcHelper.VlcInstalled ? "--rtsp-caching=100" : "";
oc.detector.recordondetect = Conf.DefaultRecordOnDetect;
oc.detector.recordonalert = Conf.DefaultRecordOnAlert;
oc.detector.keepobjectedges = false;
oc.detector.processeveryframe = 1;
oc.detector.nomovementintervalnew = oc.detector.nomovementinterval = 30;
oc.detector.movementintervalnew = oc.detector.movementinterval = 0;
oc.detector.calibrationdelay = 15;
oc.detector.color = ColorTranslator.ToHtml(Conf.TrackingColor.ToColor());
oc.detector.type = "Two Frames";
oc.detector.postprocessor = "None";
oc.detector.minsensitivity = 20;
oc.detector.maxsensitivity = 100;
oc.detector.minwidth = 20;
oc.detector.minheight = 20;
oc.detector.highlight = true;
oc.recorder.bufferseconds = 2;
oc.recorder.inactiverecord = 8;
oc.recorder.timelapse = 0;
oc.recorder.timelapseframes = 0;
oc.recorder.maxrecordtime = 900;
oc.recorder.timelapsesave = 60;
oc.recorder.quality = 8;
oc.recorder.timelapseframerate = 5;
oc.recorder.crf = true;
oc.settings.audioport = 80;
oc.settings.audiomodel = "None";
oc.settings.audioip = "";
oc.rotateMode = "RotateNoneFlipNone";
var cameraControl = new CameraWindow(oc,this) { BackColor = Conf.BackColor.ToColor() };
_pnlCameras.Controls.Add(cameraControl);
cameraControl.Location = new Point(oc.x, oc.y);
cameraControl.Size = new Size(320, 240);
cameraControl.AutoSize = true;
cameraControl.BringToFront();
SetCameraEvents(cameraControl);
if (Conf.AutoLayout)
_pnlCameras.LayoutObjects(0, 0);
cameraControl.Tag = GetControlIndex();
LayoutPanel.NeedsRedraw = true;
return cameraControl;
}