pub mod gif;
pub mod video;
use std::io::Read;
pub(crate) enum FfmpegInput<'a> {
Sequence(&'a str),
PngStream(Box<dyn Read + Send>),
}
impl FfmpegInput<'_> {
pub(crate) fn into_args(self, fps: u32) -> (Vec<String>, Option<Box<dyn Read + Send>>) {
let fps = fps.to_string();
match self {
Self::Sequence(pattern) => {
let mut args = vec!["-framerate".into(), fps];
if pattern.contains('*') {
args.extend(["-pattern_type".into(), "glob".into()]);
}
args.extend(["-i".into(), pattern.to_string()]);
(args, None)
}
Self::PngStream(reader) => (
vec![
"-f".into(),
"image2pipe".into(),
"-framerate".into(),
fps,
"-c:v".into(),
"png".into(),
"-i".into(),
"pipe:0".into(),
],
Some(reader),
),
}
}
}