Compare commits

...

2 Commits

Author SHA1 Message Date
Vincent BOUQUET
60a30fecb7 add VLC link 2024-03-03 18:57:20 +01:00
Vincent BOUQUET
a12aff10cc adding discovery menu 2024-03-03 18:57:02 +01:00
4 changed files with 142 additions and 71 deletions

43
MainForm.Designer.cs generated
View File

@@ -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;
} }
} }

View File

@@ -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);
}
}
} }
} }

View File

@@ -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;
} }
} }

View File

@@ -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();