Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
comet:video:api [2018/02/24 12:17] anastation468 [Comet Video API - Вступление] |
comet:video:api [2018/07/18 16:14] levhav [Настройка FreeSwitch] |
||
---|---|---|---|
Строка 37: | Строка 37: | ||
* Видео/Аудио звонки (По WebRTC) | * Видео/Аудио звонки (По WebRTC) | ||
* Видео/Аудио конференции на несколько участников (По WebRTC) | * Видео/Аудио конференции на несколько участников (По WebRTC) | ||
- | * Видео трансляции для стриминга один ко многим (По WebRTC отправка видео от того кто видео поток публикует и доставка зрителям в форматах hls и mpeg-dash с задержкой от 5 секунд (теоретически минимально возможная задержка для hls потока) до 20 - 40 секунд в зависимости от конфигурации ретрансляторов и настроек качества) | + | * Видео трансляции для стриминга один ко многим (По WebRTC отправка видео от того, кто видео поток публикует и доставка зрителям в форматах hls и mpeg-dash с задержкой от 5 секунд (теоретически минимально возможная задержка для hls потока) до 20 - 40 секунд в зависимости от конфигурации ретрансляторов и настроек качества) |
- | <note important>Если обнаружатся проблемы в настройке или в работе или пробелы в документации не стесняйтесь [[https://gitter.im/CppComet/Lobby|задавать вопросы]] и [[https://github.com/CppComet/comet-server/issues|писать баг репорты.]]</note> | + | <note important>Если обнаружатся проблемы в настройке или в работе или пробелы в документации, не стесняйтесь [[https://gitter.im/CppComet/Lobby|задавать вопросы]] и [[https://github.com/CppComet/comet-server/issues|писать баг репорты.]]</note> |
====== Демо видео конференций ====== | ====== Демо видео конференций ====== | ||
Строка 67: | Строка 67: | ||
====== CometQL API ====== | ====== CometQL API ====== | ||
- | В CometQL добавлена таблица conference которая содержит информацию о активных конференциях. | + | В CometQL добавлена таблица conference, которая содержит информацию о активных конференциях. |
- | Чтобы создать новую конференцию и добавить в неё участника надо выполнить запрос | + | Чтобы создать новую конференцию и добавить в неё участника, надо выполнить запрос |
<code sql> | <code sql> | ||
INSERT INTO conference (name, user_id, caller_id, message, profile)VALUES('1', 2, 2, "", "video"); | INSERT INTO conference (name, user_id, caller_id, message, profile)VALUES('1', 2, 2, "", "video"); | ||
Строка 78: | Строка 78: | ||
* name - имя конференции (состоит только из цифр) | * name - имя конференции (состоит только из цифр) | ||
* user_id - идентификатор добавляемого в конференцию пользователя | * user_id - идентификатор добавляемого в конференцию пользователя | ||
- | * caller_id - идентификатор того пользователя который иницирует звонок (не обязательный параметр) | + | * caller_id - идентификатор того пользователя, который иницирует звонок (не обязательный параметр) |
* message - произвольное сообщение | * message - произвольное сообщение | ||
- | * profile - режим звонка возможны варианты "audio", "video" (В open source версии и по запросу в поддержку в saas версии можно создавать свои режимы видео конференций чтоб добавлять водяные знаки, показывать не просто говорящего в данный момет участника конференции, а всех сразу или настраивать правила показа участников конференции на общем холсте. Все возможности перечислены в документации на [[https://freeswitch.org/confluence/display/FREESWITCH/mod_conference|mod_conference]]) | + | * profile - режим звонка возможны варианты "audio", "video" (В open source версии и по запросу в поддержку в saas версии можно создавать свои режимы видео конференций, чтобы добавлять водяные знаки, показывать не просто говорящего в данный момет участника конференции, а всех сразу или настраивать правила показа участников конференции на общем холсте. Все возможности перечислены в документации на [[https://freeswitch.org/confluence/display/FREESWITCH/mod_conference|mod_conference]]) |
- | Чтоб добавить ещё одного участника надо выполнить такой же запрос только передать новый user_id и старый name. Соответственно создание конференции из 5 участников потребует 5 запросов вставки в таблицу conference | + | Чтобы добавить ещё одного участника, надо выполнить такой же запрос только передать новый user_id и старый name. Соответственно создание конференции из 5 участников потребует 5 запросов вставки в таблицу conference |
Пример можно смотреть в файле [[https://github.com/CppComet/video-chat-example|call.php]] | Пример можно смотреть в файле [[https://github.com/CppComet/video-chat-example|call.php]] | ||
Строка 101: | Строка 101: | ||
</note> | </note> | ||
- | Запрос выборки из таблицы `conference` только покажет кому были отправлены приглашения в конференцию. | + | Запрос выборки из таблицы `conference` только покажет, кому были отправлены приглашения в конференцию. |
<code sql> | <code sql> | ||
select * from `conference` where name = "101"; | select * from `conference` where name = "101"; | ||
</code> | </code> | ||
- | Вовсе не факт что все эти люди до сих пор в этой конференции находятся. | + | Вовсе не факт, что все эти люди до сих пор в этой конференции находятся. |
- | Чтоб узнать кто разговаривает в данный момент надо сделать запрос к таблице `conference_members` | + | Чтобы узнать, кто разговаривает в данный момент надо сделать запрос к таблице `conference_members` |
<code sql> | <code sql> | ||
select * from `conference_members` | select * from `conference_members` | ||
Строка 116: | Строка 116: | ||
* user_id - идентификатор пользователя | * user_id - идентификатор пользователя | ||
* join_time - количество секунд прошедшее с момента подключения пользователя | * join_time - количество секунд прошедшее с момента подключения пользователя | ||
- | * last_talking - количество секунд прошедшее с того момента когда он что то говорил в конференции. | + | * last_talking - количество секунд прошедшее с того момента, когда он что-то говорил в конференции. |
Строка 134: | Строка 134: | ||
// Колбек вызываемый перед началом подключения для звонка | // Колбек вызываемый перед началом подключения для звонка | ||
- | // Предполагается что в нём будут заданы настройки для близжайшего звонка | + | // Предполагается, что в нём будут заданы настройки для близжайшего звонка |
- | // Такие как и параметры audio_remote, video_local, video_remote и возможно ещё какието. | + | // Такие как и параметры audio_remote, video_local, video_remote и возможно ещё какие–то. |
// А потом будет вызвана функция cometVideoApi.acceptCall(event) | // А потом будет вызвана функция cometVideoApi.acceptCall(event) | ||
// А если не будет вызвана то значит мы не взяли трубку. | // А если не будет вызвана то значит мы не взяли трубку. | ||
Строка 149: | Строка 149: | ||
} | } | ||
- | // Берём трубку если хотим | + | // Берём трубку, если хотим |
cometVideoApi.acceptCall({ | cometVideoApi.acceptCall({ | ||
// Тип звонка 'audio' | 'video' | // Тип звонка 'audio' | 'video' | ||
Строка 203: | Строка 203: | ||
| | ||
/** | /** | ||
- | * Колбек когда я и мой собеседник подключились к серверу | + | * Колбек, когда я и мой собеседник подключились к серверу |
* @param {object} event | * @param {object} event | ||
* { | * { | ||
Строка 258: | Строка 258: | ||
pipesalt = pipeSecretSalt | pipesalt = pipeSecretSalt | ||
</code> | </code> | ||
+ | |||
+ | |||
+ | ===== Настройка FreeSwitch ===== | ||
+ | |||
+ | Есть [[https://hub.docker.com/r/cppcomet/freeswitch-video/|docker образ]] с нужными настройками для работы FreeSwitch с комет сервером. | ||
+ | |||
+ | Скачать образ | ||
+ | <code bash> | ||
+ | docker pull cppcomet/freeswitch-video | ||
+ | </code> | ||
+ | |||
+ | Запустить | ||
+ | <code bash> | ||
+ | docker run -v /root/FreeSwitch-in-docker/conf:/usr/local/freeswitch/conf -v /root/FreeSwitch-in-docker/certs:/usr/local/freeswitch/certs --net host -it cppcomet/freeswitch-video | ||
+ | </code> | ||
+ | |||
+ | Нужно указать доступ к ssl сертификату и папке с файлами конфигурации. | ||
+ | |||
+ | |||
+ | |||
===== Сборка FreeSwitch из исходников с нужными модулями ===== | ===== Сборка FreeSwitch из исходников с нужными модулями ===== | ||
Строка 330: | Строка 350: | ||
===== Включение модулей в автозагрузку ===== | ===== Включение модулей в автозагрузку ===== | ||
- | Для включения в автозагрузку модулей надо убедится что в файле /usr/local/freeswitch/conf/autoload_configs/modules.conf.xml есть следующие строки | + | Для включения в автозагрузку модулей надо убедится, что в файле /usr/local/freeswitch/conf/autoload_configs/modules.conf.xml есть следующие строки |
<code xml> | <code xml> | ||
<load module="mod_av"/> | <load module="mod_av"/> | ||
Строка 345: | Строка 365: | ||
==== Настройка xml_curl.conf на freeswitch ==== | ==== Настройка xml_curl.conf на freeswitch ==== | ||
- | В файле <code>/usr/local/freeswitch/conf/autoload_configs/xml_curl.conf.xml</code> надо вписать порт и адрес для подключения к комет серверу с реквизитами которые мы задали в секции [freeswitch] | + | В файле <code>/usr/local/freeswitch/conf/autoload_configs/xml_curl.conf.xml</code> надо вписать порт и адрес для подключения к комет серверу с реквизитами, которые мы задали в секции [freeswitch] |
<code xml> | <code xml> | ||
Строка 358: | Строка 378: | ||
</code> | </code> | ||
- | Эта настройка отвечает за то что бы пользователи которые авторизованы на комет сервере могли по тем же данным авторизации подключится к freeswitch для совершения звонка. | + | Эта настройка отвечает за то, чтобы пользователи, которые авторизованы на комет сервере могли по тем же данным авторизации подключится к freeswitch для совершения звонка. |
Подробности по работе модуля тут [[https://freeswitch.org/confluence/display/FREESWITCH/mod_xml_curl+PHP+example|mod_xml_curl]] | Подробности по работе модуля тут [[https://freeswitch.org/confluence/display/FREESWITCH/mod_xml_curl+PHP+example|mod_xml_curl]] |