Я пишу приложение Red5, которое обеспечивает видеочат 1-на-1 с клиентом Flash через RTMP.
К сожалению, большинство руководств, которые мне удалось найти, были в лучшем случае отрывочными, а документация самого Red5 имеет тенденцию быть расплывчатой, когда речь идет о концепциях API и предполагаемом использовании.
Короче говоря, я немного застрял и ищу подсказки по реализации Red5 ApplicationAdapter
. Грубые детали заключаются в следующем:
Прежде всего, связи бывают двух видов: посетители и консультанты. Посетитель должен иметь возможность указать, с каким консультантом он хочет общаться. Консультант просто подключается к запрашивающему посетителю до тех пор, пока консультант не занят обслуживанием другого.
Очевидно, что каждое RTMP-соединение имеет двусторонний трафик: и отправку, и получение видео. С точки зрения сервера, соединения приносят кучу видеопотоков, которым назначаются конечные точки приема по запросу.
Поскольку одновременно может вестись несколько видеоразговоров, основной задачей приложения является управление сопоставлением потоков посетителей с консультантами и предоставление списка с указанием состояния каждого консультанта (занят/свободен) через AMF.
Итак, в целом, у меня есть довольно хорошее представление о том, к чему я стремлюсь, но как достичь этого с помощью Red5, все еще остается загадкой.
Надеюсь, кто-то может просветить меня в любом или во всех следующих аспектах:
Как проще всего установить тип подключения (посетитель/консультант)?
Какие классы API следует использовать для реализации постоянного, глобально доступного списка активных подключений для отчетов о состоянии каждого консультанта?
Как динамически переключать принимающие конечные точки, когда целью является подключение конкретного посетителя к выбранному консультанту?