Как обрабатывать несколько видеопотоков в Red5?
Я пишу приложение Red5, которое обеспечивает видео-чат 1 на 1 для клиента Flash поверх RTMP.
К сожалению, большинство учебных пособий, которые я смог найти, были в лучшем случае отрывочными, и документация самого Red5 имеет тенденцию быть неопределенной, когда речь идет о концепциях API и предполагаемом использовании.
Короче говоря, я немного застрял и искал намеки на реализацию Red5 ApplicationAdapter
. Более подробные сведения таковы:
-
Прежде всего, соединения бывают двух вариантов: посетителей и консультантов. Посетитель должен иметь возможность указать, с каким консультантом он хочет общаться. Консультант просто подключается к запрашивающему посетителю, пока консультант не занят обслуживанием другого.
-
Очевидно, что каждое соединение RTMP имеет двусторонний трафик: как отправку, так и получение видео. С точки зрения сервера, соединения приносят кучу видеопотоков, которые получают получающие их конечные точки, назначенные по запросу.
-
Так как несколько видео разговоров могут быть в ходе одновременно, основная задача данного приложения, чтобы обработать отображение посетителя потоков консультантов и предоставить список, указывающий каждое состояние консультанта (занято/доступный) через AMF.
Итак, в целом, у меня есть довольно хорошая идея, к чему я стремлюсь, но как достичь этого с Red5 по-прежнему остается загадкой.
Надеюсь, кто-то может просветить меня в любом или в следующем:
-
Каков самый простой способ установить тип подключения (посетитель/консультант)?
-
Какие классы API следует использовать для реализации постоянного, доступного по всему миру списка активных соединений для сообщения состояния каждого консультанта?
-
Как переключаться на конечные точки приемника динамически, когда целью является подключение конкретного посетителя к выбранному консультанту?
Ответы
Ответ 1
Саул,
1. Какой самый простой способ установить тип соединения (Посетитель/консультант)?
предполагая, что оба (посетитель/консультант) используют flex client, через который они начинают публиковать свой потоковый видеопоток, здесь вам нужно убедиться, что каждое опубликованное имя потока уникально (HOWTO уже упомянутых в демонстрационных приложениях)
2.Какие классы API должны использоваться для осуществлять постоянный, глобальный доступный список активных подключений за сообщение о состоянии каждого консультант?
и для предоставления списка активных соединений вам просто нужно сохранить (желательно в вашем db) каждый идентификатор пользователя с именем потока (который также доступен как учебное демонстрационное приложение) для подключения.
Я считаю, что весь код доступен для демонстраций red5. Попробуйте демонстрационные приложения tolaDemo, simpleSubscriber, fitcDemo.
Надеюсь, я ближе к вашему решению.
Ответ 2
Так как Oflademo или red5 способен на 1v1 чаты, то повторите этот код, чтобы сделать около 50 чатов. Вы можете сохранить таблицу со следующими столбцами:
- номер чата (от 1 до 50)
- user1
- user2
- статус (0 или 1 - незанятый или занятый)
Если скажем, что посетитель V22 хочет получить консультацию от консультанта C33, тогда программа может обнаружить первую незанятую комнату от 1 до 50, если 7-я комната не занята, перенаправить V22 и C33 в комнату 7 и изменить статус на 1 (занят). После видеовызова статус может быть reset до 0, а таблица в комнатеno: 7, user1 of roomno: 7, user2 из roomno: 7, может быть установлена в NULL. Это похоже на поддержание столов в ресторане на компьютере.
В основном вы можете разрабатывать несколько чатов, используя 1to1, используя запросы базы данных и php, не нужно редактировать какой-либо SWF-код или поддерживать сложный сервер и т.д.