HD Видеоконференции на OpenMCU



Увы, но поддержка форума прекращена и он работает в режиме read only. Если кто-то решит воскресить проект - то возможно и форум заработает. Если будут вопросы, то задавайте их в issue на github.

Автор Тема: API управления виртуальной комнатой  (Прочитано 9493 раз)

kay27

  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3068
  • Карма: 58
Re: API управления виртуальной комнатой
« Ответ #15 : 17 Июня 2015, 11:54:43 »
Хммм... Ну я вообще планировал написать просто класс с набором методов, который можно было бы потом использовать в приложении, но я попробую сделать UI на QT4, как я это себе представляю. Постараюсь побыстрее...

да я не думаю, что тут спешка нужна
пока, может, оптимально будет для приложения парсить monitor.txt, его отдаёт веб-сервер openmcu по соответствующей ссылке, в нём есть практически вся нужная информация.
на будущее можно ориентироваться на вебсокет и тот синтаксис, который сейчас начинает формироваться в режиме управления через telnet.
картинка доступна для каждой конференции в jpeg-формате в любом разрешении, но лучше разрешение часто не менять, выбрать одно-два и с ними работать, иначе увеличится нагрузка на сервер.

oldbay

  • Пользователь
  • **
  • Сообщений: 60
  • Карма: 4
Re: API управления виртуальной комнатой
« Ответ #16 : 17 Июня 2015, 15:38:48 »
Я попробую разъяснить...
Во-первых, броузер есть не везде. Существует куча Linux-like операционных систем, в которых кроме иксов нет больше вообще ничего. В основном это специализированные системы.
Во-вторых, я хочу реализовать лишь маленькую часть функционала в клиентском приложении связанном с управлением самой конференцией (организация, проведение). По-моему для пользователя это будет достаточно удобно, вы так не считаете?
Зачем вообще пользователю помимо клиентского приложения держать еще и открытый браузер? Это просто нерационально.
В-третьих, приложение пишется на питоне, а значит будет работать везде, где есть питон...
Надеюсь, разъяснил...
Есть следующая мысль (причём подобное уже делал): создать шустрое программное ядро взаимодействующее с API OPENMCU и выполняющее по сути функцию парсера переводящего команды взаимодействия с mcu  в своё собственно api на основе геттеров и  сеттеров питоновских классов (можно и без геттеров рулить только переменными, но с ними мне привычнее). Сами классы отдавать наружу через вебсервис xml-rpc, rpic или soap. А уже привязывать к данному вебсервису можно что угодно хоть gui-шные клиенты, хоть вебморды и не обязательно на питоне (кроме rpic).
Использование ОСей по сути почти фиолетово - еси правильно написать (максимально используя модули os и sys) то должно и на *nix и на *win работать почти одинаково (с минимальным допиливанием на межосевом тестировании). Пакетировать такой софт тоже удобно - через cxfreeze можно делаить как win *.msi так и *nix *.tar.bz со всем комплектом зависимостей и даже не требующий для своей работы установленного в системе cpython.
« Последнее редактирование: 17 Июня 2015, 15:51:30 от oldbay »

xak

  • Разработчик
  • Ветеран
  • *****
  • Сообщений: 1791
  • Карма: 58
Re: API управления виртуальной комнатой
« Ответ #17 : 17 Июня 2015, 20:16:03 »
на будущее можно ориентироваться на вебсокет и тот синтаксис, который сейчас начинает формироваться в режиме управления через telnet.
Поддержу. Так как вебсокета нет, а telnet какой никакой, но уже есть, то на на него и надо ориентироваться.

Возможностей у telnet пока мало, по минимуму. Основной задачей была разработка "базы" для дальнейшего добавления "возможностей". Отдает информацию в JSON формате.

Всё что есть на данный момент находится в двух функциях:
1. OpenMCU::OTFControl(const PStringToString & data,...
2. OpenMCU::OTFControl(const PString & data...
- эта как раз для управления текстовыми командами telnet, формирует "PStringToString" для первой функции.

Всё что есть в первой функции, несложно добавить во вторую(для текстовых команд), главное придумать синтаксис команды. Там всё интуитивно должно быть понятно, желающие могут попробовать сами.
Сложнее добавить команды для получения данных в JSON типа "show ...", этих данных нет, их надо формировать.

Togran

  • Новичок
  • *
  • Сообщений: 12
  • Карма: 0
Re: API управления виртуальной комнатой
« Ответ #18 : 18 Июня 2015, 11:15:43 »
Собственно выкладываю UI и скрин окна программы управления видеоконференцией. Хотя, изначально это задумывалось, как виджет в клиенте SIP. Дизайн примитивный, но суть отображает :)
По поводу telnet. Есть вот такая штука https://docs.python.org/2/library/telnetlib.html
Так что, в принципе, и это можно реализовать на питоне. Но проблемма-то не в этом...
Вот перечень комманд:
var OTFC_UNMUTE                  =  0; // corresponds to h323.h
var OTFC_MUTE                    =  1;
var OTFC_MUTE_ALL                =  2;
var OTFC_REMOVE_FROM_V IDEOMIXERS =  3;
var OTFC_REFRESH_VIDEO _MIXERS    =  4;
var OTFC_ADD_AND_INVIT E          =  5;
var OTFC_DROP_MEMBER             =  7;
var OTFC_VAD_NORMAL              =  8;
var OTFC_VAD_CHOSEN_VA N          =  9;
var OTFC_VAD_DISABLE_V AD         = 10;
var OTFC_REMOVE_VMP              = 11;
var OTFC_MOVE_VMP                = 12;
var OTFC_SET_VMP_STATI C          = 13;
var OTFC_VAD_CLICK               = 14;
var OTFC_MIXER_ARRANGE _VMP       = 15;
var OTFC_MIXER_SCROLL_ LEFT       = 16;
var OTFC_MIXER_SHUFFLE _VMP       = 17;
var OTFC_MIXER_SCROLL_ RIGHT      = 18;
var OTFC_MIXER_CLEAR             = 19;
var OTFC_MIXER_REVERT            = 20;
var OTFC_GLOBAL_MUTE             = 21;
var OTFC_SET_VAD_VALUE S          = 22;
var OTFC_TEMPLATE_RECA LL         = 23;
var OTFC_SAVE_TEMPLATE           = 24;
var OTFC_DELETE_TEMPLA TE         = 25;
var OTFC_REMOVE_VMP_ME MBER       = 26;
var OTFC_INVITE                  = 32;
var OTFC_REMOVE_OFFLIN E_MEMBER   = 33;
var OTFC_DROP_ALL_ACTI VE_MEMBERS = 64;
var OTFC_INVITE_ALL_IN ACT_MMBRS  = 65;
var OTFC_REMOVE_ALL_IN ACT_MMBRS  = 66;
var OTFC_YUV_FILTER_MO DE         = 68;
var OTFC_TAKE_CONTROL            = 69;
var OTFC_DECONTROL               = 70;
var OTFC_ADD_VIDEO_MIX ER         = 71;
var OTFC_DELETE_VIDEO_ MIXER      = 72;
var OTFC_SET_VIDEO_MIX ER_LAYOUT  = 73;
var OTFC_SET_MEMBER_VI DEO_MIXER  = 74;
var OTFC_VIDEO_RECORDE R_START    = 75;
var OTFC_VIDEO_RECORDE R_STOP     = 76;
var OTFC_TOGGLE_TPL_LO CK         = 77;
var OTFC_UNMUTE_ALL              = 78;
var OTFC_AUDIO_GAIN_LE VEL_SET    = 79;
var OTFC_OUTPUT_GAIN_S ET         = 80;
var OTFC_REFRESH_ABOOK           = 90;

Мне бы лично очень бы облегчило задачу, если бы кто-нибудь дал комментарий к каждой комманде вида:
"action=32&v=..." делает то-то... Самое главное для меня - это понять, как получить список пользователей в комнате и как эту комнату заблокировать.
С telnet тоже не очень понятно. Где про работу с сервером по telnet можно почитать?

Togran

  • Новичок
  • *
  • Сообщений: 12
  • Карма: 0
Re: API управления виртуальной комнатой
« Ответ #19 : 29 Июня 2015, 11:49:37 »
У меня получилось распарсить файл monitor.txt и достать из него перечень абонентов, количество комнат, кодеки и т.д. Кто не знает - файл можно получить, послав запрос на адрес http://*ip-address*:1420/monitor.txt. Теперь осталось всего две задачи:
1) как управлять видеофильтром (менять сетку и распределять пользователей)?
2) как заблокировать активную комнату, чтобы посторонние абоненты не могли в нее зайти?

Буду благодарен за любую помощь! Заранее спасибо!

Togran

  • Новичок
  • *
  • Сообщений: 12
  • Карма: 0
Re: API управления виртуальной комнатой
« Ответ #20 : 17 Июля 2015, 16:00:31 »
Ну, вобщем, я разобрался с удаленным управлением. Сделал python модуль с функциями изменения сетки потока, обзвоном участников конференции в автоматическом режиме, парсингом monitor.txt, удалением/добавлением пользователей, контроль/деконтроль комнаты. Все необходимые функции. Остался последний вопрос. Как заблокировать комнату, чтобы в процессе конференции не заходили случайные пользователи. Понятия не имею, как это реализовать без костылей. Кто-нибудь может помочь?
Заранее спасибо!

pawka35

  • Новичок
  • *
  • Сообщений: 4
  • Карма: 0
Re: API управления виртуальной комнатой
« Ответ #21 : 23 Мая 2016, 14:25:32 »
чего-то результата народу так и не было явлено:(
Собственно вопрос: как можно получить список зарегестрированных на гейткипере пользователей? список онлайн пользоателей?

есть вроде команды:

#define OTFC_ROOM_SHOW_MEM BERS        211
#define OTFC_SHOW_REGISTRA R_ACCOUNTS  301

Но пока не понял как их применить?

pawka35

  • Новичок
  • *
  • Сообщений: 4
  • Карма: 0
Re: API управления виртуальной комнатой
« Ответ #22 : 26 Мая 2016, 09:42:47 »
ok, google, попробую другой вопрос:

room=room101&otfc=1&action=32&v=h323:1002@192.168.1.1 - подключает абонента, все ок
Также проверены экшены: 5, 26 - все в норме
room=room101&otfc=1&action=7&v=h323:1002@192.168.1.1 - выдает FAIL, хотя должно бы отключить того же абонента... ч.я.д.н?
 
P.S. OFFTOP: может тут не так оживленно, потому что через капчу не пробиться?картинки вообще практически нечитаемы :(

pawka35

  • Новичок
  • *
  • Сообщений: 4
  • Карма: 0
Re: API управления виртуальной комнатой
« Ответ #23 : 27 Мая 2016, 15:55:09 »
второй вопрос снят:
в conrol.js:  queue_otf_request(OTFC_DROP_MEMBER,mid);
соответственно при отключении использовать member id (mid), а не имя, адрес терминала
member id брать, как предлагалось выше из monitor.txt

ну и POST-запрос на отключения будет выглядеть так:
room=room101&otfc=1&action=7&v=1026 , где 1026 - id участника конференции
 

pawka35

  • Новичок
  • *
  • Сообщений: 4
  • Карма: 0
Re: API управления виртуальной комнатой
« Ответ #24 : 07 Июня 2016, 14:19:42 »
первый вопрос, вроде как тоже снят.
Собственно вопрос: как можно получить список зарегестрированных на гейткипере пользователей? список онлайн пользоателей?
есть вроде команды:
#define OTFC_ROOM_SHOW_MEM BERS        211
#define OTFC_SHOW_REGISTRA R_ACCOUNTS  301

Насколько разобрался эти экшены работают через telnet.
Кстати, на windows-сборке OpenMCU telnet не заработал:( точнее дальше приглашения к вводу логина дело не идет:(
Поставил на Ubuntu...с телнетом повеселее пойдет:)

asdasd

  • Гость
Re: API управления виртуальной комнатой
« Ответ #25 : 27 Октября 2020, 21:16:07 »
asdasd asdas dasdas dasd