Bump version to use ffmpeg 5

This commit is contained in:
Polochon-street
2022-01-24 21:03:47 +01:00
parent 5ed41c84ff
commit 22ad8b9598
43 changed files with 310 additions and 102 deletions

View File

@ -18,7 +18,8 @@ fn main() -> Result<(), ffmpeg::Error> {
.ok_or(ffmpeg::Error::StreamNotFound)?;
let video_stream_index = input.index();
let mut decoder = input.codec().decoder().video()?;
let context_decoder = ffmpeg::codec::context::Context::from_parameters(input.parameters())?;
let mut decoder = context_decoder.decoder().video()?;
let mut scaler = Context::get(
decoder.format(),

View File

@ -2,7 +2,7 @@ extern crate ffmpeg_next as ffmpeg;
use std::env;
fn main() {
fn main() -> Result<(), ffmpeg::Error> {
ffmpeg::init().unwrap();
match ffmpeg::format::input(&env::args().nth(1).expect("missing file")) {
@ -42,7 +42,7 @@ fn main() {
println!("\tdiscard: {:?}", stream.discard());
println!("\trate: {}", stream.rate());
let codec = stream.codec();
let codec = ffmpeg::codec::context::Context::from_parameters(stream.parameters())?;
println!("\tmedium: {:?}", codec.medium());
println!("\tid: {:?}", codec.id());
@ -78,7 +78,6 @@ fn main() {
println!("\taudio.frames: {}", audio.frames());
println!("\taudio.align: {}", audio.align());
println!("\taudio.channel_layout: {:?}", audio.channel_layout());
println!("\taudio.frame_start: {:?}", audio.frame_start());
}
}
}
@ -86,4 +85,5 @@ fn main() {
Err(error) => println!("error: {}", error),
}
Ok(())
}

View File

@ -18,7 +18,7 @@ fn main() {
let mut ist_time_bases = vec![Rational(0, 1); ictx.nb_streams() as _];
let mut ost_index = 0;
for (ist_index, ist) in ictx.streams().enumerate() {
let ist_medium = ist.codec().medium();
let ist_medium = ist.parameters().medium();
if ist_medium != media::Type::Audio
&& ist_medium != media::Type::Video
&& ist_medium != media::Type::Subtitle

View File

@ -72,7 +72,8 @@ fn transcoder<P: AsRef<Path>>(
.streams()
.best(media::Type::Audio)
.expect("could not find best audio stream");
let mut decoder = input.codec().decoder().audio()?;
let context = ffmpeg::codec::context::Context::from_parameters(input.parameters())?;
let mut decoder = context.decoder().audio()?;
let codec = ffmpeg::encoder::find(octx.format().codec(path, media::Type::Audio))
.expect("failed to find encoder")
.audio()?;
@ -84,7 +85,8 @@ fn transcoder<P: AsRef<Path>>(
decoder.set_parameters(input.parameters())?;
let mut output = octx.add_stream(codec)?;
let mut encoder = output.codec().encoder().audio()?;
let context = ffmpeg::codec::context::Context::from_parameters(output.parameters())?;
let mut encoder = context.encoder().audio()?;
let channel_layout = codec
.channel_layouts()

View File

@ -47,9 +47,13 @@ impl Transcoder {
enable_logging: bool,
) -> Result<Self, ffmpeg::Error> {
let global_header = octx.format().flags().contains(format::Flags::GLOBAL_HEADER);
let decoder = ist.codec().decoder().video()?;
let decoder = ffmpeg::codec::context::Context::from_parameters(ist.parameters())?
.decoder()
.video()?;
let mut ost = octx.add_stream(encoder::find(codec::Id::H264))?;
let mut encoder = ost.codec().encoder().video()?;
let mut encoder = codec::context::Context::from_parameters(ost.parameters())?
.encoder()
.video()?;
encoder.set_height(decoder.height());
encoder.set_width(decoder.width());
encoder.set_aspect_ratio(decoder.aspect_ratio());
@ -59,15 +63,20 @@ impl Transcoder {
if global_header {
encoder.set_flags(codec::Flags::GLOBAL_HEADER);
}
encoder
.open_with(x264_opts)
.expect("error opening libx264 encoder with supplied settings");
encoder = ost.codec().encoder().video()?;
ost.set_parameters(encoder);
encoder = codec::context::Context::from_parameters(ost.parameters())?
.encoder()
.video()?;
ost.set_parameters(&encoder);
Ok(Self {
ost_index,
decoder,
encoder: ost.codec().encoder().video()?,
encoder: codec::context::Context::from_parameters(ost.parameters())?
.encoder()
.video()?,
logging_enabled: enable_logging,
frame_count: 0,
last_log_frame_count: 0,
@ -184,7 +193,7 @@ fn main() {
let mut transcoders = HashMap::new();
let mut ost_index = 0;
for (ist_index, ist) in ictx.streams().enumerate() {
let ist_medium = ist.codec().medium();
let ist_medium = ist.parameters().medium();
if ist_medium != media::Type::Audio
&& ist_medium != media::Type::Video
&& ist_medium != media::Type::Subtitle