WebRTC API
Библиотека WebRTC обеспечивает передачу аудио и видео данных (звонков) между браузерами. Стандарт WebRTC определяет набор ECMAScript API, позволяющих обмениваться медиа и произвольными данными с другим браузером или устройством, поддерживающим соответствующий набор протоколов реального времени.
Для использования WebRTC в проекте её следует подключить по имени libwebrtc
в конфигурационном файле,
а также в spec-файле:
BuildRequires: pkgconfig(libwebrtc)
Далее библиотеку можно подключать в C++-код, указывая необходимые классы и их модули. Например:
#include "media/engine/webrtc_media_engine.h"
Подробнее WebRTC API можно изучить в документации.
Архитектура WebRTC
Пример работы с WebRTC
Для ОС Аврора доступен пример WebRTC.
Запуск примера для получения справки:
./peerconnection_client --helpfull
peerconnection_client демонстрирует локальное видео, снятое с камеры (или поддельное видео, если камера недоступна) и видео с подключённого удалённого узла.
peerconnection_client захватывает и воспроизводит звук с помощью устройства PulseAudio по умолчанию.
peerconnection_client имеет встроенный сервер для обмена сигнальными сообщениями через веб-сокет.
- Без аргумента
--connect
ожидается входящее соединение через веб-сокет, порт8881
. - С аргументом
--connect
устанавливается подключение через веб-сокет к сигнальному серверу через порт IP127.0.0.1 8881
.
Следует использовать аргументы командной строки --server
и --port
для переопределения значений
по умолчанию.
Предполагается, что телефон с ОС Аврора имеет IP-адрес 192.168.2.15
.
Звонок из браузера ПК на телефон с установленным peerconnection_client
- Запустить peerconnection_client на телефоне с ОС Аврора.
- Открыть signaling_server/server_test.html в браузере.
- Установить адрес сервера как ws://192.168.2.15:8881.
- Нажать кнопку Подключиться. Кнопка Вызов станет зелёной.
- Нажать кнопку Вызов.
Звонок из peerconnection_client на ПК на телефон с установленным peerconnection_client
- Запустить peerconnection_client на телефоне.
- На ПК выполнить команду:
./peerconnection_client --server=192.168.2.15 --connect --call
Сборка примера
- Пакет rpm собирается с помощью Аврора SDK, см. spec-файл.
- peerconnection_client можно собрать с помощью meson.
meson setup build
meson compile -C build
- peerconnection_client можно собрать с помощью GNU make, см. build_for_host.sh и build_for_phone.sh.
Зависимости примера
- GNU make или meson.
- libwebrtc.
- Модули Qt: Qt5Quick, Qt5Gui, Qt5Qml, Qt5Network, Qt5Core, Qt5WebSockets,
- libpulse.
- streamcamera и streamcamera-qt5 для сборки для ОС Аврора.