Как обрабатывать несколько видеопотоков в 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-код или поддерживать сложный сервер и т.д.