Compare commits
2 Commits
9abc348dd3
...
60a30fecb7
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
60a30fecb7 | ||
|
|
a12aff10cc |
43
MainForm.Designer.cs
generated
43
MainForm.Designer.cs
generated
@@ -36,9 +36,11 @@
|
|||||||
discoveryToolStripMenuItem = new ToolStripMenuItem();
|
discoveryToolStripMenuItem = new ToolStripMenuItem();
|
||||||
startToolStripMenuItem = new ToolStripMenuItem();
|
startToolStripMenuItem = new ToolStripMenuItem();
|
||||||
stopToolStripMenuItem = new ToolStripMenuItem();
|
stopToolStripMenuItem = new ToolStripMenuItem();
|
||||||
forceReloadToolStripMenuItem = new ToolStripMenuItem();
|
forceRediscoverToolStripMenuItem = new ToolStripMenuItem();
|
||||||
saveToolStripMenuItem = new ToolStripMenuItem();
|
saveToolStripMenuItem = new ToolStripMenuItem();
|
||||||
loadToolStripMenuItem = new ToolStripMenuItem();
|
loadToolStripMenuItem = new ToolStripMenuItem();
|
||||||
|
toolStripSeparator1 = new ToolStripSeparator();
|
||||||
|
toolStripStatusDisco = new ToolStripStatusLabel();
|
||||||
statusStripMain.SuspendLayout();
|
statusStripMain.SuspendLayout();
|
||||||
menuStrip1.SuspendLayout();
|
menuStrip1.SuspendLayout();
|
||||||
SuspendLayout();
|
SuspendLayout();
|
||||||
@@ -56,7 +58,7 @@
|
|||||||
//
|
//
|
||||||
// statusStripMain
|
// statusStripMain
|
||||||
//
|
//
|
||||||
statusStripMain.Items.AddRange(new ToolStripItem[] { toolStripStatusLabel });
|
statusStripMain.Items.AddRange(new ToolStripItem[] { toolStripStatusLabel, toolStripStatusDisco });
|
||||||
statusStripMain.Location = new Point(0, 428);
|
statusStripMain.Location = new Point(0, 428);
|
||||||
statusStripMain.Name = "statusStripMain";
|
statusStripMain.Name = "statusStripMain";
|
||||||
statusStripMain.Size = new Size(800, 22);
|
statusStripMain.Size = new Size(800, 22);
|
||||||
@@ -79,7 +81,7 @@
|
|||||||
//
|
//
|
||||||
// discoveryToolStripMenuItem
|
// discoveryToolStripMenuItem
|
||||||
//
|
//
|
||||||
discoveryToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { startToolStripMenuItem, stopToolStripMenuItem, forceReloadToolStripMenuItem, saveToolStripMenuItem, loadToolStripMenuItem });
|
discoveryToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { startToolStripMenuItem, stopToolStripMenuItem, forceRediscoverToolStripMenuItem, toolStripSeparator1, saveToolStripMenuItem, loadToolStripMenuItem });
|
||||||
discoveryToolStripMenuItem.Name = "discoveryToolStripMenuItem";
|
discoveryToolStripMenuItem.Name = "discoveryToolStripMenuItem";
|
||||||
discoveryToolStripMenuItem.Size = new Size(70, 20);
|
discoveryToolStripMenuItem.Size = new Size(70, 20);
|
||||||
discoveryToolStripMenuItem.Text = "Discovery";
|
discoveryToolStripMenuItem.Text = "Discovery";
|
||||||
@@ -87,7 +89,7 @@
|
|||||||
// startToolStripMenuItem
|
// startToolStripMenuItem
|
||||||
//
|
//
|
||||||
startToolStripMenuItem.Name = "startToolStripMenuItem";
|
startToolStripMenuItem.Name = "startToolStripMenuItem";
|
||||||
startToolStripMenuItem.Size = new Size(180, 22);
|
startToolStripMenuItem.Size = new Size(165, 22);
|
||||||
startToolStripMenuItem.Text = "Start";
|
startToolStripMenuItem.Text = "Start";
|
||||||
startToolStripMenuItem.Click += startToolStripMenuItem_Click;
|
startToolStripMenuItem.Click += startToolStripMenuItem_Click;
|
||||||
//
|
//
|
||||||
@@ -95,28 +97,41 @@
|
|||||||
//
|
//
|
||||||
stopToolStripMenuItem.Enabled = false;
|
stopToolStripMenuItem.Enabled = false;
|
||||||
stopToolStripMenuItem.Name = "stopToolStripMenuItem";
|
stopToolStripMenuItem.Name = "stopToolStripMenuItem";
|
||||||
stopToolStripMenuItem.Size = new Size(180, 22);
|
stopToolStripMenuItem.Size = new Size(165, 22);
|
||||||
stopToolStripMenuItem.Text = "Stop";
|
stopToolStripMenuItem.Text = "Stop";
|
||||||
stopToolStripMenuItem.Click += stopToolStripMenuItem_Click;
|
stopToolStripMenuItem.Click += stopToolStripMenuItem_Click;
|
||||||
//
|
//
|
||||||
// forceReloadToolStripMenuItem
|
// forceRediscoverToolStripMenuItem
|
||||||
//
|
//
|
||||||
forceReloadToolStripMenuItem.Name = "forceReloadToolStripMenuItem";
|
forceRediscoverToolStripMenuItem.Name = "forceRediscoverToolStripMenuItem";
|
||||||
forceReloadToolStripMenuItem.Size = new Size(180, 22);
|
forceRediscoverToolStripMenuItem.Size = new Size(165, 22);
|
||||||
forceReloadToolStripMenuItem.Text = "Force reload";
|
forceRediscoverToolStripMenuItem.Text = "Force re-discover";
|
||||||
forceReloadToolStripMenuItem.Click += forceReloadToolStripMenuItem_Click;
|
forceRediscoverToolStripMenuItem.Click += forceReloadToolStripMenuItem_Click;
|
||||||
//
|
//
|
||||||
// saveToolStripMenuItem
|
// saveToolStripMenuItem
|
||||||
//
|
//
|
||||||
saveToolStripMenuItem.Name = "saveToolStripMenuItem";
|
saveToolStripMenuItem.Name = "saveToolStripMenuItem";
|
||||||
saveToolStripMenuItem.Size = new Size(180, 22);
|
saveToolStripMenuItem.Size = new Size(165, 22);
|
||||||
saveToolStripMenuItem.Text = "Save";
|
saveToolStripMenuItem.Text = "Save";
|
||||||
|
saveToolStripMenuItem.Click += saveToolStripMenuItem_Click;
|
||||||
//
|
//
|
||||||
// loadToolStripMenuItem
|
// loadToolStripMenuItem
|
||||||
//
|
//
|
||||||
loadToolStripMenuItem.Name = "loadToolStripMenuItem";
|
loadToolStripMenuItem.Name = "loadToolStripMenuItem";
|
||||||
loadToolStripMenuItem.Size = new Size(180, 22);
|
loadToolStripMenuItem.Size = new Size(165, 22);
|
||||||
loadToolStripMenuItem.Text = "Load";
|
loadToolStripMenuItem.Text = "Load";
|
||||||
|
loadToolStripMenuItem.Click += loadToolStripMenuItem_Click;
|
||||||
|
//
|
||||||
|
// toolStripSeparator1
|
||||||
|
//
|
||||||
|
toolStripSeparator1.Name = "toolStripSeparator1";
|
||||||
|
toolStripSeparator1.Size = new Size(162, 6);
|
||||||
|
//
|
||||||
|
// toolStripStatusDisco
|
||||||
|
//
|
||||||
|
toolStripStatusDisco.Name = "toolStripStatusDisco";
|
||||||
|
toolStripStatusDisco.Size = new Size(111, 17);
|
||||||
|
toolStripStatusDisco.Text = "Discovery : Stopped";
|
||||||
//
|
//
|
||||||
// MainForm
|
// MainForm
|
||||||
//
|
//
|
||||||
@@ -148,8 +163,10 @@
|
|||||||
private ToolStripMenuItem discoveryToolStripMenuItem;
|
private ToolStripMenuItem discoveryToolStripMenuItem;
|
||||||
private ToolStripMenuItem startToolStripMenuItem;
|
private ToolStripMenuItem startToolStripMenuItem;
|
||||||
private ToolStripMenuItem stopToolStripMenuItem;
|
private ToolStripMenuItem stopToolStripMenuItem;
|
||||||
private ToolStripMenuItem forceReloadToolStripMenuItem;
|
private ToolStripMenuItem forceRediscoverToolStripMenuItem;
|
||||||
private ToolStripMenuItem saveToolStripMenuItem;
|
private ToolStripMenuItem saveToolStripMenuItem;
|
||||||
private ToolStripMenuItem loadToolStripMenuItem;
|
private ToolStripMenuItem loadToolStripMenuItem;
|
||||||
|
private ToolStripSeparator toolStripSeparator1;
|
||||||
|
private ToolStripStatusLabel toolStripStatusDisco;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
140
MainForm.cs
140
MainForm.cs
@@ -2,7 +2,11 @@ using System.ComponentModel;
|
|||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using System.Net.NetworkInformation;
|
using System.Net.NetworkInformation;
|
||||||
|
using System.Text.Json;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
|
using System.Windows.Forms;
|
||||||
using Tmds.MDns;
|
using Tmds.MDns;
|
||||||
|
using static robospot_camera_finder.MainForm;
|
||||||
|
|
||||||
namespace robospot_camera_finder
|
namespace robospot_camera_finder
|
||||||
{
|
{
|
||||||
@@ -17,51 +21,27 @@ namespace robospot_camera_finder
|
|||||||
|
|
||||||
private static string browse_scope = "_rtsp._tcp";
|
private static string browse_scope = "_rtsp._tcp";
|
||||||
|
|
||||||
|
bool is_browsing = false;
|
||||||
|
|
||||||
public class Camera
|
public class Camera
|
||||||
{
|
{
|
||||||
private IPAddress ip;
|
public Camera(string name, string ip, string location, string serial)
|
||||||
private string name;
|
|
||||||
private string location;
|
|
||||||
private string serial;
|
|
||||||
|
|
||||||
public Camera(string name, IPAddress ip, string location, string serial)
|
|
||||||
{
|
{
|
||||||
this.name = name;
|
camera_name = name;
|
||||||
this.ip = ip;
|
camera_ip = ip;
|
||||||
this.location = location;
|
camera_location = location;
|
||||||
this.serial = serial;
|
camera_serial = serial;
|
||||||
}
|
}
|
||||||
|
|
||||||
public string camera_name
|
public Camera() { }
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public IPAddress camera_ip
|
public string camera_name { get; set; }
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
return ip;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public string camera_location
|
public string camera_ip { get; set; }
|
||||||
{
|
|
||||||
get
|
public string camera_location { get; set; }
|
||||||
{
|
|
||||||
return location;
|
public string camera_serial { get; set; }
|
||||||
}
|
|
||||||
}
|
|
||||||
public string camera_serial
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
return serial;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public MainForm()
|
public MainForm()
|
||||||
@@ -127,6 +107,8 @@ namespace robospot_camera_finder
|
|||||||
if (!browser.IsBrowsing)
|
if (!browser.IsBrowsing)
|
||||||
{
|
{
|
||||||
browser.StartBrowse(browse_scope);
|
browser.StartBrowse(browse_scope);
|
||||||
|
is_browsing = true;
|
||||||
|
toolStripStatusDisco.Text = "Discovery : Started";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -134,6 +116,8 @@ namespace robospot_camera_finder
|
|||||||
if (browser.IsBrowsing)
|
if (browser.IsBrowsing)
|
||||||
{
|
{
|
||||||
browser.StopBrowse();
|
browser.StopBrowse();
|
||||||
|
is_browsing = false;
|
||||||
|
toolStripStatusDisco.Text = "Discovery : Stopped";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -166,25 +150,31 @@ namespace robospot_camera_finder
|
|||||||
serial = serial_line.Substring("SerialNumber=".Length).Trim();
|
serial = serial_line.Substring("SerialNumber=".Length).Trim();
|
||||||
}
|
}
|
||||||
|
|
||||||
Camera new_camera = new Camera("Camera " + cam_addr.ToString() + " - " + location + " - " + serial, cam_addr, location, serial);
|
Camera new_camera = new Camera("Camera " + cam_addr + " - " + location + " - " + serial, cam_addr.ToString(), location, serial);
|
||||||
|
|
||||||
if (all_cameras.Count == 0)
|
add_camera(new_camera);
|
||||||
{
|
}
|
||||||
all_cameras.Add(new_camera);
|
}
|
||||||
} else
|
}
|
||||||
{
|
|
||||||
for (int i = 0; i < all_cameras.Count; i++)
|
private void add_camera(Camera new_camera)
|
||||||
{
|
{
|
||||||
if (all_cameras[i].camera_serial == new_camera.camera_serial)
|
if (all_cameras.Count == 0)
|
||||||
{
|
{
|
||||||
all_cameras[i] = new_camera;
|
all_cameras.Add(new_camera);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
all_cameras.Add(new_camera);
|
Camera find_cam = all_cameras.FirstOrDefault(cam => cam.camera_serial == new_camera.camera_serial);
|
||||||
}
|
|
||||||
}
|
if (find_cam != null)
|
||||||
}
|
{
|
||||||
|
int i = all_cameras.IndexOf(find_cam);
|
||||||
|
all_cameras[i] = new_camera;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
all_cameras.Add(new_camera);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -197,7 +187,7 @@ namespace robospot_camera_finder
|
|||||||
{
|
{
|
||||||
foreach (var camera in all_cameras)
|
foreach (var camera in all_cameras)
|
||||||
{
|
{
|
||||||
if (cam_ip == camera.camera_ip)
|
if (cam_ip.ToString() == camera.camera_ip)
|
||||||
{
|
{
|
||||||
all_cameras.Remove(camera);
|
all_cameras.Remove(camera);
|
||||||
return;
|
return;
|
||||||
@@ -244,5 +234,41 @@ namespace robospot_camera_finder
|
|||||||
browse(true);
|
browse(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void loadToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
string json = "";
|
||||||
|
OpenFileDialog openFile = new OpenFileDialog();
|
||||||
|
openFile.Filter = "json file (*.json)|*.json";
|
||||||
|
openFile.RestoreDirectory = true;
|
||||||
|
|
||||||
|
if (openFile.ShowDialog() == DialogResult.OK)
|
||||||
|
{
|
||||||
|
json = File.ReadAllText(openFile.FileName);
|
||||||
|
|
||||||
|
List<Camera> cameras_in_file = JsonSerializer.Deserialize<List<Camera>>(json);
|
||||||
|
|
||||||
|
foreach (Camera new_camera in cameras_in_file)
|
||||||
|
{
|
||||||
|
add_camera(new_camera);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void saveToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
string json = JsonSerializer.Serialize<BindingList<Camera>>(all_cameras, new JsonSerializerOptions
|
||||||
|
{
|
||||||
|
WriteIndented = true
|
||||||
|
});
|
||||||
|
SaveFileDialog saveFile = new SaveFileDialog();
|
||||||
|
saveFile.Filter = "json file (*.json)|*.json";
|
||||||
|
saveFile.RestoreDirectory = true;
|
||||||
|
|
||||||
|
if (saveFile.ShowDialog() == DialogResult.OK)
|
||||||
|
{
|
||||||
|
File.WriteAllText(saveFile.FileName, json);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
25
StreamViewer.Designer.cs
generated
25
StreamViewer.Designer.cs
generated
@@ -58,6 +58,8 @@ namespace robospot_camera_finder
|
|||||||
labelSerial = new Label();
|
labelSerial = new Label();
|
||||||
tbSerial = new TextBox();
|
tbSerial = new TextBox();
|
||||||
btnSidePanel = new Button();
|
btnSidePanel = new Button();
|
||||||
|
lblRtspLink = new Label();
|
||||||
|
tbRtspLink = new TextBox();
|
||||||
((System.ComponentModel.ISupportInitialize)videoView).BeginInit();
|
((System.ComponentModel.ISupportInitialize)videoView).BeginInit();
|
||||||
((System.ComponentModel.ISupportInitialize)tbZoom).BeginInit();
|
((System.ComponentModel.ISupportInitialize)tbZoom).BeginInit();
|
||||||
grpSACN.SuspendLayout();
|
grpSACN.SuspendLayout();
|
||||||
@@ -338,6 +340,8 @@ namespace robospot_camera_finder
|
|||||||
//
|
//
|
||||||
// splitContainerMain.Panel1
|
// splitContainerMain.Panel1
|
||||||
//
|
//
|
||||||
|
splitContainerMain.Panel1.Controls.Add(tbRtspLink);
|
||||||
|
splitContainerMain.Panel1.Controls.Add(lblRtspLink);
|
||||||
splitContainerMain.Panel1.Controls.Add(labelSerial);
|
splitContainerMain.Panel1.Controls.Add(labelSerial);
|
||||||
splitContainerMain.Panel1.Controls.Add(tbSerial);
|
splitContainerMain.Panel1.Controls.Add(tbSerial);
|
||||||
splitContainerMain.Panel1.Controls.Add(btnSidePanel);
|
splitContainerMain.Panel1.Controls.Add(btnSidePanel);
|
||||||
@@ -386,6 +390,25 @@ namespace robospot_camera_finder
|
|||||||
btnSidePanel.UseVisualStyleBackColor = true;
|
btnSidePanel.UseVisualStyleBackColor = true;
|
||||||
btnSidePanel.Click += btnSidePanel_Click;
|
btnSidePanel.Click += btnSidePanel_Click;
|
||||||
//
|
//
|
||||||
|
// lblRtspLink
|
||||||
|
//
|
||||||
|
lblRtspLink.Anchor = AnchorStyles.Bottom | AnchorStyles.Left;
|
||||||
|
lblRtspLink.AutoSize = true;
|
||||||
|
lblRtspLink.Location = new Point(296, 483);
|
||||||
|
lblRtspLink.Name = "lblRtspLink";
|
||||||
|
lblRtspLink.Size = new Size(57, 15);
|
||||||
|
lblRtspLink.TabIndex = 7;
|
||||||
|
lblRtspLink.Text = "RTSP Link";
|
||||||
|
//
|
||||||
|
// tbRtspLink
|
||||||
|
//
|
||||||
|
tbRtspLink.Anchor = AnchorStyles.Bottom | AnchorStyles.Left;
|
||||||
|
tbRtspLink.Location = new Point(359, 480);
|
||||||
|
tbRtspLink.Name = "tbRtspLink";
|
||||||
|
tbRtspLink.ReadOnly = true;
|
||||||
|
tbRtspLink.Size = new Size(383, 23);
|
||||||
|
tbRtspLink.TabIndex = 8;
|
||||||
|
//
|
||||||
// StreamViewer
|
// StreamViewer
|
||||||
//
|
//
|
||||||
AutoScaleDimensions = new SizeF(7F, 15F);
|
AutoScaleDimensions = new SizeF(7F, 15F);
|
||||||
@@ -443,5 +466,7 @@ namespace robospot_camera_finder
|
|||||||
private Button btnPreset4;
|
private Button btnPreset4;
|
||||||
private Button btnPreset3;
|
private Button btnPreset3;
|
||||||
private Button btnPreset2;
|
private Button btnPreset2;
|
||||||
|
private TextBox tbRtspLink;
|
||||||
|
private Label lblRtspLink;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -60,12 +60,15 @@ namespace robospot_camera_finder
|
|||||||
cam_ip = ip;
|
cam_ip = ip;
|
||||||
this.Text = name;
|
this.Text = name;
|
||||||
|
|
||||||
|
string rtsp_link = "rtsp://" + ip + "/profile2/media.smp";
|
||||||
|
|
||||||
updateZoomSlider();
|
updateZoomSlider();
|
||||||
|
|
||||||
tbSerial.Text = camera.camera_serial;
|
tbSerial.Text = camera.camera_serial;
|
||||||
|
tbRtspLink.Text = rtsp_link;
|
||||||
|
|
||||||
videoView.MediaPlayer = _mp;
|
videoView.MediaPlayer = _mp;
|
||||||
var media = new Media(_libVLC, new Uri("rtsp://" + ip + "/profile2/media.smp"));
|
var media = new Media(_libVLC, new Uri(rtsp_link));
|
||||||
media.AddOption(":network-caching=25");
|
media.AddOption(":network-caching=25");
|
||||||
_mp.Play(media);
|
_mp.Play(media);
|
||||||
media.Dispose();
|
media.Dispose();
|
||||||
|
|||||||
Reference in New Issue
Block a user