remotion-dev/remotion · error · Error

Live streams are not currently supported by Remotion…

Error message

Live streams are not currently supported by Remotion. Sorry! Source: ${typeof src === 'string' ? src : `audio track ${src.id}`}

What it means

loadWaveformPeaks extracts audio peaks for the Studio timeline using Mediabunny audio tracks. Live streams (isLive() === true) cannot be decoded into waveform peaks, so the function throws with the offending source (URL string or audio track id) in the message.

Solutions

  1. Use a static, downloadable audio file (MP3/WAV/AAC etc.) instead of a live stream URL.
  2. Record/snapshot the live stream to a file first, then reference the recorded asset.
  3. Check the source URL — if it is an HLS manifest or live endpoint, replace it with a VOD asset.
  4. If using a track object, verify isLive() is false before calling loadWaveformPeaks.

Example fix

// before
loadWaveformPeaks('https://example.com/live/stream.m3u8');
// after
loadWaveformPeaks('https://example.com/audio/episode-1.mp3');
Defensive patterns

Strategy: try-catch

Validate before calling

if (typeof src === 'string' && /\.(m3u8|mpd)(\?|$)/.test(src)) {
  throw new Error('Refusing live/VOD-manifest source for waveform loading');
}

Type guard

const isLiveTrack = async (t: AudioTrack) => await t.isLive();

Try / catch

try {
  const {peaks} = await loadWaveformPeaks(src);
} catch (e) {
  if (e.message.includes('Live streams are not currently supported')) {
    peaks = emptyPeaks; // or use a pre-recorded snapshot of the stream
  } else throw e;
}

Prevention

When it happens

Trigger: Passing an <Audio>/OffthreadAudio source that resolves to a live stream (e.g. an HLS/DASH live URL or live radio stream) to the waveform loader; supplying an audio track object whose isLive() returns true.

Common situations: Pointing a composition at a live radio/TV feed, an event stream URL, or a CDN URL that serves live content instead of a static file.

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


AI-assisted analysis of remotion-dev/remotion@b2f4e34732 (2026-09-09). Data as JSON: /api/errors/ff44f3b650852427. Report an issue: GitHub.

Appendix: source

Thrown at packages/timeline-utils/src/audio-waveform/load-waveform-peaks.ts:72

			onProgress: options?.onProgress,
		});
		return cached;
	}

	const input =
		typeof src === 'string'
			? new Input({formats: ALL_FORMATS, source: new UrlSource(src)})
			: null;

	try {
		const audioTrack =
			typeof src === 'string' ? await input!.getPrimaryAudioTrack() : src;
		if (!audioTrack) {
			return {peaks: new Float32Array(0), averageVolume: null};
		}

		if (await audioTrack.isLive()) {
			throw new Error(
				'Live streams are not currently supported by Remotion. Sorry! Source: ' +
					(typeof src === 'string' ? src : `audio track ${src.id}`),
			);
		}

		if (await audioTrack.isRelativeToUnixEpoch()) {
			throw new Error(
				'Streams with UNIX timestamps are not currently supported by Remotion. Sorry! Source: ' +
					(typeof src === 'string' ? src : `audio track ${src.id}`),
			);
		}

		const audioSampleRate = await audioTrack.getSampleRate();
		const durationInSeconds =
			(await audioTrack.getDurationFromMetadata({skipLiveWait: true})) ??
			(await audioTrack.computeDuration({skipLiveWait: true}));
		const totalPeaks = Math.ceil(durationInSeconds * waveformSampleRate);
		const samplesPerPeak = Math.max(

View on GitHub (pinned to b2f4e34732)