diff --git a/src-lib/src/video.rs b/src-lib/src/video.rs index 259a467..f747457 100644 --- a/src-lib/src/video.rs +++ b/src-lib/src/video.rs @@ -130,19 +130,23 @@ fn _inspect(file: &String) -> Result { 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 = vec![]; let mut stderr: Vec = 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(_) => {}, }; }