spacedriveapp/spacedrive · error
Proxy generation failed: {}
Error message
Proxy generation failed: {} What it means
The proxy processor delegates to generate_proxy_for_file with the library, resolved content_uuid, entry path, variant, hardware-accel flag, preset, and regenerate=false; any failure inside generation (transcode/ffmpeg error, unsupported codec, missing binary, unwritable output path, insufficient disk) is wrapped here. The message is a shell around the real generation error, which is where to look.
Source
Thrown at core/src/ops/media/proxy/processor.rs:140
return Ok(ProcessorResult::failure(
"Entry has no content_id".to_string(),
));
};
debug!("→ Generating scrubbing proxy for: {}", entry.path.display());
// Call shared generation function
let count = super::generate_proxy_for_file(
&self.library,
&content_uuid,
&entry.path,
&[self.variant.clone()],
self.use_hardware_accel,
&self.preset,
false, // Don't regenerate in processor
)
.await
.map_err(|e| anyhow::anyhow!("Proxy generation failed: {}", e))?;
if count > 0 {
debug!("✓ Generated scrubbing proxy for: {}", entry.path.display());
}
Ok(ProcessorResult::success(count, 0))
}
pub fn name(&self) -> &'static str {
"proxy"
}
}
View on GitHub (pinned to 6dfeccf211)
Solutions
- Read the wrapped inner error to identify the failing stage (spawn, decode, encode, write)
- Verify ffmpeg is installed and works standalone with the same preset/codec arguments
- Retry with use_hardware_accel disabled if the error names a hwaccel device or codec
- Check output directory writability and free disk space
Defensive patterns
Strategy: retry
Validate before calling
// Pre-flight the transcoder before queueing proxy generation
if which::which("ffmpeg").is_err() {
// skip or fall back to software proxy generation
}
if !output_dir_is_writable(&library).await { /* alert before queueing */ } Try / catch
match generate_proxy_for_file(&self.library, &content_uuid, &entry.path, &[self.variant.clone()], self.use_hardware_accel, &self.preset, false).await {
Ok(count) => count,
Err(e) if e.to_string().contains("hwaccel") || e.to_string().contains("vaapi") || e.to_string().contains("nvenc") => {
// retry once with hardware acceleration disabled
generate_proxy_for_file(&self.library, &content_uuid, &entry.path, &[self.variant.clone()], false, &self.preset, false).await?
}
Err(e) => return Err(anyhow::anyhow!("Proxy generation failed: {}", e)),
} Prevention
- Verify ffmpeg presence and codec support at daemon startup
- Test hardware-accel availability before enabling it in presets
- Monitor output-directory disk space; transcodes fail silently when full
When it happens
Trigger: ffmpeg missing from PATH or a non-functional build; hardware acceleration requested on a machine without the required GPU/codec support; source file unreadable or in a format the preset cannot handle; output directory permissions; disk full.
Common situations: Headless servers without ffmpeg installed; driver/mesa updates breaking VAAPI/NVENC; corrupt media files failing mid-transcode; thumbnails/proxies filling the disk.
Related errors
- ContentIdentity not found
- No library selected
- Entry not found
- Entry has no content_id
- ContentIdentity not found
AI-assisted analysis of spacedriveapp/spacedrive@6dfeccf211 (2026-08-16).
Data as JSON: /api/errors/170008ee558efa59.
Report an issue: GitHub.