remotion-dev/remotion · error
Live media cannot be transcribed.
Error message
Live media cannot be transcribed.
What it means
The transcription pipeline decodes the media offline into a 16kHz WAV for Whisper. Live streams (webcam capture, live HLS/DASH) cannot be decoded this way, so the function proactively rejects any audio track reporting isLive() === true.
Source
Thrown at packages/studio/src/components/Transcription/resample-media-to-16-khz.ts:48
}> = [];
try {
onProgress(0);
const audioTracks = await input.getAudioTracks();
const primaryVideoTrack =
audioStreamIndex === null ? await input.getPrimaryVideoTrack() : null;
const audioTrack =
audioStreamIndex !== null
? (audioTracks[audioStreamIndex] ?? null)
: primaryVideoTrack
? await primaryVideoTrack.getPrimaryPairableAudioTrack()
: (audioTracks[0] ?? null);
if (audioTrack === null) {
throw new Error('The selected media does not have an audio track.');
}
if (await audioTrack.isLive()) {
throw new Error('Live media cannot be transcribed.');
}
const output = new Output({
format: new WavOutputFormat(),
target: new NullTarget(),
});
const conversion = await Conversion.init({
input,
output,
tracks: 'all',
video: {discard: true},
audio: (track) => {
if (track.id !== audioTrack.id) {
return {discard: true};
}
return {
codec: 'pcm-f32',View on GitHub (pinned to b2f4e34732)
Solutions
- Use a recorded (non-live) media file as the transcription source.
- Record the live stream to a file first, then transcribe the recording.
- Choose a VOD rendition of the stream instead of the live manifest.
Example fix
// before
addCaptionJob({src: 'https://example.com/live/stream.m3u8'});
// after
addCaptionJob({src: '/recording.mp4'}); // recorded file Defensive patterns
Strategy: validation
Validate before calling
if (await audioTrack.isLive()) {
throw new Error('Cannot transcribe a live stream.');
} Try / catch
try {
await transcribe(src);
} catch (e) {
if (e.message === 'Live media cannot be transcribed.') {
alert('Please provide a recorded file instead of a live stream.');
}
} Prevention
- Reject isLive() sources upstream.
- Record live streams before transcription.
- Use VOD URLs, not live manifests.
When it happens
Trigger: Attempting to transcribe a live media source — e.g. a MediaStream-backed track or live-streamed URL where audioTrack.isLive() resolves true.
Common situations: Pointing the transcription modal at a live stream URL or capture device instead of a recorded file; testing with a camera/microphone source.
Understand the failure class
Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.
Related errors
- The selected media does not have an audio track.
- No audio stream found in '${input_path}'. Ensure the video c
- Could not determine duration of ${src}, but "loop" was set.
- No audio track found
- Live streams are not currently supported by Remotion. Sorry!
AI-assisted analysis of remotion-dev/remotion@b2f4e34732 (2026-09-09).
Data as JSON: /api/errors/ca200cffb1569385.
Report an issue: GitHub.