integrate ffprobe to set proper width/height and duration, so our videos appear normal
This commit is contained in:
parent
42fbf46fd7
commit
7fb9791c2f
2 changed files with 19 additions and 11 deletions
|
|
@ -140,6 +140,7 @@ enum Command {
|
||||||
use crate::dl::ffprobe::FFProbe;
|
use crate::dl::ffprobe::FFProbe;
|
||||||
|
|
||||||
async fn cmd_test(bot: Bot, msg: Message, _db: DbPool) -> HandlerResult {
|
async fn cmd_test(bot: Bot, msg: Message, _db: DbPool) -> HandlerResult {
|
||||||
|
if cfg!(debug_assertions) {
|
||||||
if let Ok(probe) = FFProbe::probe("/home/mykola/Videos/test-video").await {
|
if let Ok(probe) = FFProbe::probe("/home/mykola/Videos/test-video").await {
|
||||||
if let Some(vs) = probe.get_video_stream() {
|
if let Some(vs) = probe.get_video_stream() {
|
||||||
dbg!(vs.get_video_resolution());
|
dbg!(vs.get_video_resolution());
|
||||||
|
|
@ -147,6 +148,7 @@ async fn cmd_test(bot: Bot, msg: Message, _db: DbPool) -> HandlerResult {
|
||||||
} else {
|
} else {
|
||||||
dbg!("failed");
|
dbg!("failed");
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -17,13 +17,19 @@ async fn bot_download(bot: Bot, msg: Message, url: String) -> HandlerResult {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// query media info with
|
|
||||||
// ffprobe -v quiet -print_format json -show_streams -select_streams v:0 input.mp4
|
|
||||||
let probe = FFProbe::probe(&output.path).await;
|
|
||||||
dbg!(probe);
|
|
||||||
|
|
||||||
let mut video = bot.send_video(msg.chat.id, InputFile::file(&output.path));
|
let mut video = bot.send_video(msg.chat.id, InputFile::file(&output.path));
|
||||||
// set width, height and so on
|
// try getting video resolution
|
||||||
|
if let Ok(probe) = FFProbe::probe(&output.path).await {
|
||||||
|
if let Some(vs) = probe.get_video_stream() {
|
||||||
|
if let Some((width, height)) = vs.get_video_resolution() {
|
||||||
|
video.width = Some(width);
|
||||||
|
video.height = Some(height);
|
||||||
|
}
|
||||||
|
|
||||||
|
// set video duration
|
||||||
|
video.duration = Some(vs.duration as u32);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
video.await?;
|
video.await?;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue