2023-01-23 10:22:10 -05:00
|
|
|
extern crate ffmpeg_the_third as ffmpeg;
|
2017-07-22 21:22:26 +02:00
|
|
|
|
|
|
|
use std::env;
|
|
|
|
|
|
|
|
fn main() {
|
2018-04-10 17:06:42 +03:00
|
|
|
ffmpeg::init().unwrap();
|
|
|
|
|
2024-11-05 03:07:01 +01:00
|
|
|
match ffmpeg::format::input(env::args().nth(1).expect("missing input file name")) {
|
2018-04-10 17:06:42 +03:00
|
|
|
Ok(ictx) => {
|
|
|
|
println!("Nb chapters: {}", ictx.nb_chapters());
|
|
|
|
|
|
|
|
for chapter in ictx.chapters() {
|
|
|
|
println!("chapter id {}:", chapter.id());
|
|
|
|
println!("\ttime_base: {}", chapter.time_base());
|
|
|
|
println!("\tstart: {}", chapter.start());
|
|
|
|
println!("\tend: {}", chapter.end());
|
|
|
|
|
|
|
|
for (k, v) in chapter.metadata().iter() {
|
2023-03-23 12:11:48 -03:00
|
|
|
println!("\t{k}: {v}");
|
2018-04-10 17:06:42 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2024-11-05 03:07:01 +01:00
|
|
|
let mut octx = ffmpeg::format::output("test.mkv").expect("Couldn't open test file");
|
2018-04-10 17:06:42 +03:00
|
|
|
|
|
|
|
for chapter in ictx.chapters() {
|
|
|
|
let title = match chapter.metadata().get("title") {
|
|
|
|
Some(title) => String::from(title),
|
|
|
|
None => String::new(),
|
|
|
|
};
|
|
|
|
|
|
|
|
match octx.add_chapter(
|
|
|
|
chapter.id(),
|
|
|
|
chapter.time_base(),
|
|
|
|
chapter.start(),
|
|
|
|
chapter.end(),
|
|
|
|
&title,
|
|
|
|
) {
|
|
|
|
Ok(chapter) => println!("Added chapter with id {} to output", chapter.id()),
|
|
|
|
Err(error) => {
|
|
|
|
println!("Error adding chapter with id: {} - {}", chapter.id(), error)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
println!("\nOuput: nb chapters: {}", octx.nb_chapters());
|
|
|
|
for chapter in octx.chapters() {
|
|
|
|
println!("chapter id {}:", chapter.id());
|
|
|
|
println!("\ttime_base: {}", chapter.time_base());
|
|
|
|
println!("\tstart: {}", chapter.start());
|
|
|
|
println!("\tend: {}", chapter.end());
|
|
|
|
for (k, v) in chapter.metadata().iter() {
|
2023-03-23 12:11:48 -03:00
|
|
|
println!("\t{k}: {v}");
|
2018-04-10 17:06:42 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-03-23 12:11:48 -03:00
|
|
|
Err(error) => println!("error: {error}"),
|
2018-04-10 17:06:42 +03:00
|
|
|
}
|
2017-07-22 21:22:26 +02:00
|
|
|
}
|