From bda8cb5e1010175a7da0d6b4cdf03acdcbaf04e4 Mon Sep 17 00:00:00 2001 From: Brandon Thomas Date: Thu, 8 Aug 2024 20:31:35 -0400 Subject: [PATCH] emit ffprobe on video upload --- .../lib/files/videos/src/ffprobe_get_dimensions.rs | 12 +++++++++++- .../upload/upload_new_video_media_file_handler.rs | 13 +++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/crates/lib/files/videos/src/ffprobe_get_dimensions.rs b/crates/lib/files/videos/src/ffprobe_get_dimensions.rs index 660188665d..7fe688bccb 100644 --- a/crates/lib/files/videos/src/ffprobe_get_dimensions.rs +++ b/crates/lib/files/videos/src/ffprobe_get_dimensions.rs @@ -1,5 +1,5 @@ use std::path::Path; - +use log::info; use errors::AnyhowResult; pub struct VideoDimensions { @@ -23,6 +23,16 @@ pub fn ffprobe_get_dimensions( } }); + let video_streams = result.streams.iter() + .filter(|stream| stream.codec_type.as_deref() == Some("video")); + + for stream in video_streams { + info!("r_frame_rate: {}", stream.r_frame_rate); + info!("avg_frame_rate: {}", stream.avg_frame_rate); + info!("duration_ts: {:?}", stream.duration_ts); + info!("durations: {:?}", stream.duration); + } + match maybe_dimensions { None => Ok(None), Some((width, height)) => Ok(Some(VideoDimensions { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/upload/upload_new_video_media_file_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/upload/upload_new_video_media_file_handler.rs index c37f8f1e6e..c45b62a53c 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/upload/upload_new_video_media_file_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/upload/upload_new_video_media_file_handler.rs @@ -30,6 +30,7 @@ use mysql_queries::queries::media_files::create::insert_media_file_from_file_upl use mysql_queries::queries::media_files::get::get_media_file::get_media_file; use thumbnail_generator::task_client::thumbnail_task::{ThumbnailTaskBuilder, ThumbnailTaskInputMimeType}; use tokens::tokens::media_files::MediaFileToken; +use videos::ffprobe_get_dimensions::ffprobe_get_dimensions; use videos::get_mp4_info::{get_mp4_info, get_mp4_info_for_bytes, get_mp4_info_for_bytes_and_len}; use crate::http_server::endpoints::media_files::upload::upload_error::MediaFileUploadError; @@ -228,6 +229,18 @@ pub async fn upload_new_video_media_file_handler( // ==================== DURATION DETECTION ==================== // + match ffprobe_get_dimensions(form.file.file.path()) { + Err(err) => { + warn!("Error reading video dimensions with ffprobe: {:?}", err); + } + Ok(Some(dims)) => { + info!("Video dimensions: {}x{}", dims.width, dims.height); + } + Ok(None) => { + warn!("No video dimensions found"); + } + } + let mp4_info = get_mp4_info_for_bytes(file_bytes.as_ref()) .map_err(|err| { warn!("Error reading mp4 info: {:?}", err);