У меня есть вопрос, который очень похож на this question, но предоставленное решение не работает для меня. И на самом деле я хочу сделать что-то немного другое, так что, возможно, есть лучший способ.Обработка пакетов UDP и пересылка их в одно и то же время
Я надеюсь на отправку одноадресных пакетов UDP (видеопотока) на сервер. Сервер пересылает эти пакеты на другой компьютер. При желании, кто-то, войдя на сервер, сможет смотреть видеопоток, используя что-то вроде mplayer. Я уверен, что смогу транслировать видео как на сервер, так и на конечный пункт назначения из источника видео, но я действительно хочу, чтобы сервер контролировал это.
Первая попытка: Скачан nmap, чтобы получить инструмент ncat. Думал, что могу использовать это для загрузки и передачи байтов в mplayer и пересылки с другим процессом ncat. Я могу подключиться к mplayer, и он отлично работает, я просто не могу пересылать в одно и то же время. Если бы я использовал Linux, я бы мог использовать замену tee и process, но я ищу решение для Windows.
Вторая попытка Я нашел решение, которое могло бы подразумевать использование нескольких программ в нескольких программах в PowerShell. Но я обнаружил, что бинарный трубопровод не сработает.
Третий попыток Я попытался запрограммировать тройной исполняемый файл, который будет использовать две программы. Это было примерно так же близко, как и я, но потоки видео, казалось, немного испорчены. Я думаю, что это скорее проблема производительности, чем что-либо.
Четвертая попытка Теперь я нахожусь в точке, где я обнаружил общество, которое привело меня к вопросу, к которому я привязался. Кажется странным, но я решил, что решение для моего сервера будет пересылать пакеты в адрес назначения И пересылает пакеты другому порту на сервере, который будет использоваться с netcat или socat для подключения к mplayer. Я бы предпочел не использовать другой порт на сервере, но если это то, что я должен сделать, тогда все в порядке. Но, как я уже сказал, решение другого вопроса, похоже, не работает. Mplayer начал буферизировать, а затем остановился очень скоро.
Отклонить каждый из них в отдельном окне cmd в этом порядке. Заметьте, что я еще не пытался перенаправить на конечный компьютер, просто попытавшись заставить mplayer работать на сервере.
Сокат UDP4-СЛУШАТЬ: 5000 UDP-Datagram: 224.10.10.10: 5001
Сокат UDP4-RECVFROM: 5001, IP-надстройку членство = 224.10.10.10: 0.0.0.0, reuseaddr, вилка UDP -DATAGRAM: 192.168.16.33: 5002
ncat -l -u -p 5002 | mplayer -vo direct3d -cache 1024 -
Кажется, я получаю около 924 байт, полученных в соответствии с выходом MPlayer.
Я свеж от идей, хотя продолжу изучение о сотате. Я предполагаю, что я неправильно управляю софтом, но я не уверен, где проблема. Если кто-то может указать на мою ошибку или предложить альтернативное решение, я бы очень признателен. Благодарю.
Edit:
Я сделал еще несколько испытаний, и если я изменить второй SOCAT сделать это:
Сокат UDP4-RECVFROM: 5001, IP-надстройку членство = 224.10.10.10 : 0.0.0.0, reuseaddr, fork - | mplayer -vo direct3d -cache 1024 -
Я нахожу, что он будет воспроизводить поток из адреса многоадресной передачи. Но, по-видимому, перенаправление на одноадресный адрес на порту 5002 - это то, что не работает.