Files
shellfiles/bin/wsl/fflarge.sh
2026-01-19 21:36:25 -05:00

54 lines
1.8 KiB
Bash
Executable File

#!/bin/bash
MAX_WIDTH=1920
MAX_HEIGHT=1080
date
export IFS=$'\n';
for i in $(find . -maxdepth 1 -type f \( -iname "*.mpg" -o -iname "*.vob" -o -iname "*.m4v" -o -iname "*.mov" -o -iname "*.avi" -o -iname "*.mp4" -o -iname "*.wmv" -o -iname "*.flv" -o -iname "*.rmvb" -o -iname "*.mpeg" -o -iname "*.mkv" -o -iname "*.mov" \) | grep -v mobile | sort -f);
do
filename=`echo ${i:2}`
ext=`echo ${filename} | awk -F. '{print "."$NF}'`
fn_noext=`basename "${filename}" $ext`
if [ $ext == ".mp4" ]; then
ext=`echo "_mobile.mp4"`
else
ext=`echo "_mobile.mp4"`
fi
echo "Will convert to: ${fn_noext}${ext}";
done
echo " "
echo " "
for i in $(find . -maxdepth 1 -type f \( -iname "*.mpg" -o -iname "*.vob" -o -iname "*.m4v" -o -iname "*.mov" -o -iname "*.avi" -o -iname "*.mp4" -o -iname "*.wmv" -o -iname "*.flv" -o -iname "*.rmvb" -o -iname "*.mpeg" -o -iname "*.mkv" -o -iname "*.mov" \) | grep -v mobile | sort -f);
do
filename=`echo ${i:2}`
ext=`echo ${filename} | awk -F. '{print "."$NF}'`
fn_noext=`basename "${filename}" $ext`
if [ $ext == ".mp4" ]; then
ext=`echo "_mobile.mp4"`
else
ext=`echo "_mobile.mp4"`
fi
bitrate=`ffmpeg -i ${i:2} 2>&1 | egrep 'Video:' | grep -Po '[[:digit:]]+ kb/s' | cut -d ' ' -f 1`
echo "Found bitrate: ${bitrate} kb/s";
if [ "${bitrate}" == "0" ] || [ -z ${bitrate} ]; then
bitrate=`echo "8000"`
fi
echo "--> Final bitrate: ${bitrate} kb/s";
echo "Resizing: ${i:2} ";\
ffmpeg -i ${i:2} -pix_fmt yuv420p -c:v libx264 -b:v ${bitrate}k \
-vf scale="iw*sar*min($MAX_WIDTH/(iw*sar)\,$MAX_HEIGHT/ih):ih*min($MAX_WIDTH/(iw*sar)\,$MAX_HEIGHT/ih),pad=$MAX_WIDTH:$MAX_HEIGHT:(ow-iw)/2:(oh-ih)/2,setsar=1/1" \
-r:v 29/1 -force_fps -movflags +faststart -threads 0 -c:a aac -b:a 10k -f mp4 -g 30 -y ${fn_noext}${ext}
date
done