fix: thumbnail gen single frame
This commit is contained in:
parent
71f6f47a00
commit
0d8686a850
@ -1,7 +1,9 @@
|
|||||||
use anyhow::{bail, Error, Result};
|
use anyhow::{bail, Error, Result};
|
||||||
use ffmpeg_rs_raw::ffmpeg_sys_the_third::AVPixelFormat::AV_PIX_FMT_YUV420P;
|
use ffmpeg_rs_raw::ffmpeg_sys_the_third::AVPixelFormat::AV_PIX_FMT_YUV420P;
|
||||||
use ffmpeg_rs_raw::{Demuxer, DemuxerInfo, Encoder, Muxer, StreamType, Transcoder};
|
use ffmpeg_rs_raw::ffmpeg_sys_the_third::{av_frame_free, av_packet_free, AVFrame};
|
||||||
|
use ffmpeg_rs_raw::{Decoder, Demuxer, DemuxerInfo, Encoder, Scaler, StreamType, Transcoder};
|
||||||
use std::path::{Path, PathBuf};
|
use std::path::{Path, PathBuf};
|
||||||
|
use std::ptr;
|
||||||
use uuid::Uuid;
|
use uuid::Uuid;
|
||||||
|
|
||||||
#[cfg(feature = "labels")]
|
#[cfg(feature = "labels")]
|
||||||
@ -93,15 +95,26 @@ impl WebpProcessor {
|
|||||||
.with_framerate(1.0)?
|
.with_framerate(1.0)?
|
||||||
.open(None)?;
|
.open(None)?;
|
||||||
|
|
||||||
let mut trans = Transcoder::new_custom_io(
|
let mut sws = Scaler::new();
|
||||||
input,
|
let mut decoder = Decoder::new();
|
||||||
Muxer::builder()
|
decoder.setup_decoder(image_stream, None)?;
|
||||||
.with_output_path(out_path.to_str().unwrap(), Some("webp"))?
|
|
||||||
.build()?,
|
|
||||||
);
|
|
||||||
|
|
||||||
trans.transcode_stream(image_stream, enc)?;
|
while let Ok((mut pkt, _stream)) = input.get_packet() {
|
||||||
trans.run(None)?;
|
let mut frame_save: *mut AVFrame = ptr::null_mut();
|
||||||
|
for mut frame in decoder.decode_pkt(pkt)? {
|
||||||
|
if frame_save.is_null() {
|
||||||
|
frame_save = sws.process_frame(frame, w, h, AV_PIX_FMT_YUV420P)?;
|
||||||
|
}
|
||||||
|
av_frame_free(&mut frame);
|
||||||
|
}
|
||||||
|
|
||||||
|
av_packet_free(&mut pkt);
|
||||||
|
if !frame_save.is_null() {
|
||||||
|
enc.save_picture(frame_save, out_path.to_str().unwrap())?;
|
||||||
|
av_frame_free(&mut frame_save);
|
||||||
|
return Ok(());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user