INTEGRITY Документация

Запись треков

Запись треков позволяет записывать звук участников в виде отдельных файлов WebM вместо одной составной записи встречи. Используйте её, если вам нужен контроль на уровне отдельных спикеров над тем, что вы сохраняете, обрабатываете или просматриваете.

С записью трека можно записывать треки конкретных участников, передавая user_ids, что полезно для рабочих процессов с конфиденциальным содержимым или регулируемых процессов, где запись каждого участника не требуется. Если вы не укажете user_ids, по умолчанию RealtimeKit записывает аудиодорожки всех участников в виде отдельных файлов WebM.

Чтобы передать user_ids для записи дорожек конкретного участника используйте следующие минимальные версии SDK:

Запись треков создаёт один файл для каждого записываемого участника.

Доступность и ограничения

У записи треков есть следующие требования и ограничения:

Лимит Описание
Активная встреча У встречи должна быть активная текущая сессия.
Тип медиа Только 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 в миллисекундах, соответствующую моменту создания файла.