Bump version to use ffmpeg 5
This commit is contained in:
@ -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(),
|
||||
|
@ -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(())
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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()
|
||||
|
@ -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
|
||||
|
Reference in New Issue
Block a user