{"record":{"id":"ac2aacb0dceeaf9f","repo":"affaan-m/ECC","slug":"no-video-track-found-in-the-input","errorCode":null,"errorMessage":"No video track found in the input","messagePattern":"No video track found in the input","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"skills/remotion-video-creation/rules/extract-frames.md","lineNumber":60,"sourceCode":"export async function extractFrames({\n  src,\n  timestampsInSeconds,\n  onVideoSample,\n  signal,\n}: ExtractFramesProps): Promise<void> {\n  using input = new Input({\n    formats: ALL_FORMATS,\n    source: new UrlSource(src),\n  });\n\n  const [durationInSeconds, format, videoTrack] = await Promise.all([\n    input.computeDuration(),\n    input.getFormat(),\n    input.getPrimaryVideoTrack(),\n  ]);\n\n  if (!videoTrack) {\n    throw new Error(\"No video track found in the input\");\n  }\n\n  if (signal?.aborted) {\n    throw new Error(\"Aborted\");\n  }\n\n  const timestamps =\n    typeof timestampsInSeconds === \"function\"\n      ? await timestampsInSeconds({\n          track: {\n            width: videoTrack.displayWidth,\n            height: videoTrack.displayHeight,\n          },\n          container: format.name,\n          durationInSeconds,\n        })\n      : timestampsInSeconds;\n","sourceCodeStart":42,"sourceCodeEnd":78,"githubUrl":"https://github.com/affaan-m/ECC/blob/d8409a4b0813771235555e32e3d8046a73988bfa/skills/remotion-video-creation/rules/extract-frames.md#L42-L78","documentation":"Example from the mediabunny extract-frames rule: after opening the input, getPrimaryVideoTrack() returned null/undefined, so frame extraction cannot proceed. The source contains no video track — the caller passed an audio-only or malformed file.","triggerScenarios":"Thrown at skills/remotion-video-creation/rules/extract-frames.md:60 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Validate that the input URL/mime type is a video container before calling extractFrames","Surface a user-facing 'not a video file' message instead of a raw Error","Check input.getFormat() to reject unsupported containers early"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"d8409a4b0813771235555e32e3d8046a73988bfa","analyzedAt":"2026-08-26T12:15:34.022Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}