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-merge individual recordings into one MP4.
- Node.js
- Go
await client.transcodings.merge({ recordingIds: ["rec_1", "rec_2"] });
client.Transcodings.Merge(ctx, videosdk.MergeTranscodingParams{RecordingIDs: []string{"rec_1", "rec_2"}})
Options: recordingIds (required), webhookUrl, watermark.
HLS to MP4
Convert a finished HLS stream to MP4 in your storage. One of roomId / sessionId / hlsId is required.
- Node.js
- Go
await client.transcodings.hlsToMp4({ hlsId, storage: { type: "s3", bucket: "my-recordings" } });
client.Transcodings.HLSToMP4(ctx, videosdk.HLSToMP4Params{
HLSID: hlsID,
Storage: &videosdk.TranscodingStorage{Type: "s3", Bucket: "my-recordings"},
})
Merge meeting recordings
Concatenate room recordings chronologically. Each reference is an id, optionally with a presigned URL.
- Node.js
- Go
await client.transcodings.meetingRecordingMerge({
recordingIds: ["rec_a", { id: "rec_b", presignedUrl }],
});
client.Transcodings.MeetingRecordingMerge(ctx, videosdk.MeetingRecordingMergeParams{
RecordingIDs: []videosdk.MeetingRecordingRef{{ID: "rec_a"}, {ID: "rec_b", PresignedURL: presignedURL}},
})
Options: recordingIds (required), webhookUrl, presignedOutputUrl.
Track and cancel
- Node.js
- Go
await client.transcodings.list({ status: "processing" });
await client.transcodings.get(id);
await client.transcodings.cancel(id);
client.Transcodings.List(ctx, videosdk.ListTranscodingsParams{Status: videosdk.TranscodingProcessing})
client.Transcodings.Get(ctx, id)
client.Transcodings.Cancel(ctx, id)
list filters: roomId, sessionId, hlsId, status (pending, processing, completed, failed, cancelled).
The transcoding object
id, task, status, roomId, sessionId, hlsId, recordingIds, startedAt, stoppedAt, and file.
Got a Question? Ask us on discord

