Как обрабатывать несколько видеопотоков в Red5? - PullRequest
10 голосов
/ 18 января 2011

Я пишу Red5 приложение, которое предоставляет видеочат 1-на-1 Flash-клиенту через RTMP .

К сожалению, большинство учебных пособий, которые мне удалось найти, были в лучшем случае отрывочными, а документация самого Red5 имеет тенденцию быть расплывчатой, когда речь идет о концепциях API и предполагаемом использовании.

Короче говоря, я немного застрял и ищу подсказки по реализации Red5 ApplicationAdapter. Мрачные детали заключаются в следующем:

  • Прежде всего, связи бывают двух видов: посетители и консультанты. Посетитель должен иметь возможность указать, с каким консультантом он хочет общаться. Консультант просто подключается к запрашивающему посетителю, если консультант не занят обслуживанием другого.

  • Очевидно, что каждое соединение RTMP имеет двусторонний трафик: и отправка, и получение видео. С точки зрения сервера, соединения приносят множество видеопотоков, которые получают свои конечные точки приема, назначенные по запросу.

  • Так как несколько видео-разговоров могут выполняться одновременно, основная задача приложения состоит в том, чтобы обрабатывать сопоставление потоков посетителей с консультантами и предоставлять список с указанием состояния каждого консультанта (занято / доступно) через AMF .

Итак, в общем, у меня есть довольно хорошая идея, к чему я стремлюсь, но как этого добиться с помощью Red5 все еще остается загадкой.

Надеюсь, кто-нибудь может просветить меня в любом или во всех следующих случаях:

  1. Какой самый простой способ установить тип соединения (посетитель / консультант)?

  2. Какие классы API следует использовать для реализации постоянного, общедоступного списка активных соединений для сообщения о состоянии каждого консультанта?

  3. Как динамически переключать конечные точки получения, когда целью является подключение определенного посетителя к выбранному консультанту?

Ответы [ 2 ]

3 голосов
/ 30 января 2011

Сол,

1. Какой самый простой способ установить тип подключения (Посетитель / консультант)

при условии, что оба (посетитель / консультант) используют flex-клиент, через который они начинают публиковать свой поток живого видео, здесь необходимо убедиться, что каждое опубликованное видео имя потока уникально (HOWTO уже упоминалось в демо-приложениях)

2.Какие классы API должны использоваться для внедрить постоянный, глобально доступный список активных подключений для сообщения о состоянии каждого консультант

и для предоставления списка активных подключений вам просто нужно сохранить (предпочтительно в вашей БД) идентификатор каждого пользователя с именем потока (которое также доступно в виде демонстрационного приложения ) для подключения.

Я полагаю, что весь код доступен для демонстрационных версий red5. Попробуйте демонстрационные приложения oflaDemo, simpleSubscriber, fitcDemo.

Надеюсь, я ближе к вашему решению.

0 голосов
/ 17 августа 2016

Поскольку Oflademo или red5 способны на чаты 1 на 1, скопируйте этот код и получите около 50 чатов. Вы можете вести таблицу со следующими столбцами:

  • номер чата (от 1 до 50)
  • user1
  • user2
  • статус (0 или 1 - незанят или занят)

Если, скажем, посетитель V22 хочет получить консультацию у консультанта C33, то программа может обнаружить первую незанятую комнату от 1 до 50, если 7-я комната не занята, перенаправить V22 и C33 в комнату 7 и изменить статус на 1 (занят). После видеовызова состояние может быть сброшено до 0, а для таблицы: roomno: 7, user1 из roomno: 7, user2 из roomno: 7, можно установить значение NULL. Это как ведение столов в ресторане за компьютером.

Вы можете в основном разрабатывать несколько чатов, используя 1to1, используя базу данных и запросы php, не нужно редактировать какой-либо swf-код или поддерживать сложный сервер и т. Д.

...