diff --git a/docs/packages/cli.mdx b/docs/packages/cli.mdx index 27dd703d2b..075911d5eb 100644 --- a/docs/packages/cli.mdx +++ b/docs/packages/cli.mdx @@ -927,6 +927,26 @@ does not. becomes a floor and disables that scaling below it. Env: `PRODUCER_PUPPETEER_PROTOCOL_TIMEOUT_MS`. +#### Long renders and the capture path + +Captured frames either stream into FFmpeg as they arrive or land on disk first +as raw RGBA, which costs `frames × width × height × 4` bytes — about 25 GB per +minute at 1080p30. Streaming is the default for single-worker mp4/mov renders +**at any duration**: the old four-minute ceiling guarded an FFmpeg timeout that +is now per-frame rather than whole-render, so it no longer applies. + +Renders still land on the disk path when the output is `png-sequence` or `gif`, +when HDR or shader-transition layering is in play, with more than one worker, or +when streaming is switched off. If a render fails preflight asking for tens of +GB of temporary frame storage, the message names which of those applied; the +usual fixes are `--workers 1`, `--low-memory-mode`, or freeing disk. + +| Environment variable | Default | Effect | +| ------------------------------------------------ | ------- | ----------------------------------------------------------------------------------------- | +| `PRODUCER_ENABLE_STREAMING_ENCODE` | `true` | `false` sends every render to the disk path | +| `PRODUCER_STREAMING_ENCODE_DURATION_CAP_ENABLED` | `false` | `true` restores the duration ceiling below | +| `PRODUCER_STREAMING_ENCODE_MAX_DURATION_SECONDS` | `240` | The ceiling's value; inert unless the flag above is `true`, including the `0` ("never") setting | + #### Render the same composition with different content Declare the variables on the composition root, read them inside it, then