LAPINPT

FFmpeg x264 compressibility test

Dec 23rd, 2014
280
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 1.52 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. # FFmpeg x264 compressibility test
  4. # check 200 frames every 2 min at crf 23
  5. # outputs avg Bitrate for 2 pass encode
  6. # CMD$ FFcompt 1280|720 "/movie/path/mkv"
  7.  
  8. VFwidth=
  9. if [ -z "`echo $1 | sed 's/[0-9]//g'`" ]; then
  10.     VFwidth="-vf scale=$1:trunc(ow/a/4)*4"
  11.     shift
  12. fi
  13.  
  14. SOURCE=$1
  15. PSYRDAQ="-psy-rd 1.00:0.05 -aq-mode 2 -aq-strength 0.90"
  16. RFram=9  # h le 728
  17. BFrm=8
  18.  
  19. 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"
  20.  
  21. CaLc=
  22. DIVd=
  23. startT=-120
  24. while true; do
  25.     ((startT+=120))
  26.     BTRT=$(ffmpeg -y -ss $startT -i $SOURCE -vframes 200 $FFopts -an -sn -f null - 2>&1 | awk -F: 'END { print $NF }')
  27.     [ "${BTRT%.*}" -eq "${BTRT%.*}" ] 2>/dev/null || break
  28.     ((DIVd+=1)); ((CaLc+=${BTRT%.*}))
  29.     FcalC=$(( $CaLc / $DIVd ))
  30.     # echo $startT $DIVd $FcalC
  31. done
  32. echo $FcalC
  33.  
  34. AudioCBR="-ac 2 -clev 2dB -slev -3dB -c:a libfdk_aac -b:a 128k" # 128 144 192
  35. AudioVBR="-ac 2 -clev 2dB -slev -3dB -c:a libfdk_aac -flags +qscale -global_quality 5 -afterburner 1"
  36.  
  37. ffmpeg -y -i "$SOURCE" $FFopts -pass 1 -passlogfile ff2passLOG -an -sn -f mp4 /dev/null 2>> "PASS1.log" && \
  38. 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