Skip to main content

Transcodings

The transcodings resource turns finished recordings and HLS streams into downloadable files. Start a job, then track it with list / get or stop it with cancel.

Merge recordings

Composite-merges individual recordings into a single MP4.

await client.transcodings.merge({ recordingIds: ["rec_1", "rec_2"] });

Options: recordingIds (required), webhookUrl, watermark.

HLS to MP4

Converts a finished HLS stream to MP4 in your storage. One of roomId / sessionId / hlsId is required.

await client.transcodings.hlsToMp4({ hlsId, storage: { type: "s3", bucket: "my-recordings" } });

Merge meeting recordings

Concatenates room recordings chronologically. Each reference is an id, optionally with a presigned URL.

await client.transcodings.meetingRecordingMerge({
recordingIds: ["rec_a", { id: "rec_b", presignedUrl }],
});

Options: recordingIds (required), webhookUrl, presignedOutputUrl.

Track and cancel

await client.transcodings.list({ status: "processing" });
await client.transcodings.get(id);
await client.transcodings.cancel(id);

list filters: roomId, sessionId, hlsId, status (pending, processing, completed, failed, cancelled).

The transcoding object

Returned by the start methods (transcodings.merge, hlsToMp4, meetingRecordingMerge) and by transcodings.get, list, and cancel.

FieldTypeDescription
idstringTranscoding job id.
taskstringJob kind (composite-merge, hls-to-mp4, meeting-recording-merge).
statusstringJob status (pending, processing, completed, failed, cancelled).
roomIdstringRoom the job is for.
sessionIdstringSession the job is for.
hlsIdstringSource HLS id (for hls-to-mp4).
recordingIdsstring[]Source recording ids.
fileobjectOutput file (fileUrl, filePath, size, type).
startedAtstringStart time (ISO-8601).
stoppedAtstringStop time, null while running.

Got a Question? Ask us on discord