{"record":{"id":"b3af6418e7b7cb7c","repo":"remotion-dev/remotion","slug":"comma-separated-frame-selections-are-only-supporte","errorCode":null,"errorMessage":"Comma-separated frame selections are only supported by the `render` command.","messagePattern":"Comma-separated frame selections are only supported by the `render` command\\.","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/cli/src/benchmark.ts","lineNumber":231,"sourceCode":"\t\tprocess.exit(1);\n\t}\n\n\tconst fullEntryPoint = convertEntryPointToServeUrl(file);\n\n\tconst {\n\t\tinputProps,\n\t\tenvVariables,\n\t\tframeRange: defaultFrameRange,\n\t\tselectedFrames,\n\t\tffmpegOverride,\n\t} = getCliOptions({\n\t\tisStill: false,\n\t\tlogLevel,\n\t\tindent: false,\n\t});\n\n\tif (selectedFrames !== null) {\n\t\tthrow new Error(\n\t\t\t'Comma-separated frame selections are only supported by the `render` command.',\n\t\t);\n\t}\n\n\tconst unparsedConcurrency = concurrencyOption.getValue({\n\t\tcommandLine: parsedCli,\n\t}).value;\n\tconst height = overrideHeightOption.getValue({\n\t\tcommandLine: parsedCli,\n\t}).value;\n\tconst width = overrideWidthOption.getValue({\n\t\tcommandLine: parsedCli,\n\t}).value;\n\tconst fps = overrideFpsOption.getValue({commandLine: parsedCli}).value;\n\tconst durationInFrames = overrideDurationOption.getValue({\n\t\tcommandLine: parsedCli,\n\t}).value;\n","sourceCodeStart":213,"sourceCodeEnd":249,"githubUrl":"https://github.com/remotion-dev/remotion/blob/78fe4bb3fdb5a2cd68724393d63cb223db333fa7/packages/cli/src/benchmark.ts#L213-L249","documentation":"Thrown by the `remotion benchmark` command when the user passes a comma-separated frame selection (e.g. `--frames=0,10,20`). Frame cherry-picking via the `selectedFrames` CLI option is implemented only for the `render` command; benchmark must render a contiguous range so timings stay meaningful. Passing comma-separated frames to benchmark is therefore rejected outright.","triggerScenarios":"Running `npx remotion benchmark <entry> --frames=0,30,60` (or any `selectedFrames` value that parses to a non-null list). The check at benchmark.ts:230 fires immediately after `getCliOptions()` returns, before any concurrency/width/height resolution.","commonSituations":"A developer copies a `render` invocation that uses comma-separated frames and swaps `render` for `benchmark`. CI scripts that parameterize the command name but share a flags object hit this when the frame list is comma-separated.","solutions":["Drop the comma-separated `--frames` argument from the `benchmark` invocation; benchmark a contiguous range with `--frames=START-END` instead.","If you need timing data for specific frames, time the equivalent `render` run on those frames yourself."],"exampleFix":"// before\n$ remotion benchmark src/index.ts --frames=0,30,60\n// after\n$ remotion benchmark src/index.ts --frames=0-60","handlingStrategy":"validation","validationCode":"// Before calling benchmark, reject comma-separated frame lists.\nconst frames = String(process.env.REMOTION_FRAMES ?? '');\nif (frames.includes(',')) {\n  throw new Error('Comma-separated frames are not supported by benchmark; use START-END.');\n}","typeGuard":"const isContiguousRange = (v: string): boolean =>\n  /^\\d+(-\\d+)?$/.test(v.trim());","tryCatchPattern":null,"preventionTips":["Keep benchmark and render flag templates separate so comma-separated frames never reach benchmark.","Document the supported `--frames` shape per subcommand in your render wrapper."],"tags":["cli","benchmark","frames","validation"],"backgroundTag":null,"analyzedSha":"78fe4bb3fdb5a2cd68724393d63cb223db333fa7","analyzedAt":"2026-08-12T17:18:50.444Z","schemaVersion":2},"datasetVersion":"2026-08-12T18:17:37.767Z"}