Я уже задавал эти вопросы без правильного ответа. Я надеюсь получить ответ здесь.
Я занимаюсь разработкой мессенджера на python, и я бы хотел обрабатывать потоковое видео / аудио с помощью VLC. Основная идея сейчас заключается в том, что в каждом IM-клиенте я запускаю один экземпляр VLC, который действует как сервер, который транслирует всем нужным пользователям, и другой экземпляр VLC, который является клиентом, получает и отображает все потоки, которыми являются другие пользователи. отправив мне. Как видите, это своего рода P2P-соединение, и у меня много проблем.
Моя первая проблема заключалась в том, что VLC может обрабатывать только один поток на порт, но я решил это с помощью VLM, Videolan Manager, который позволяет использовать несколько потоков с одним экземпляром и на одном порту.
Моя вторая проблема заключалась в том, что этот вид P2P имеет несколько недостатков, например, если кто-то находится за NAT или маршрутизатором, вам нужно выполнить ручную настройку для пересылки пакетов с маршрутизатора на компьютер, а также у него есть другой недостаток: Можно пересылать только на 1 ПК, поэтому вы сможете использовать программу только на одной рабочей станции.
Кроме того, потоки транспортировались по протоколу HTTP, который использует TCP, и это довольно медленно. Когда я попытался сделать то же самое с RTSP, я не смог получить поток за пределами моей частной локальной сети.
Таким образом, этот P2P-сценарий вряд ли будет успешно реализован таким любителем, как я, поскольку у него есть все типичные проблемы прохождения NAT, вещи, с которыми я не хочу связываться, поскольку это не коммерческое приложение, просто школьный проект, который я должен закончить, чтобы получить высшее образование в качестве техника. Наконец, мне порекомендовали использовать сервер с хорошо известным IP-адресом, и это решило бы проблему - только одна конфигурация маршрутизатора и позволить обоим концам разговоров быть клиентами. Я понятия не имею, как реализовать эту идею, пожалуйста, любая помощь полезна. Заранее спасибо. Извините за любую ошибку, я не являюсь экспертом в области программирования / сетей и не являюсь англоговорящим человеком.