{"record":{"id":"45f0d5b4f0a81993","repo":"remotion-dev/remotion","slug":"streams-with-unix-timestamps-are-not-currently-sup","errorCode":null,"errorMessage":"Streams with UNIX timestamps are not currently supported by Remotion. Sorry! Source: ${typeof src === 'string' ? src : `audio track ${src.id}`}","messagePattern":"Streams with UNIX timestamps are not currently supported by Remotion\\. Sorry! Source: (.+?)`\\}","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/timeline-utils/src/audio-waveform/load-waveform-peaks.ts","lineNumber":79,"sourceCode":"\t\t\t? new Input({formats: ALL_FORMATS, source: new UrlSource(src)})\n\t\t\t: null;\n\n\ttry {\n\t\tconst audioTrack =\n\t\t\ttypeof src === 'string' ? await input!.getPrimaryAudioTrack() : src;\n\t\tif (!audioTrack) {\n\t\t\treturn {peaks: new Float32Array(0), averageVolume: null};\n\t\t}\n\n\t\tif (await audioTrack.isLive()) {\n\t\t\tthrow new Error(\n\t\t\t\t'Live streams are not currently supported by Remotion. Sorry! Source: ' +\n\t\t\t\t\t(typeof src === 'string' ? src : `audio track ${src.id}`),\n\t\t\t);\n\t\t}\n\n\t\tif (await audioTrack.isRelativeToUnixEpoch()) {\n\t\t\tthrow new Error(\n\t\t\t\t'Streams with UNIX timestamps are not currently supported by Remotion. Sorry! Source: ' +\n\t\t\t\t\t(typeof src === 'string' ? src : `audio track ${src.id}`),\n\t\t\t);\n\t\t}\n\n\t\tconst audioSampleRate = await audioTrack.getSampleRate();\n\t\tconst durationInSeconds =\n\t\t\t(await audioTrack.getDurationFromMetadata({skipLiveWait: true})) ??\n\t\t\t(await audioTrack.computeDuration({skipLiveWait: true}));\n\t\tconst totalPeaks = Math.ceil(durationInSeconds * waveformSampleRate);\n\t\tconst samplesPerPeak = Math.max(\n\t\t\t1,\n\t\t\tMath.floor(audioSampleRate / waveformSampleRate),\n\t\t);\n\n\t\tconst sink = new AudioSampleSink(audioTrack);\n\t\tconst processor = createWaveformPeakProcessor({\n\t\t\ttotalPeaks,","sourceCodeStart":61,"sourceCodeEnd":97,"githubUrl":"https://github.com/remotion-dev/remotion/blob/b2f4e34732f3c6c222ea029413e22dc402218cd7/packages/timeline-utils/src/audio-waveform/load-waveform-peaks.ts#L61-L97","documentation":"After excluding live streams, loadWaveformPeaks rejects audio tracks whose timestamps are relative to the UNIX epoch (isRelativeToUnixEpoch()). Such streams cannot be mapped onto the timeline's expected time base, so the function throws with the offending source identified in the message.","triggerScenarios":"Loading waveform peaks from an audio source whose track reports isRelativeToUnixEpoch() === true — e.g. certain broadcast/binary formats with absolute epoch timestamps rather than media-relative timestamps.","commonSituations":"Ingesting capture/broadcast recordings (e.g. some MPEG-TS captures) or sensor recordings where audio sample timestamps are wall-clock epoch values.","solutions":["Re-encode/remux the audio so timestamps are media-relative (e.g. ffmpeg -i in.ts -c copy -muxer-relative out.ts or re-encode to MP4).","Convert the asset to a standard format like MP3/WAV/M4A before loading.","Check the source container — replace formats that embed epoch-based timestamps.","If programmatic, strip or remap the epoch timestamp track before passing the source."],"exampleFix":"// before\nloadWaveformPeaks('capture-2024-01-01.ts');\n// after (remux with relative timestamps first)\n// ffmpeg -i capture-2024-01-01.ts -c copy -fflags +genpts -muxer-relative capture-fixed.ts\nloadWaveformPeaks('capture-fixed.ts');","handlingStrategy":"try-catch","validationCode":"if (await audioTrack.isRelativeToUnixEpoch()) {\n  throw new Error('Epoch-timestamped track needs remuxing first');\n}","typeGuard":null,"tryCatchPattern":"try {\n  await loadWaveformPeaks(src);\n} catch (e) {\n  if (e.message.includes('UNIX timestamps')) {\n    src = await remuxWithRelativeTimestamps(src); // e.g. via ffmpeg\n    return loadWaveformPeaks(src);\n  }\n  throw e;\n}","preventionTips":["Convert broadcast/TS captures to MP4/MP3 with relative timestamps before ingest.","Run ffprobe to inspect stream time bases for suspicious start times.","Prefer standard audio containers for all composition assets.","Catch this error and auto-remux in ingestion pipelines."],"tags":["audio","waveform","timestamps","unsupported-media"],"backgroundTag":"unsupported-operation","analyzedSha":"b2f4e34732f3c6c222ea029413e22dc402218cd7","analyzedAt":"2026-09-09T13:27:51.281Z","contentChangedAt":"2026-09-09T13:27:51.281Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}