remotion-dev/remotion · error · ErrorWithBacktrace
No input
Error message
No input
What it means
Thrown by the compositor binary's main function when it is launched with no command-line argument. Every invocation must pass a JSON-encoded CliInputCommand as its first positional arg.
Source
Thrown at packages/compositor/rust/main.rs:42
mod tone_map;
use errors::ErrorWithBacktrace;
use global_printer::{_print_verbose, set_verbose_logging};
use long_running_process::LongRunningProcess;
use memory::get_ideal_maximum_frame_cache_size;
use std::env;
use payloads::payloads::{CliInputCommand, CliInputCommandPayload};
extern crate png;
fn mainfn() -> Result<(), ErrorWithBacktrace> {
let args = env::args();
let first_arg =
args.skip(1)
.next()
.ok_or(errors::ErrorWithBacktrace::from(std::io::Error::new(
std::io::ErrorKind::Other,
"No input",
)))?;
let opts: CliInputCommand = parse_init_command(&first_arg)?;
match opts.payload {
CliInputCommandPayload::StartLongRunningProcess(payload) => {
set_verbose_logging(payload.verbose);
let max_video_cache_size = payload
.maximum_frame_cache_size_in_bytes
.unwrap_or(get_ideal_maximum_frame_cache_size());
_print_verbose(&format!(
"Starting Rust process. Max video cache size: {}MB, max threads = {}",
max_video_cache_size / 1024 / 1024,
payload.concurrencyView on GitHub (pinned to 78fe4bb3fd)
Solutions
- Do not run the compositor binary directly — let Remotion spawn it via the normal render path.
- If debugging manually, pass a valid CliInputCommand JSON string as argv[1].
- Upgrade Remotion so the Node layer and the compositor binary versions match.
Example fix
// before
$ ./compositor
// after (manual debug only)
$ ./compositor '{"type":"...","payload":{...}}' Defensive patterns
Strategy: validation
Validate before calling
let args: Vec<String> = env::args().collect();
if args.len() < 2 {
eprintln!("Usage: compositor <cli-input-command-json>");
std::process::exit(2);
} Type guard
null
Try / catch
null
Prevention
- Never invoke the compositor binary directly; let Remotion spawn it.
- Keep the compositor binary version aligned with the Remotion Node package.
- When debugging manually, always supply the JSON payload argument.
When it happens
Trigger: Running the compositor executable with zero arguments, or invoking it through a wrapper that strips argv. Remotion's Node side always supplies a payload, so seeing this means the binary was launched manually or a parent process dropped the argument.
Common situations: Manual debugging where the developer runs the binary directly without args; a broken spawn from a custom serverless runtime that mis-forwards argv; an older Node/Remotion version mismatched against a newer compositor binary expecting a payload shape.
Related errors
- No audio stream found in '${input_path}'. Ensure the video c
- Frame evicted from cache
- The following packages are not Remotion packages: ${invalidP
- Could not determine version of installed Remotion packages:
- No Remotion packages found in your project. Install Remotion
AI-assisted analysis of remotion-dev/remotion@78fe4bb3fd (2026-08-12).
Data as JSON: /api/errors/10f74e7cdd2cef48.
Report an issue: GitHub.