Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- # FFmpeg x264 compressibility test
- # check 200 frames every 2 min at crf 23
- # outputs avg Bitrate for 2 pass encode
- # CMD$ FFcompt 1280|720 "/movie/path/mkv"
- VFwidth=
- if [ -z "`echo $1 | sed 's/[0-9]//g'`" ]; then
- VFwidth="-vf scale=$1:trunc(ow/a/4)*4"
- shift
- fi
- SOURCE=$1
- PSYRDAQ="-psy-rd 1.00:0.05 -aq-mode 2 -aq-strength 0.90"
- RFram=9 # h le 728
- BFrm=8
- FFopts="-hide_banner -map 0:v:0 -sn -map_chapters -1 $VFwidth -c:v libx264 -b:v ${FBcalC}k -preset slower -level 4.1 -deblock -1:-1 -me_range 32 -subq 10 -refs $RFram -bf $BFrm -fast-pskip 0 -partitions +parti4x4+parti8x8+partp8x8+partb8x8 -x264opts keyint=240:min-keyint=23:ipratio=1.4:qcomp=0.7 $PSYRDAQ -maxrate 35000k -bufsize 30000k"
- CaLc=
- DIVd=
- startT=-120
- while true; do
- ((startT+=120))
- BTRT=$(ffmpeg -y -ss $startT -i $SOURCE -vframes 200 $FFopts -an -sn -f null - 2>&1 | awk -F: 'END { print $NF }')
- [ "${BTRT%.*}" -eq "${BTRT%.*}" ] 2>/dev/null || break
- ((DIVd+=1)); ((CaLc+=${BTRT%.*}))
- FcalC=$(( $CaLc / $DIVd ))
- # echo $startT $DIVd $FcalC
- done
- echo $FcalC
- AudioCBR="-ac 2 -clev 2dB -slev -3dB -c:a libfdk_aac -b:a 128k" # 128 144 192
- AudioVBR="-ac 2 -clev 2dB -slev -3dB -c:a libfdk_aac -flags +qscale -global_quality 5 -afterburner 1"
- ffmpeg -y -i "$SOURCE" $FFopts -pass 1 -passlogfile ff2passLOG -an -sn -f mp4 /dev/null 2>> "PASS1.log" && \
- ffmpeg -i "$SOURCE" -threads 6 $FFopts -pass 2 -passlogfile ff2passLOG -metadata:s:v:0 title="" -map 0:a:0 $AudioVBR "${SOURCE%.*}.mp4" 2>> "PASS2.log"
Advertisement
Add Comment
Please, Sign In to add comment