Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.61/18: Рейтинг темы: голосов - 18, средняя оценка - 4.61
5 / 5 / 0
Регистрация: 21.07.2020
Сообщений: 9

Мультикаст-клиент для приема видео

21.07.2020, 19:34. Показов 3731. Ответов 8

Студворк — интернет-сервис помощи студентам
Здравствуйте есть задание: запустить поток видео на групповой адрес, продемонстрировать работу приема видео на клиенте с адреса групповой рассылки. Для создания потока можно использовать VLC.

То есть в качестве сервера выступает один компьютер, отправляя на мультикаст-адрес видеопоток с помощью vlc. И нужно написать клиент на С++/C# для приема видео на другом компьютере.

Для этого пробовал использовать библиотеку libvlc, но никак не могу сделать, чтоб оно работало, пробовал запускать код из примера, все работает:

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
using System;
using System.Windows.Forms;
using LibVLCSharp.Shared;
 
namespace LibVLCSharp.WinForms.Sample
{
    public partial class Form1 : Form
    {
        public LibVLC _libVLC;
        public MediaPlayer _mp;
 
        public Form1()
        {
            if (!DesignMode)
            {
                Core.Initialize();
            }
 
            InitializeComponent();
            _libVLC = new LibVLC();
            _mp = new MediaPlayer(_libVLC);
            videoView1.MediaPlayer = _mp;
            Load += Form1_Load;
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            _mp.Play(new Media(_libVLC, "http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4", FromType.FromLocation));
        }
    }
}

А как сделать прием с мультикаст адреса, не понимаю, вот что у меня получилось:

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
46
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Net.Sockets;
using System.Net;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using LibVLCSharp.Shared;
 
namespace Lab7_New_Video
{
    public partial class Form1 : Form
    {
        public LibVLC _libVLC;
        public MediaPlayer _mp;
        
        public Form1()
        {
            if (!DesignMode)
            {
                Core.Initialize();
            }
            InitializeComponent();
            _libVLC = new LibVLC();
            _mp = new MediaPlayer(_libVLC);
            videoView1.MediaPlayer = _mp;
            Load += Form1_Load;
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
            IPAddress ip = IPAddress.Parse("239.5.6.7");
            IPEndPoint ipep = new IPEndPoint(IPAddress.Any, 1234);
            s.Bind(ipep);
            s.SetSocketOption(SocketOptionLevel.IP,SocketOptionName.AddMembership,  new MulticastOption(ip, IPAddress.Any));
 
            _mp.Play(new Media(_libVLC, "http://239.5.6.7:1234", FromType.FromLocation));
                      
            
        }
    }
}
Если добавить в код прием данных с мультикаста:

C#
1
2
byte[] b = new byte[2048];
 s.Receive(b);
то видно, что данные принимаются, т.е. буффер заполняется.

в строку "_mp.Play" пробовал добавлять различные протоколы, так же в vlc пробовал отправлять через различные протоколы, но ничего не получилось
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.07.2020, 19:34
Ответы с готовыми решениями:

Почтовый клиент для приема сообщений
Скажите, реально ли написать программу, которое будет заходить на почтовый сервер, считывать письма и из них скачивать приложения?

Простая реализация клиент-сервера для отправки/приема строки
Добрый день! В целях обучения написал сервер и клиент, клиент передает строку, а сервер при отправке более 3х символов выдает целиком...

Приложение клиент-сервер. Проблемы с буфером приема (JackMMMMM.)
Если задавать буфер как char* buff, то появляется ошибка. Так char buff ошибки нет, но при приеме сообщения одной из сторон текст выглядит...

8
1152 / 860 / 263
Регистрация: 30.04.2009
Сообщений: 3,603
23.07.2020, 10:26
А если в самом VLC указать этот адрес то работает?
1
5 / 5 / 0
Регистрация: 21.07.2020
Сообщений: 9
23.07.2020, 15:03  [ТС]
При таких настройках vlc как на скрине - работает передача с vlc на vlc,
подсмотрел в этой статье как настроить https://habr.com/ru/post/74471/

Если в проге прописываю _mp.Play(new Media(_libVLC, "udp://@239.5.6.7:1234", FromType.FromLocation)); - не работает
Миниатюры
Мультикаст-клиент для приема видео  
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,569
23.07.2020, 15:13
Вы в самом VLC добейтесь работы с видео по нужному адресу, потом этот адрес в код вставите и должно заработать.
0
5 / 5 / 0
Регистрация: 21.07.2020
Сообщений: 9
23.07.2020, 16:14  [ТС]
Перечитайте мое предыдущее сообщение.
Цитата Сообщение от Someone007 Посмотреть сообщение
в самом VLC добейтесь работы с видео по нужному адресу
- уже добился.
Цитата Сообщение от Someone007 Посмотреть сообщение
потом этот адрес в код вставите и должно заработать
- не работает.
0
1152 / 860 / 263
Регистрация: 30.04.2009
Сообщений: 3,603
23.07.2020, 19:01
Лучший ответ Сообщение было отмечено AleXeY1123 как решение

Решение

AleXeY1123, ну вот одну проблему с некорректным адресом нашли

Добавлено через 21 секунду
а что с сокетами?

Добавлено через 42 секунды
можно разве одновременно слушать тот же порт с одного айпи адреса?

Добавлено через 2 минуты
из локального файла получилось запустить воспроизведение через LibVLC?
1
5 / 5 / 0
Регистрация: 21.07.2020
Сообщений: 9
23.07.2020, 20:27  [ТС]
Цитата Сообщение от nicolas2008 Посмотреть сообщение
а что с сокетами?
- не понял вопроса

Цитата Сообщение от nicolas2008 Посмотреть сообщение
можно разве одновременно слушать тот же порт с одного айпи адреса?
- тоже не понял вопроса, c vlc на vlc же работает при тех же условиях

Цитата Сообщение от nicolas2008 Посмотреть сообщение
из локального файла получилось запустить воспроизведение через LibVLC?
- да, пробовал, работает, там вместо FromLocation нужно FromPath и путь к файлу в кавычках, вместо адреса.
0
1152 / 860 / 263
Регистрация: 30.04.2009
Сообщений: 3,603
23.07.2020, 21:30
Лучший ответ Сообщение было отмечено AleXeY1123 как решение

Решение

AleXeY1123, я про то что вы перед _mp.Play создаете сокет. Без этого кода тоже не работает?
1
5 / 5 / 0
Регистрация: 21.07.2020
Сообщений: 9
23.07.2020, 22:50  [ТС]
Действительно, я тут чет затупил, думал надо мультикаст настраивать. Спасибо за помощь. Вот что в итоге получилось:

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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Net.Sockets;
using System.Net;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using LibVLCSharp.Shared;
 
namespace New_Video
{
    public partial class Form1 : Form
    {
        public LibVLC _libVLC;
        public MediaPlayer _mp;
        
        public Form1()
        {
            if (!DesignMode)
            {
                Core.Initialize();
            }
            InitializeComponent();
            _libVLC = new LibVLC();
            _mp = new MediaPlayer(_libVLC);
            videoView1.MediaPlayer = _mp;
            Load += Form1_Load;
        }
        private void Form1_Load(object sender, EventArgs e)
        {    
             _mp.Play(new Media(_libVLC, "udp://@239.5.6.7:1234", FromType.FromLocation));
            
        }
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.07.2020, 22:50
Помогаю со студенческими работами здесь

Андроид-клиент для прямой трансляции видео с события
Доброго времени суток! Дело вот в чем. Есть сайт написанный на html5 который успешно транслирует еженедельное событие(кодек MPEG4). Если...

Настройки мультикаст для CISCO SG300-10
Здравствуйте. Есть программа, которая принимает и передает трафик в мультикаст-группы, другим таким же участникам. Мне необходимо...

Как сделать клиент для видео хостинга, у которого нет своего API?
Здравствуйте. Хочу сделать клиент для сайта http://mover.uz , у которого нет собственного API. Как это можно реализовать? Есть ли...

Потоковое видео/Клиент-Сервер
Всех приветствую. Пишу курсовую работу , клиент-серверное приложение(QT) - каталог фильмов с возможностью их просмотра. Соединение через...

Для приема на работу
Всем привет, для приема на работу в должности "Программист-стажер" необходимо сделать задание которое они дают: "База данных...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru