From 13b29ee757f14bfad0429d21b02135e3c27f7dba Mon Sep 17 00:00:00 2001 From: Clifton Palmer Date: Fri, 30 May 2025 13:25:10 +0300 Subject: [PATCH] Calculate a/v ratio on the fly --- add-audio-to-video.sh | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/add-audio-to-video.sh b/add-audio-to-video.sh index e03bfda..3f35043 100755 --- a/add-audio-to-video.sh +++ b/add-audio-to-video.sh @@ -11,12 +11,27 @@ then fi tmp_video=tmp$$.mp4 -ratio=0.65 + +function get_duration() { + ffmpeg -i $1 2>&1 | \ + awk -F, '/Duration/{print $1}' | \ + awk -F: '{print $2*3600 + $3*60 + $4}' +} + +duration_audio=`get_duration $input_audio` +echo Duration of audio is $duration_audio seconds + +duration_video=`get_duration $input_video` +echo Duration of video is $duration_video seconds + +av_ratio=$(echo "2k $duration_audio $duration_video / p" | dc) +echo Calculated audio/video ratio is $av_ratio + # make video about the same length as the audio ffmpeg \ -i $input_video \ - -filter:v "setpts=${ratio}*PTS" \ + -filter:v "setpts=${av_ratio}*PTS" \ $tmp_video # adds audio to video, @@ -31,5 +46,4 @@ ffmpeg \ -b:a 192k \ output.mp4 - [[ -f $tmp_video ]] && rm $tmp_video -- 2.47.2