Документация Запланировать пилот

Создание пользовательского приложения для записи с использованием Recording SDK

Когда вы присоединяетесь ко встрече RealtimeKit, макет автоматически формируется так, чтобы обеспечить наилучшее взаимодействие: акцент делается на общем контенте, а активные спикеры выделяются, при этом остальные участники отображаются в виде небольших миниатюр. Когда вы начинаете запись встречи, она записывается с тем же макетом с помощью стандартного компонента UI Kit под названием RtkGrid ↗.

Если вы хотите настроить макет для своего приложения записи, собственные SDK записи RealtimeKit дают возможность гибко настраивать внешний вид записей по своему усмотрению. Доступны, например, следующие варианты:

Как работает рекордер

Когда вы вызываете Начать запись, RealtimeKit запускает контейнер Cloudflare, открывает в нём браузер Chrome и загружает URL-адрес приложения записи. Если вы не укажете собственный URL-адрес в url параметр, используется встроенное приложение записи RealtimeKit.

Параметры URL

Перед загрузкой вашего собственного приложения записи в браузере Chrome RealtimeKit добавляет authToken и config параметры запроса к URL. Например, если вы укажете этот URL в Начать запись API:

https://example.com/my-custom-recorder

RealtimeKit загружает приложение со следующими параметрами:

https://example.com/my-custom-recorder?authToken=AUTH_TOKEN_CREATED_BY_REALTIMEKIT&config=CONFIG_CREATED_BY_REALTIMEKIT

Значения-заполнители представляют параметры, предоставляемые RealtimeKit. Не добавляйте authToken или config самостоятельно к URL, переданному в Start Recording API. Ваше приложение должно считывать оба параметра из URL.

Токен авторизации

RealtimeKit создаёт authToken автоматически для встречи, запись которой вы запускаете. Этот токен создаётся с помощью recorder_preset_v2 preset. Если вы не создали recorder_preset_v2 preset, RealtimeKit использует глобальный preset с таким же именем, который управляется RealtimeKit и не отображается в вашем аккаунте.

Ваше собственное приложение для записи обязательно принять это authToken и использовать его для инициализации SDK RealtimeKit, чтобы получить meeting объект.

параметр Config

Любая конфигурация, которую вы указываете в Start Recording API, например настройки водяного знака, передаётся в приложение записи через config параметр запроса. Приложение записи по умолчанию автоматически считывает и применяет эту конфигурацию.

Если вы используете собственное приложение для записи, вы несёте ответственность за считывание и применение config. Все, что ваше приложение выводит в браузере, записывается как есть. RealtimeKit не применяет к выводу пользовательского приложения записи никакой дополнительной компоновки, водяных знаков или другой обработки.

Флаги пресета записи

hidden_participant флаг управляет только видимостью рекордера. Если он включён, рекордер скрывается от остальных участников встречи.

is_recorder флаг обозначает участника как рекордер и обеспечивает корректную работу записи. Если вы создаёте собственный recorder_preset_v2 preset для настройки цветов или внешнего вида записи, необходимо сохранить is_recorder включено. Удаление is_recorder может привести к сбою записи. Удаление hidden_participant может привести к тому, что индикатор записи станет виден другим участникам.

Локальное тестирование

Локальное тестирование позволяет просматривать интерфейс приложения записи. Если открыть URL-адрес приложения записи напрямую на локальной машине, запись не начнётся.

Только для локального тестирования создайте любой пресет с hidden_participant: true, затем передайте токен авторизации, созданный с этим пресетом, в authToken параметр запроса при открытии URL локального приложения записи. Это позволяет увидеть внешний вид интерфейса рекордера. Не указывайте локальный тестовый токен в качестве authToken в URL, отправляемом в Start Recording API. При реальной записи RealtimeKit автоматически создаёт и передаёт токен записи.

Чтобы ускорить разработку, используйте Cloudflare Tunnel чтобы открыть доступ к вашему локальному приложению записи. Например, если ваше приложение работает на порте 1111, запустите Quick Tunnel с:

cloudflared tunnel --url http://localhost:1111

Замените 1111 с портом, используемым вашим локальным приложением. cloudflared выводит публичный trycloudflare.com URL-адрес. Вы можете указать этот URL в качестве адреса собственного приложения для записи при запуске записи, чтобы контейнер Cloudflare мог загрузить ваше локальное приложение.

При локальном тестировании вы можете увидеть ошибку WebSocket в консоли браузера, потому что ваш браузер не может подключиться к localhost:8080. Во время локального тестирования эту ошибку можно игнорировать. Рекордер использует этот порт внутри хостингового контейнера Cloudflare, и именно через соединение WebSocket приложение записи сообщает контейнеру, что нужно записать отрисованную веб-страницу.

Примеры

См. примеры приложений на SDK записи ↗ примеры реализации, включая пример записи с водяным знаком ↗.

Справочник Recording SDK

Пользовательские SDK записи используются поверх UI Kit или Core SDK. @cloudflare/realtimekit-recording-sdk пакет ↗ предоставляет RealtimeKitRecording класс для управления функциональностью записи.

Конструктор

constructor(options)

Создает экземпляр RealtimeKitRecording в качестве класса.

Параметры конструктора

options (object): Объект options. Все параметры конструктора необязательны. Если вы не укажете какой-либо параметр, RealtimeKit использует значение по умолчанию.

options (object) Описание
options.waitTimeMs (number) Время (в миллисекундах) ожидания после выхода всех пиров перед остановкой записи. Этот параметр применяется, когда autoStop установлен в true.
options.autoStart (boolean) По умолчанию: true, поэтому запись начинается автоматически, когда init() вызывается. Установите для него значение false только если вы хотите вручную начать запись с помощью startRecording(). Если задано значение false, вы должны вызвать startRecording() в течение 2 минут после установления соединения WebSocket, иначе процесс записи завершится ошибкой.
options.autoStop (boolean) По умолчанию: true, поэтому запись останавливается автоматически после того, как все участники покинут встречу. Установите значение false только если вы хотите вручную остановить запись с помощью stopRecording().
options.scanInterval (number) Интервал (в миллисекундах) между проверками автоматического выхода пира.
options.devMode (boolean) Установите значение true, чтобы включить режим разработки, который включает логи и отключает некоторые функции. Также убедитесь, что это значение установлено в true и при локальном тестировании вашего recording-app.

Методы

init(client: RealtimeKitClient)

Инициализирует SDK, предоставляя RealtimeKitClient объект. Вызовите это после создания объекта встречи и до вызова meeting.joinRoom().

startRecording();

В большинстве случаев оставьте autoStart имеет значение true (значение по умолчанию), чтобы запись начиналась автоматически. Чтобы запускать запись вручную, установите autoStart к false в параметрах конструктора перед вызовом этого метода.

stopRecording();

Обычно вам не нужно вызывать этот метод, потому что autoStop по умолчанию равно true. Чтобы остановить запись вручную, задайте autoStop к false в параметрах конструктора перед вызовом этого метода.

cleanup();

Выполняет задачи по очистке после выхода из встречи, например удаляет добавленные обработчики событий и закрывает WebSocket-соединения.

Создание пользовательского приложения для записи

Чтобы создать приложение для записи ваших встреч RealtimeKit, выполните следующие шаги.

Шаг 1: Установите SDK

npm i @cloudflare/realtimekit-recording-sdk

Шаг 2: Импортируйте RealtimeKitRecording объект

import { RealtimeKitRecording } from "@cloudflare/realtimekit-recording-sdk";

Шаг 3: Создайте RealtimeKitRecording объект

const recordingSdk = new RealtimeKitRecording(options);

Шаг 4: Инициализируйте SDK записи

Вызовите init после создания объекта meeting и перед joinRoom вызывается.

// Call this after you have initialized the RealtimeKit SDK and have the meeting object
await recordingSdk.init(meeting);

(Необязательно) Шаг 5: запустите запись вручную

Чтобы запустить запись вручную, задайте autoStart к false в RealtimeKitRecording опции конструктора. Затем вызовите startRecording() после того как вы загрузили содержимое интерфейса и готовы начать запись.

await recordingSdk.startRecording();

(Необязательно) Шаг 6: остановите запись вручную

Чтобы остановить запись вручную, задайте autoStop к false в RealtimeKitRecording опции конструктора. Затем вызовите stopRecording() когда будете готовы остановить запись.

await recordingSdk.stopRecording();

Как только stopRecording вызывается, рекордер в вашем приложении для записи завершает работу через несколько секунд. После этого выполнить какие-либо дальнейшие действия в приложении для записи уже не получится.

Шаг 7: Разверните приложение записи

После создания приложения разверните его с помощью такой платформы, как Cloudflare Workers ↗. Обязательно запишите URL-адрес развернутого приложения: его нужно будет указать в API записи RealtimeKit.

Шаг 8: Укажите пользовательский URL

В Начало записи встречи API укажите собственный URL (полученный на предыдущем шаге), чтобы указать расположение вашего развёрнутого приложения. Не добавляйте authToken к этому URL. RealtimeKit добавляет сгенерированный authToken и config параметры при загрузке приложения.

Запросите бесплатный пилот

Запланировать пилот