{"record":{"id":"b24c5ab55e8426d3","repo":"remotion-dev/remotion","slug":"streams-with-unix-timestamps-are-not-currently-sup-b24c5a","errorCode":null,"errorMessage":"Streams with UNIX timestamps are not currently supported by Remotion. Sorry! Source: ${src}","messagePattern":"Streams with UNIX timestamps are not currently supported by Remotion\\. Sorry! Source: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"packages/media/src/video-extraction/get-frames-since-keyframe.ts","lineNumber":105,"sourceCode":"\n\t\t\tif (format === null) {\n\t\t\t\treturn 'unknown-container-format';\n\t\t\t}\n\n\t\t\tconst videoTrack = await input.getPrimaryVideoTrack();\n\t\t\tif (!videoTrack) {\n\t\t\t\treturn 'no-video-track';\n\t\t\t}\n\n\t\t\tif (await videoTrack.isLive()) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t'Live streams are not currently supported by Remotion. Sorry! Source: ' +\n\t\t\t\t\t\tsrc,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (await videoTrack.isRelativeToUnixEpoch()) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t'Streams with UNIX timestamps are not currently supported by Remotion. Sorry! Source: ' +\n\t\t\t\t\t\tsrc,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst canDecode = await videoTrack.canDecode();\n\n\t\t\tif (!canDecode) {\n\t\t\t\tif (videoTrack.codec === 'prores') {\n\t\t\t\t\treturn 'cannot-decode-prores';\n\t\t\t\t}\n\n\t\t\t\treturn 'cannot-decode';\n\t\t\t}\n\n\t\t\tconst sampleSink = new VideoSampleSink(videoTrack);\n\t\t\tconst packetSink = new EncodedPacketSink(videoTrack);\n","sourceCodeStart":87,"sourceCodeEnd":123,"githubUrl":"https://github.com/remotion-dev/remotion/blob/78fe4bb3fdb5a2cd68724393d63cb223db333fa7/packages/media/src/video-extraction/get-frames-since-keyframe.ts#L87-L123","documentation":"Thrown by getFramesSinceKeyframe in @remotion/media when the primary video track reports timestamps relative to the Unix epoch. Remotion's offthread frame extractor assumes zero-based media time and seeks by offset; Unix-epoch PTS (from raw broadcast/RTMP captures) violates that assumption. Fires at get-frames-since-keyframe.ts:105.","triggerScenarios":"An <OffthreadVideo>/<Video> source whose video track is anchored to absolute Unix timestamps (raw MPEG-TS from RTMP/ATSC/IPTV). videoTrack.isRelativeToUnixEpoch() resolves true during frame extraction.","commonSituations":"Feeding an unprocessed broadcast/IPTV capture to the offthread video pipeline. The media-player path may also reject the same file with a sibling error.","solutions":["Normalize timestamps via ffmpeg: ffmpeg -i input.ts -fflags +genpts -avoid_negative_ts make_zero out.mp4.","Transcode to a container with zero-based PTS (MP4).","Use a cleanly-authored source file."],"exampleFix":"# before: raw broadcast TS\nremotion render --props='{\"src\":\"capture.ts\"}'\n\n# after: normalize first\nffmpeg -i capture.ts -fflags +genpts -avoid_negative_ts make_zero out.mp4\nremotion render --props='{\"src\":\"out.mp4\"}'","handlingStrategy":"validation","validationCode":"null","typeGuard":null,"tryCatchPattern":"// Pre-process with ffmpeg to normalize timestamps:\n// ffmpeg -i input.ts -fflags +genpts -avoid_negative_ts make_zero out.mp4","preventionTips":["Normalize timestamps of broadcast/TS sources before ingestion.","Prefer MP4/WebM sources with zero-based PTS for offthread video.","Reject raw transport-stream captures at the input boundary."],"tags":["video","unix-timestamp","mpeg-ts","offthread-video","media"],"backgroundTag":null,"analyzedSha":"78fe4bb3fdb5a2cd68724393d63cb223db333fa7","analyzedAt":"2026-08-12T17:18:50.444Z","schemaVersion":2},"datasetVersion":"2026-08-12T18:17:37.767Z"}