main
Bel LaPointe 2023-12-28 10:25:53 -05:00
parent 1a1d979ebd
commit 96369424b3
1 changed files with 9 additions and 5 deletions

View File

@ -130,19 +130,23 @@ fn _inspect(file: &String) -> Result<Inspection, String> {
let mut child = cmd.spawn().expect("failed to inspect with ffmpeg");
let mut bind = vec![0; 10];
let mut buff: &mut [u8] = bind.as_mut();
let mut _stdout = child.stdout.take().unwrap();
let mut _stderr = child.stderr.take().unwrap();
let mut stdout: Vec<u8> = vec![];
let mut stderr: Vec<u8> = vec![];
let mut delay = 100;
while let Ok(None) = child.try_wait() {
eprintln!("ffmpeg still inspecting...");
std::thread::sleep(std::time::Duration::from_millis(delay));
delay = if 2 * delay < 5000 { delay * 2 } else { 5000 };
match child.stderr.as_mut().unwrap().read(buff.as_mut()) {
Ok(n) => { buff[..n].iter().for_each(|c| stderr.push(*c)); },
delay = (2 * delay).clamp(0, 5000);
eprintln!("ffmpeg stdout...");
match _stdout.read(buff.as_mut()) {
Ok(n) => { buff[..n].iter().for_each(|c| stdout.push(*c)); },
Err(_) => {},
};
match child.stdout.as_mut().unwrap().read(buff.as_mut()) {
Ok(n) => { buff.iter().for_each(|c| stdout.push(*c)); },
eprintln!("ffmpeg stderr...");
match _stderr.read(buff.as_mut()) {
Ok(n) => { buff[..n].iter().for_each(|c| stderr.push(*c)); },
Err(_) => {},
};
}