0 / 0 / 0
Регистрация: 24.02.2016
Сообщений: 2
1
.NET 4.x

Онлайн трансляция видео с web-камеры сервера клиенту, реализованная на WCF

24.02.2016, 23:41. Показов 2447. Ответов 2

Author24 — интернет-сервис помощи студентам
Пишу простое клиентно-серверное приложение для онлайн трансляции видео изображения с одного ПК на другой.
Для работы с web-камерой использую внешнею библиотеку Aforge.Net.
Сначала клиент делает запрос на наличие web-камер. Потом запрашивает видео с вибраной камеры.

У меня возникла заминка на самом процесе трансляции видео. Библиотека Aforge для захвата видео потока использует событие, при прохождении которого делаеться скриншот с вэбки. Я уже не один день ломаю голову, как грамотно организовать передачу кадров видео на клиентскую часть. Не знаю как выдернуть кадр из события и вернуть через функцию клиенту.

Скриншот клиента

Добавлено через 8 минут
Код Сервера
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
namespace StreamerWCF
{
    public class StreamServer : IStreamServer
    {
        VideoCaptureDevice FinalVideo;
        FilterInfoCollection VideoCaptureDevices = null;
        Bitmap Video;
 
        public List<string> Indices()
        {
            List<string> WeBCams = new List<string>();
            VideoCaptureDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);
            foreach (FilterInfo VideoCaptureDevice in VideoCaptureDevices)
            {
                WeBCams.Add(VideoCaptureDevice.Name);
            }
            return WeBCams;
        }
        
        public void Streaming(int index)
        {
            FinalVideo = new VideoCaptureDevice();
            if (FinalVideo.IsRunning) FinalVideo.Stop();
            VideoCaptureDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);
            FinalVideo = new VideoCaptureDevice(VideoCaptureDevices[index].MonikerString);
            FinalVideo.NewFrame += FinalVideo_NewFrame;
            FinalVideo.Start();
        }
 
        private void FinalVideo_NewFrame(object sender, NewFrameEventArgs eventArgs)
        {
            Video = (Bitmap)eventArgs.Frame.Clone();
        }
 
        public Bitmap video()
        {
            return Video;
        }
 
        public void StopStreaming()
        {
            FinalVideo.Stop();
        }
    }
}


Код Клиента
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
namespace MultyThread
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void ConnectBut_Click(object sender, EventArgs e)
        {
            StreamServerClient client = new StreamServerClient();
            string[] WeBCams = client.Indices();
            CamCombo.Items.Clear();
            foreach(string webcams in WeBCams)
            {
                CamCombo.Items.Add(webcams);
            }
            CamCombo.SelectedIndex = 0;
        }
 
        private void WatchBut_Click(object sender, EventArgs e)
        {
            StreamServerClient client = new StreamServerClient();
 
            client.Streaming(CamCombo.SelectedIndex);
            while (true)
            {
                pictureBox1.Image = client.video();
                pictureBox1.Refresh();
            }
        }
    }
}


Добавлено через 4 минуты
Интэрфейс Сервера
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
namespace StreamerWCF
{
    [ServiceContract]
    public interface IStreamServer
    {
        [OperationContract]
        List<string> Indices(); // получение информации о  имеющехся веб-камерах
 
        [OperationContract]
        void Streaming(int index); // запуск трансляции
 
        [OperationContract]
        Bitmap video();
 
        [OperationContract]
        void StopStreaming(); // отсановка трансляции
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.02.2016, 23:41
Ответы с готовыми решениями:

Трансляция видео потока с веб камеры и управление
Есть необходимость получения с веб камеры изображения и трансляция его на другой ПК, другой же ПК в...

Трансляция потокового видео-аудио сигнала с web-камеры в сеть
В общем пробовал я запустить трансляцию по ip в форточках получалось без всяких танцев с бубном. А...

Онлайн-трансляция с камеры
Доброго времени суток! Суть задачи: Есть веб-сервер на asp.Net, есть некий хост, к которому...

Онлайн трансляция с веб-камеры на сайт
всем привет. нужно сделать вставить онлайн трансляцию с камеры на сайт. подскажите как реализовать...

2
0 / 0 / 0
Регистрация: 24.02.2016
Сообщений: 2
24.02.2016, 23:47  [ТС] 2
Код на VS 2015
Вложения
Тип файла: rar StreamerWCF.rar (4.42 Мб, 76 просмотров)
0
Эксперт .NET
5540 / 4303 / 1218
Регистрация: 12.10.2013
Сообщений: 12,347
Записей в блоге: 2
25.02.2016, 11:51 3
Цитата Сообщение от Paliy Посмотреть сообщение
как выдернуть кадр из события
Попробуйте преобразовать изображение в массив байт и уже его передавать. Естественно, изменив контракт службы соответствующим образом.
0
25.02.2016, 11:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.02.2016, 11:51
Помогаю со студенческими работами здесь

Трансляция видео с камеры на пк
Здравствуйте! Стоит задача: трансляция видео с камеры айфона на пк по wifi и дальнейшая обработка....

Трансляция потока с Web камеры по Http
существует ли возможность получать видео с камеры и транслировать по http в браузер?

трансляция онлайн видео на сайте
помогите пожалуйста в решении проблемы. я задался задачей сделать онлайн видео трансляцию на...

Онлайн-трансляция видео с веб-страницы
Добрый день всем! В общем, ситуация следующая: мне нужно быстро зашарить в трансляции...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru