Welcome to Software Development on Codidact!
Will you help us build our independent community of developers helping developers? We're small and trying to grow. We welcome questions about all aspects of software development, from design to code to QA and more. Got questions? Got answers? Got code you'd like someone to review? Please join us.
Post History
Your issue lies in the application of scaling and fps filtering. Both SCALING and FPS_FILTER are being set conditionally, and if both are needed, one will override the other since both are using -v...
#1: Initial revision
Your issue lies in the application of scaling and fps filtering. Both `SCALING` and `FPS_FILTER` are being set conditionally, and if both are needed, one will override the other since both are using `-vf`. Combine them in one `-vf` argument to avoid conflict:
```
if [ $WIDTH -lt $HEIGHT ]; then
SHORTER_SIDE=$WIDTH
if [ $WIDTH -gt $MAX_RESOLUTION ]; then
SCALING="scale=$MAX_RESOLUTION:-2"
fi
else
SHORTER_SIDE=$HEIGHT
if [ $HEIGHT -gt $MAX_RESOLUTION ]; then
SCALING="scale=-2:$MAX_RESOLUTION"
fi
fi
if [ $FPS -gt $MAX_FPS ]; then
if [ -z "$SCALING" ]; then
SCALING="fps=$MAX_FPS"
else
SCALING="$SCALING, fps=$MAX_FPS"
fi
fi
```
Then apply the combined filter:
```
ffmpeg_cmd=(
"-i" "$FILE"
"-vf" "$SCALING"
"-c:v" "libx265"
"-preset" "slow"
"-crf" "$CRF_VALUE"
"-c:a" "aac"
"-b:a" "$AUDIO_BITRATE"
"-movflags" "+faststart"
"$OUTPUT_FILE"
)
```
This ensures both scaling and frame rate adjustments are applied correctly.
