← Cloudflare Realtime / realtime / realtimekit / recording-guide
Запись треков
Запись треков позволяет записывать звук участников в виде отдельных файлов WebM вместо одной составной записи встречи. Используйте её, если вам нужен контроль на уровне отдельных спикеров над тем, что вы сохраняете, обрабатываете или просматриваете.
С записью трека можно записывать треки конкретных участников, передавая user_ids, что полезно для рабочих процессов с конфиденциальным содержимым или регулируемых процессов, где запись каждого участника не требуется. Если вы не укажете user_ids, по умолчанию RealtimeKit записывает аудиодорожки всех участников в виде отдельных файлов WebM.
Чтобы передать user_ids для записи дорожек конкретного участника используйте следующие минимальные версии SDK:
- Web Core:
@cloudflare/realtimekitверсия1.4.0или более поздней версии - Web UI Kit:
@cloudflare/realtimekit-ui,@cloudflare/realtimekit-react-ui, или@cloudflare/realtimekit-angular-uiверсия1.1.2или более поздней версии - Android Core или iOS Core: версия
2.0.0или более поздней версии - Android UI Kit или iOS UI Kit: версия
1.1.0или более поздней версии
Запись треков создаёт один файл для каждого записываемого участника.
Доступность и ограничения
У записи треков есть следующие требования и ограничения:
| Лимит | Описание |
|---|---|
| Активная встреча | У встречи должна быть активная текущая сессия. |
| Тип медиа | Только audio слои записываются. |
| Выбор участника | Передайте до 100 значений в user_ids. |
| Хранилище | Файлы загружаются в управляемый RealtimeKit bucket R2 без платы за исходящий трафик (zero-egress). |
| Хранение файлов | Срок действия URL для скачивания из бакета RealtimeKit истекает через семь дней. |
Запуск записи дорожки
Запишите отдельных участников
Чтобы записывать отдельные аудиотреки конкретных участников, вызовите POST /recordings/track с ID встречи и участником user_ids.
curl --request POST \
--url https://api.cloudflare.com/client/v4/accounts/<account_id>/realtime/kit/<app_id>/recordings/track \
--header 'Authorization: Bearer <api_token>' \
--header 'Content-Type: application/json' \
--data '{
"meeting_id": "97440c6a-140b-40a9-9499-b23fd7a3868a",
"user_ids": ["user-123", "user-456"]
}'RealtimeKit записывает текущих и будущих участников, у которых user_id соответствует allowlist. Участники, чьи user_id не указаны, не записываются.
Запись всех участников в виде отдельных дорожек
Опустите user_ids чтобы записывать отдельные аудиодорожки всех участников встречи в реальном времени. RealtimeKit создает один файл WebM для каждого записанного участника.
curl --request POST \
--url https://api.cloudflare.com/client/v4/accounts/<account_id>/realtime/kit/<app_id>/recordings/track \
--header 'Authorization: Bearer <api_token>' \
--header 'Content-Type: application/json' \
--data '{
"meeting_id": "97440c6a-140b-40a9-9499-b23fd7a3868a"
}'Ответ включает ID записи. Используйте этот ID, чтобы остановить или получить запись.
{
"success": true,
"data": {
"recording": {
"id": "fff40c6a-140b-40a9-9499-b23fd7a3868a",
"meeting_id": "97440c6a-140b-40a9-9499-b23fd7a3868a",
"status": "INVOKED",
"type": "TRACK",
"output_file_name": "{{file_name_prefix}}_{{user_id}}_{{peer_id}}_{{stream_kind}}_{{media_kind}}_{{date_time}}.webm"
}
}
}Настройка имен файлов с префиксами
Используйте layers.default.file_name_prefix чтобы добавлять префикс к каждому создаваемому файлу записи трека.
{
"meeting_id": "97440c6a-140b-40a9-9499-b23fd7a3868a",
"layers": {
"default": {
"media_kind": "audio",
"file_name_prefix": "speaker"
}
}
}Если вы не укажете layers, RealtimeKit использует default в качестве префикса имени файла.
Остановка записи дорожки
Используйте эндпойнт обновления записи чтобы остановить запись трека.
curl --request PUT \
--url https://api.cloudflare.com/client/v4/accounts/<account_id>/realtime/kit/<app_id>/recordings/<recording_id> \
--header 'Authorization: Bearer <api_token>' \
--header 'Content-Type: application/json' \
--data '{
"action": "stop"
}'Запись треков также останавливается при завершении сессии встречи.
После остановки записи трека RealtimeKit загружает WebM-файлы каждого участника и перемещает запись в UPLOADED.
Скачивание файлов треков
Запись треков использует тот же жизненный цикл статуса записи, что и составная запись. Чтобы отслеживать статус, обратитесь к Отслеживание статуса записи.
Когда запись достигает UPLOADED, получите сведения о записи или подпишитесь на recording.statusUpdate вебхук. Для записи треков, download_url содержит URL-адреса файлов WebM для каждого участника, сгруппированные по уровням.
{
"download_url": [
{
"layer_name": "default",
"download_urls": {
"speaker_user-123_peer-456_peer_audio_1760000000000.webm": {
"download_url": "https://example.com/presigned-url"
}
}
}
]
}Имена файлов используют следующий формат:
{{file_name_prefix}}_{{user_id}}_{{peer_id}}_{{stream_kind}}_{{media_kind}}_{{date_time}}.webm date_time значение представляет собой временную метку Unix в миллисекундах, соответствующую моменту создания файла.