Я сейчас работаю над этим проектом. Это как 3D-принтер с камерой, которую можно просматривать в Интернете.
Я нашел эту библиотеку "Motion JPEG Streaming Server" в codeproject, но она работает как средство просмотра VNC.
ImageStreamingServer server = new ImageStreamingServer();
server.Start(8080);
Я только хотел транслировать выходные данные веб-камеры, которая уже транслируется на PictureBox. Поэтому я попытался поместить его в качестве источника.
ImageStreamingServer server = new ImageStreamingServer();
server.ImagesSource = pictureBox1.Image;
server.Start(8080);
, и он возвращает это сообщение.
Невозможно неявно преобразовать тип 'System.Drawing.Image' в 'System.Collections.Generic.IEnumerable (System.Drawing.Image) '.
Возможно ли преобразовать System.Drawing.Image в System.Collections.Generic.IEnumerable (System.Drawing.Image)?
Если нет, можете ли вы предложить бесплатную библиотеку, где я могу транслировать веб-камеру (через C #) в сеть (через HTML, JavaScript или PHP).
Источник: https://www.codeproject.com/Articles/371955/Motion-JPEG-Streaming-Server
Обновление: я использую aforge для отображения веб-камеры на картинке.
private bool DeviceExist = false;
private FilterInfoCollection videoDevices;
private VideoCaptureDevice videoSource = null;
private ImageStreamingServer webcam_server;
private void Form1_Load(object sender, EventArgs e)
{
// Initialize Webcam
getCamList();
if (DeviceExist)
{
videoSource = new VideoCaptureDevice(videoDevices[webcam_list.SelectedIndex].MonikerString);
videoSource.NewFrame += new NewFrameEventHandler(video_NewFrame);
CloseVideoSource();
videoSource.Start();
}
// Start Webcam Server
webcam_server = new ImageStreamingServer();
webcam_server.ImagesSource = webcam.Image; // This Line
webcam_server.Start(8080);
}
// Display Camera List on ListBox
private void getCamList()
{
try
{
videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);
webcam_list.Items.Clear();
if (videoDevices.Count == 0)
{
throw new ApplicationException();
}
DeviceExist = true;
foreach (FilterInfo device in videoDevices)
{
webcam_list.Items.Add(device.Name);
}
webcam_list.SelectedIndex = 0;
}
catch (ApplicationException)
{
DeviceExist = false;
}
}
// Webcam Frames
private void video_NewFrame(object sender, NewFrameEventArgs eventArgs)
{
Bitmap webcam_output = (Bitmap)eventArgs.Frame.Clone();
webcam.Image = webcam_output;
}
// Close Video Source
private void CloseVideoSource()
{
if (!(videoSource == null))
{
if (videoSource.IsRunning)
{
videoSource.SignalToStop();
videoSource = null;
}
}
}