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!
What it means
Thrown by use-thumbnail's setVideoTrack when the primary video track reports isLive() === true. Thumbnail generation requires seeking/sampling discrete frames, which live streams do not support, so the hook refuses to proceed.
Source
Thrown at packages/convert/app/lib/use-thumbnail.ts:36
const waveform = useMemo(() => {
return makeWaveformVisualizer({
onWaveformBars,
});
}, [onWaveformBars]);
const execute = useCallback(() => {
const getDuration = async () => {
const duration = await input.computeDuration();
waveform.setDuration(duration);
};
const setVideoTrack = async () => {
const videoTrack = await input.getPrimaryVideoTrack();
if (videoTrack) {
if (await videoTrack.isLive()) {
throw new Error(
'Live streams are not currently supported by Remotion. Sorry!',
);
}
if (await videoTrack.isRelativeToUnixEpoch()) {
throw new Error(
'Streams with UNIX timestamps are not currently supported by Remotion. Sorry!',
);
}
const videoSink = new VideoSampleSink(videoTrack);
let samples = 0;
const iterator = videoSink.samples();
for await (const sample of iterator) {
samples++;
onVideoThumbnail(sample.toVideoFrame());
sample.close();
View on GitHub (pinned to 78fe4bb3fd)
Solutions
- Provide a finite, on-demand media file for thumbnail generation.
- Remux the source to clear the live flag and establish a finite duration.
- Check isLive() before invoking the thumbnail hook and skip thumbnails for live inputs.
Example fix
// before
const videoTrack = await input.getPrimaryVideoTrack();
if (videoTrack && await videoTrack.isLive()) throw ...;
// after
const videoTrack = await input.getPrimaryVideoTrack();
if (videoTrack && await videoTrack.isLive()) {
setThumbnailsEnabled(false); // gracefully disable
return;
} Defensive patterns
Strategy: validation
Validate before calling
const videoTrack = await input.getPrimaryVideoTrack();
if (videoTrack && await videoTrack.isLive()) {
setThumbnailsEnabled(false);
return;
} Type guard
null
Try / catch
try { await setVideoTrack(); }
catch (e) {
if (e.message.includes('Live streams')) { setThumbnailsEnabled(false); }
else throw e;
} Prevention
- Reject live inputs for thumbnail generation.
- Clear live flags via remux for recorded-but-flagged sources.
- Gracefully disable thumbnails instead of crashing.
When it happens
Trigger: Loading a live HLS/DASH/RTMP source into the Convert UI; any input whose primary video track carries a live broadcast flag. Same root cause as error 190 but specifically in the thumbnail-generation path.
Common situations: Pasting a live m3u8/mpd URL; recorded-but-live-flagged HLS playlists; surveillance/IPC streams.
Related errors
- Live streams are not currently supported by Remotion. Sorry!
- Streams with UNIX timestamps are not currently supported by
- No supported configs
- Streams with UNIX timestamps are not currently supported by
- Scale must be greater than 0
AI-assisted analysis of remotion-dev/remotion@78fe4bb3fd (2026-08-12).
Data as JSON: /api/errors/b184fb39e7ba7273.
Report an issue: GitHub.