remotion-dev/remotion · error · Error
Live streams are not currently supported by Remotion. Sorry!
Error message
Live streams are not currently supported by Remotion. Sorry! Source: ${this.src} What it means
Thrown by MediaPlayer in @remotion/media when the resolved primary video track reports itself as a live stream. Remotion renders frame-by-frame and needs a finite, seekable file; live streams (e.g. HLS/DASH with ongoing segments) cannot be seeked to an arbitrary frame, so decoding is rejected. This check runs during the video-track decode path at media-player.ts:309.
Source
Thrown at packages/media/src/media-player.ts:309
if (this.isDisposalError()) {
return {type: 'disposed'};
}
this.totalDuration = durationInSeconds;
const audioTrack = await resolveAudioTrack({
videoTrack,
audioTracks,
audioStreamIndex: this.audioStreamIndex,
});
if (!videoTrack && !audioTrack) {
return {type: 'no-tracks'};
}
if (videoTrack && this.tagType === 'video') {
if (await videoTrack.isLive()) {
throw new Error(
'Live streams are not currently supported by Remotion. Sorry! Source: ' +
this.src,
);
}
if (await videoTrack.isRelativeToUnixEpoch()) {
throw new Error(
'Streams with UNIX timestamps are not currently supported by Remotion. Sorry! Source: ' +
this.src,
);
}
const canDecode = await videoTrack.canDecode();
if (!canDecode) {
if (videoTrack.codec === 'prores') {
return {type: 'cannot-decode-prores'};
}View on GitHub (pinned to 78fe4bb3fd)
Solutions
- Use a finite, recorded media file (MP4, WebM) or a VOD HLS playlist instead of a live stream.
- Convert the live stream to a static file before feeding it to Remotion.
- If you must use HLS, ensure the playlist is a complete VOD playlist (has EXT-X-ENDLIST) and is not marked live.
Example fix
// before
<Video src={'https://example.com/live/stream.m3u8'} />
// after
<Video src={staticFile('recorded-clip.mp4')} /> Defensive patterns
Strategy: validation
Validate before calling
null
Try / catch
// Not generally recoverable at runtime; validate the source type up front.
// If you must guard, catch and fall back to a static file:
try {
return <Video src={src} />;
} catch (e) {
if (e instanceof Error && e.message.includes('Live streams')) {
return <Video src={staticFile('fallback.mp4')} />;
}
throw e;
} Prevention
- Disallow live/HLS URLs at the input boundary of your video pipeline.
- Validate that sources are finite files (MP4/WebM) before passing to <Video>.
- Document accepted source formats for any user-supplied media.
When it happens
Trigger: Pointing <Video>/<OffthreadVideo> src at an HLS (.m3u8), DASH (.mpd), or media stream that the parser detects as live (e.g. contains EXT-X-ENDLIST absent, or a live playlist type). The track's isLive() promise resolves true.
Common situations: Using a live broadcast URL, a webcam stream, or an HLS playlist that is marked LIVE instead of VOD. Confusing a live HLS endpoint with a static recorded stream.
Related errors
- Live streams are not currently supported by Remotion. Sorry!
- Streams with UNIX timestamps are not currently supported by
- Live streams are not currently supported by Remotion. Sorry!
- No src passed
- The media ${ref.src} cannot be seeked. This could be one of
AI-assisted analysis of remotion-dev/remotion@78fe4bb3fd (2026-08-12).
Data as JSON: /api/errors/99779105e4dc3040.
Report an issue: GitHub.