- if let Some("imgseq") = transcoder.input_fmt.as_deref() {
- let mut isdc = ImgSeqDemuxerCreator::new(transcoder.input_name.as_str());
- parse_and_apply_options!(isdc, &transcoder.demux_opts, "input");
- let isd = if let Ok(ctx) = isdc.open() {
- ctx
- } else {
- println!("failed to create image sequence demuxer!");
- return;
- };
- let mut dmx = DemuxerObject::create_imgseq(isd);
- transcode(transcoder, full_reg, &mut dmx);
- return;
- }
-
- let res = File::open(transcoder.input_name.as_str());
- if res.is_err() {
- println!("error opening input");
- return;
- }
- let file = res.unwrap();
- let file = BufReader::new(file);
- let mut fr = FileReader::new_read(file);
- let mut br = ByteReader::new(&mut fr);
- let (is_raw, start, end) = if transcoder.input_fmt.is_none() {
- detect_tags(&mut br)
- } else {
- (false, 0, None)
- };
+ let mut demuxers = Vec::with_capacity(1);
+ let mut isn_start = 0;
+ for (i, (iname, ifmt)) in transcoder.input_name.iter().zip(
+ transcoder.input_fmt.iter()).enumerate() {
+ match (iname, ifmt.as_ref().map(|s| s.as_str())) {
+ (Some(name), Some("imgseq")) => {
+ println!("trying image sequence {}", name);
+ let mut isdc = ImgSeqDemuxerCreator::new(name.as_str());
+ parse_and_apply_options!(isdc, &transcoder.demux_opts[i], "input");
+ let isd = if let Ok(ctx) = isdc.open() {
+ ctx
+ } else {
+ println!("failed to create image sequence demuxer!");
+ return;
+ };
+ let dmx = DemuxerObject::create_imgseq(isd);
+ for i in 0..dmx.get_num_streams() {
+ let s = dmx.get_stream(i).unwrap();
+ let info = s.get_info();
+ println!(" stream {}({}) - {} {}", i, i + isn_start, s, info.get_name());
+ }
+ isn_start += dmx.get_num_streams();
+ demuxers.push((dmx, false))
+ },
+ (Some(name), _) => {
+ let res = File::open(name);
+ if res.is_err() {
+ println!("error opening input");
+ return;
+ }
+ let file = res.unwrap();
+ let file = BufReader::new(file);
+ let mut fr = FileReader::new_read(file);
+ let mut br = ByteReader::new(&mut fr);
+ let (is_raw, start, end) = if ifmt.is_none() {
+ detect_tags(&mut br)
+ } else {
+ (false, 0, None)
+ };