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();
startToolStripMenuItem = new ToolStripMenuItem();
stopToolStripMenuItem = new ToolStripMenuItem();
forceReloadToolStripMenuItem = new ToolStripMenuItem();
forceRediscoverToolStripMenuItem = new ToolStripMenuItem();
saveToolStripMenuItem = new ToolStripMenuItem();
loadToolStripMenuItem = new ToolStripMenuItem();
toolStripSeparator1 = new ToolStripSeparator();
toolStripStatusDisco = new ToolStripStatusLabel();
statusStripMain.SuspendLayout();
menuStrip1.SuspendLayout();
SuspendLayout();
@@ -56,7 +58,7 @@
//
// statusStripMain
//
statusStripMain.Items.AddRange(new ToolStripItem[] { toolStripStatusLabel });
statusStripMain.Items.AddRange(new ToolStripItem[] { toolStripStatusLabel, toolStripStatusDisco });
statusStripMain.Location = new Point(0, 428);
statusStripMain.Name = "statusStripMain";
statusStripMain.Size = new Size(800, 22);
@@ -79,7 +81,7 @@
//
// 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.Size = new Size(70, 20);
discoveryToolStripMenuItem.Text = "Discovery";
@@ -87,7 +89,7 @@
// startToolStripMenuItem
//
startToolStripMenuItem.Name = "startToolStripMenuItem";
startToolStripMenuItem.Size = new Size(180, 22);
startToolStripMenuItem.Size = new Size(165, 22);
startToolStripMenuItem.Text = "Start";
startToolStripMenuItem.Click += startToolStripMenuItem_Click;
//
@@ -95,28 +97,41 @@
//
stopToolStripMenuItem.Enabled = false;
stopToolStripMenuItem.Name = "stopToolStripMenuItem";
stopToolStripMenuItem.Size = new Size(180, 22);
stopToolStripMenuItem.Size = new Size(165, 22);
stopToolStripMenuItem.Text = "Stop";
stopToolStripMenuItem.Click += stopToolStripMenuItem_Click;
//
// forceReloadToolStripMenuItem
// forceRediscoverToolStripMenuItem
//
forceReloadToolStripMenuItem.Name = "forceReloadToolStripMenuItem";
forceReloadToolStripMenuItem.Size = new Size(180, 22);
forceReloadToolStripMenuItem.Text = "Force reload";
forceReloadToolStripMenuItem.Click += forceReloadToolStripMenuItem_Click;
forceRediscoverToolStripMenuItem.Name = "forceRediscoverToolStripMenuItem";
forceRediscoverToolStripMenuItem.Size = new Size(165, 22);
forceRediscoverToolStripMenuItem.Text = "Force re-discover";
forceRediscoverToolStripMenuItem.Click += forceReloadToolStripMenuItem_Click;
//
// saveToolStripMenuItem
//
saveToolStripMenuItem.Name = "saveToolStripMenuItem";
saveToolStripMenuItem.Size = new Size(180, 22);
saveToolStripMenuItem.Size = new Size(165, 22);
saveToolStripMenuItem.Text = "Save";
saveToolStripMenuItem.Click += saveToolStripMenuItem_Click;
//
// loadToolStripMenuItem
//
loadToolStripMenuItem.Name = "loadToolStripMenuItem";
loadToolStripMenuItem.Size = new Size(180, 22);
loadToolStripMenuItem.Size = new Size(165, 22);
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
//
@@ -148,8 +163,10 @@
private ToolStripMenuItem discoveryToolStripMenuItem;
private ToolStripMenuItem startToolStripMenuItem;
private ToolStripMenuItem stopToolStripMenuItem;
private ToolStripMenuItem forceReloadToolStripMenuItem;
private ToolStripMenuItem forceRediscoverToolStripMenuItem;
private ToolStripMenuItem saveToolStripMenuItem;
private ToolStripMenuItem loadToolStripMenuItem;
private ToolStripSeparator toolStripSeparator1;
private ToolStripStatusLabel toolStripStatusDisco;
}
}

View File

@@ -2,7 +2,11 @@ using System.ComponentModel;
using System.Diagnostics;
using System.Net;
using System.Net.NetworkInformation;
using System.Text.Json;
using System.Text.Json.Serialization;
using System.Windows.Forms;
using Tmds.MDns;
using static robospot_camera_finder.MainForm;
namespace robospot_camera_finder
{
@@ -17,51 +21,27 @@ namespace robospot_camera_finder
private static string browse_scope = "_rtsp._tcp";
bool is_browsing = false;
public class Camera
{
private IPAddress ip;
private string name;
private string location;
private string serial;
public Camera(string name, IPAddress ip, string location, string serial)
public Camera(string name, string ip, string location, string serial)
{
this.name = name;
this.ip = ip;
this.location = location;
this.serial = serial;
camera_name = name;
camera_ip = ip;
camera_location = location;
camera_serial = serial;
}
public string camera_name
{
get
{
return name;
}
}
public Camera() { }
public IPAddress camera_ip
{
get
{
return ip;
}
}
public string camera_name { get; set; }
public string camera_location
{
get
{
return location;
}
}
public string camera_serial
{
get
{
return serial;
}
}
public string camera_ip { get; set; }
public string camera_location { get; set; }
public string camera_serial { get; set; }
}
public MainForm()
@@ -127,6 +107,8 @@ namespace robospot_camera_finder
if (!browser.IsBrowsing)
{
browser.StartBrowse(browse_scope);
is_browsing = true;
toolStripStatusDisco.Text = "Discovery : Started";
}
}
else
@@ -134,6 +116,8 @@ namespace robospot_camera_finder
if (browser.IsBrowsing)
{
browser.StopBrowse();
is_browsing = false;
toolStripStatusDisco.Text = "Discovery : Stopped";
}
}
@@ -166,17 +150,26 @@ namespace robospot_camera_finder
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);
add_camera(new_camera);
}
}
}
private void add_camera(Camera new_camera)
{
if (all_cameras.Count == 0)
{
all_cameras.Add(new_camera);
} else
}
else
{
for (int i = 0; i < all_cameras.Count; i++)
{
if (all_cameras[i].camera_serial == new_camera.camera_serial)
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
@@ -185,9 +178,6 @@ namespace robospot_camera_finder
}
}
}
}
}
}
private void ServiceRemoved(object sender, ServiceAnnouncementEventArgs args)
{
@@ -197,7 +187,7 @@ namespace robospot_camera_finder
{
foreach (var camera in all_cameras)
{
if (cam_ip == camera.camera_ip)
if (cam_ip.ToString() == camera.camera_ip)
{
all_cameras.Remove(camera);
return;
@@ -244,5 +234,41 @@ namespace robospot_camera_finder
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();
tbSerial = new TextBox();
btnSidePanel = new Button();
lblRtspLink = new Label();
tbRtspLink = new TextBox();
((System.ComponentModel.ISupportInitialize)videoView).BeginInit();
((System.ComponentModel.ISupportInitialize)tbZoom).BeginInit();
grpSACN.SuspendLayout();
@@ -338,6 +340,8 @@ namespace robospot_camera_finder
//
// splitContainerMain.Panel1
//
splitContainerMain.Panel1.Controls.Add(tbRtspLink);
splitContainerMain.Panel1.Controls.Add(lblRtspLink);
splitContainerMain.Panel1.Controls.Add(labelSerial);
splitContainerMain.Panel1.Controls.Add(tbSerial);
splitContainerMain.Panel1.Controls.Add(btnSidePanel);
@@ -386,6 +390,25 @@ namespace robospot_camera_finder
btnSidePanel.UseVisualStyleBackColor = true;
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
//
AutoScaleDimensions = new SizeF(7F, 15F);
@@ -443,5 +466,7 @@ namespace robospot_camera_finder
private Button btnPreset4;
private Button btnPreset3;
private Button btnPreset2;
private TextBox tbRtspLink;
private Label lblRtspLink;
}
}

View File

@@ -60,12 +60,15 @@ namespace robospot_camera_finder
cam_ip = ip;
this.Text = name;
string rtsp_link = "rtsp://" + ip + "/profile2/media.smp";
updateZoomSlider();
tbSerial.Text = camera.camera_serial;
tbRtspLink.Text = rtsp_link;
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");
_mp.Play(media);
media.Dispose();