1use std::env;
2use std::path::PathBuf;
3
4pub fn ffmpeg_path() -> String {
11 if let Ok(p) = env::var("VISER_FFMPEG") {
12 if !p.is_empty() {
13 return p;
14 }
15 }
16 if let Some(p) = local_binary("ffmpeg") {
17 return p;
18 }
19 "ffmpeg".into()
20}
21
22pub fn ffprobe_path() -> String {
29 if let Ok(p) = env::var("VISER_FFPROBE") {
30 if !p.is_empty() {
31 return p;
32 }
33 }
34 if let Some(p) = local_binary("ffprobe") {
35 return p;
36 }
37 "ffprobe".into()
38}
39
40fn local_binary(name: &str) -> Option<String> {
41 let mut path = PathBuf::from("bin").join("ffmpeg");
42 if cfg!(windows) {
43 path = path.join(format!("{name}.exe"));
44 } else {
45 path = path.join(name);
46 }
47 if path.exists() { Some(path.to_string_lossy().into_owned()) } else { None }
48}