remotion-dev/remotion · error

Live streams are not currently supported by Remotion. Sorry!

Error message

Live streams are not currently supported by Remotion. Sorry! Source: ${src}

What it means

Thrown by getFramesSinceKeyframe in @remotion/media when the primary video track of a source reports itself as a live stream. This helper decodes frames relative to the last keyframe and needs a finite, seekable file; live streams cannot be seeked arbitrarily. Fires at get-frames-since-keyframe.ts:98.

Source

Thrown at packages/media/src/video-extraction/get-frames-since-keyframe.ts:98

		const format = await getFormatOrNullOrNetworkError(input);
		const isMatroska = format === MATROSKA || format === WEBM;

		const getVideoSinks = async (): Promise<VideoSinkResult> => {
			if (format === 'network-error') {
				return 'network-error';
			}

			if (format === null) {
				return 'unknown-container-format';
			}

			const videoTrack = await input.getPrimaryVideoTrack();
			if (!videoTrack) {
				return 'no-video-track';
			}

			if (await videoTrack.isLive()) {
				throw new Error(
					'Live streams are not currently supported by Remotion. Sorry! Source: ' +
						src,
				);
			}

			if (await videoTrack.isRelativeToUnixEpoch()) {
				throw new Error(
					'Streams with UNIX timestamps are not currently supported by Remotion. Sorry! Source: ' +
						src,
				);
			}

			const canDecode = await videoTrack.canDecode();

			if (!canDecode) {
				if (videoTrack.codec === 'prores') {
					return 'cannot-decode-prores';
				}

View on GitHub (pinned to 78fe4bb3fd)

Solutions

  1. Use a finite recorded file (MP4/WebM) or a complete VOD HLS playlist.
  2. Record the live stream to a file and reference that file instead.
  3. Ensure any HLS playlist is a complete VOD playlist (has EXT-X-ENDLIST).

Example fix

// before
<OffthreadVideo src={'https://example.com/live/index.m3u8'} />

// after
<OffthreadVideo src={staticFile('recorded.mp4')} />
Defensive patterns

Strategy: validation

Validate before calling

null

Try / catch

// Validate source is a finite file before use; no runtime recovery.
try {
  return <OffthreadVideo src={src} />;
} catch (e) {
  if (e instanceof Error && e.message.includes('Live streams')) {
    return <OffthreadVideo src={staticFile('fallback.mp4')} />;
  }
  throw e;
}

Prevention

When it happens

Trigger: An <OffthreadVideo>/<Video> source whose parsed video track reports live (HLS live playlist, DASH live, ongoing segment stream). videoTrack.isLive() resolves true during keyframe-relative frame extraction.

Common situations: Feeding a live broadcast URL, webcam feed, or HLS playlist marked LIVE. This path is the offthread/video-extraction pipeline, so it fires during rendering or offthread frame extraction specifically.

Related errors


AI-assisted analysis of remotion-dev/remotion@78fe4bb3fd (2026-08-12). Data as JSON: /api/errors/1a23e76231bcae8e. Report an issue: GitHub.