deep-filter Ausgabeordner statt Zieldatei korrekt behandeln
This commit is contained in:
parent
b817782e34
commit
3c7e77524e
1 changed files with 24 additions and 6 deletions
|
|
@ -249,18 +249,20 @@ async fn process_video(app: AppHandle, options: ProcessOptions) -> Result<Proces
|
||||||
e
|
e
|
||||||
})?;
|
})?;
|
||||||
|
|
||||||
// Achtung, bitte gegen `deep-filter --help` prüfen: hier wird eine exakte
|
// deep-filter erwartet bei -o einen AusgabeORDNER, keine Zieldatei, und
|
||||||
// Ausgabedatei per -o angenommen. Manche deep-filter Versionen erwarten
|
// schreibt dort eine Datei mit demselben Namen wie die Eingabedatei hinein
|
||||||
// stattdessen einen Ausgabeordner (z.B. -o <Ordner>), in dem eine Datei
|
// (per echtem Testlauf bestätigt, 2026-08-19). Deshalb erst in einen eigenen
|
||||||
// mit demselben Namen wie die Eingabe erzeugt wird. Falls das der Fall
|
// Zwischenordner schreiben lassen und die entstandene Datei danach auf den
|
||||||
// ist, muss diese Stelle entsprechend angepasst werden.
|
// gewünschten Namen umbenennen.
|
||||||
|
let denoise_out_dir = parent.join(format!("{stem}_denoise_tmp"));
|
||||||
|
fs::create_dir_all(&denoise_out_dir).map_err(|e| e.to_string())?;
|
||||||
run_sidecar(
|
run_sidecar(
|
||||||
&app,
|
&app,
|
||||||
"deep-filter",
|
"deep-filter",
|
||||||
vec![
|
vec![
|
||||||
raw_audio.to_string_lossy().to_string(),
|
raw_audio.to_string_lossy().to_string(),
|
||||||
"-o".into(),
|
"-o".into(),
|
||||||
denoised_audio.to_string_lossy().to_string(),
|
denoise_out_dir.to_string_lossy().to_string(),
|
||||||
],
|
],
|
||||||
"denoise",
|
"denoise",
|
||||||
)
|
)
|
||||||
|
|
@ -269,6 +271,22 @@ async fn process_video(app: AppHandle, options: ProcessOptions) -> Result<Proces
|
||||||
emit_progress(&app, "denoise", "error", Some(e.clone()), None);
|
emit_progress(&app, "denoise", "error", Some(e.clone()), None);
|
||||||
e
|
e
|
||||||
})?;
|
})?;
|
||||||
|
let denoise_result = denoise_out_dir.join(
|
||||||
|
raw_audio
|
||||||
|
.file_name()
|
||||||
|
.ok_or_else(|| "Ungültiger Audio Dateiname.".to_string())?,
|
||||||
|
);
|
||||||
|
fs::rename(&denoise_result, &denoised_audio)
|
||||||
|
.or_else(|_| fs::copy(&denoise_result, &denoised_audio).map(|_| ()))
|
||||||
|
.map_err(|e| {
|
||||||
|
let msg = format!(
|
||||||
|
"Entrauschte Datei nicht am erwarteten Ort {} gefunden: {e}",
|
||||||
|
denoise_result.display()
|
||||||
|
);
|
||||||
|
emit_progress(&app, "denoise", "error", Some(msg.clone()), None);
|
||||||
|
msg
|
||||||
|
})?;
|
||||||
|
let _ = fs::remove_dir_all(&denoise_out_dir);
|
||||||
|
|
||||||
let remuxed = parent.join(format!("{stem}_entrauscht_video.{ext}"));
|
let remuxed = parent.join(format!("{stem}_entrauscht_video.{ext}"));
|
||||||
run_sidecar(
|
run_sidecar(
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue