]> purplebirdman git - video-burn.git/commitdiff
Calculate a/v ratio on the fly master
authorClifton Palmer <clifton.james.palmer@protonmail.com>
Fri, 30 May 2025 10:25:10 +0000 (13:25 +0300)
committerClifton Palmer <clifton.james.palmer@protonmail.com>
Fri, 30 May 2025 10:25:10 +0000 (13:25 +0300)
add-audio-to-video.sh

index e03bfda84433079c4e63da6c28c6a7a3a111b3d8..3f350432364a56168a41f64f885d863e1e2f2ec3 100755 (executable)
@@ -11,12 +11,27 @@ then
 fi
 
 tmp_video=tmp$$.mp4
 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 \
 
 # 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,
        $tmp_video
 
 # adds audio to video,
@@ -31,5 +46,4 @@ ffmpeg \
        -b:a 192k \
        output.mp4
 
        -b:a 192k \
        output.mp4
 
-
 [[ -f $tmp_video ]] && rm $tmp_video
 [[ -f $tmp_video ]] && rm $tmp_video