1extern crate ffmpeg_rs;
2use std::env;
3
4fn main() {
5 ffmpeg_rs::init().unwrap();
6
7 match ffmpeg_rs::format::input(&env::args().nth(1).expect("missing input file name")) {
8 Ok(ictx) => {
9 println!("Nb chapters: {}", ictx.nb_chapters());
10
11 for chapter in ictx.chapters() {
12 println!("chapter id {}:", chapter.id());
13 println!("\ttime_base: {}", chapter.time_base());
14 println!("\tstart: {}", chapter.start());
15 println!("\tend: {}", chapter.end());
16
17 for (k, v) in chapter.metadata().iter() {
18 println!("\t{}: {}", k, v);
19 }
20 }
21
22 let mut octx = ffmpeg_rs::format::output(&"test.mkv").expect("Couldn't open test file");
23
24 for chapter in ictx.chapters() {
25 let title = match chapter.metadata().get("title") {
26 Some(title) => String::from(title),
27 None => String::new(),
28 };
29
30 match octx.add_chapter(
31 chapter.id(),
32 chapter.time_base(),
33 chapter.start(),
34 chapter.end(),
35 &title,
36 ) {
37 Ok(chapter) => println!("Added chapter with id {} to output", chapter.id()),
38 Err(error) => {
39 println!("Error adding chapter with id: {} - {}", chapter.id(), error)
40 }
41 }
42 }
43
44 println!("\nOuput: nb chapters: {}", octx.nb_chapters());
45 for chapter in octx.chapters() {
46 println!("chapter id {}:", chapter.id());
47 println!("\ttime_base: {}", chapter.time_base());
48 println!("\tstart: {}", chapter.start());
49 println!("\tend: {}", chapter.end());
50 for (k, v) in chapter.metadata().iter() {
51 println!("\t{}: {}", k, v);
52 }
53 }
54 }
55
56 Err(error) => println!("error: {}", error),
57 }
58}