Advertisement
Guest User

Untitled

a guest
Apr 29th, 2017
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.03 KB | None | 0 0
  1. #!/bin/bash -x
  2.  
  3.  
  4.  
  5. while getopts ":d:f:s:i:n:g:v:" opt; do
  6. case $opt in
  7. d)
  8. declare -r location="$OPTARG"
  9. ;;
  10. f)
  11. declare -r filename="$OPTARG"
  12. ;;
  13. s)
  14. declare -r startFrame="$OPTARG"
  15. ;;
  16. i)
  17. declare -r intervalScreenshots="$OPTARG"
  18. ;;
  19. n)
  20. declare -r numberScreenshots="$OPTARG"
  21. ;;
  22. g)
  23. declare -r videoHeight="$OPTARG"
  24. ;;
  25. v)
  26. declare -r verbose="TRUE"
  27. ;;
  28. \?)
  29. echo "Invalid option: -$OPTARG" >&2
  30. exit 1
  31. ;;
  32. :)
  33. echo "Option -$OPTARG requires an argument." >&2
  34. exit 1
  35. ;;
  36. esac
  37. done
  38.  
  39. if [[ -z "$location" ]] ; then
  40. declare -r dir="."
  41. else
  42. declare -r dir="$location"
  43. fi
  44. for f in "$dir"/*.*
  45. do
  46. if [[ -z "$filename" ]] ; then
  47.  
  48.  
  49. declare -r file="$f"
  50.  
  51. else
  52.  
  53. declare -r file="$filename"
  54. fi
  55. mkdir "$(basename "$file" | cut -d "." -f1)"
  56. #start mpv
  57.  
  58. mpv --pause --quiet --no-osc --no-audio --osd-level=0 --no-border --vo=opengl --framedrop=no --scaler-lut-size=8 --scale=spline36 --cscale=spline36 --opengl-fbo-format=rgb16 --linear-scaling --geometry="$videoHeight" --screenshot-template=%F_%ws --screenshot-format=png --screenshot-png-compression=5 --screenshot-directory="$(basename "$file" | cut -d "." -f1)" "$file" --input-ipc-server=/tmp/mpvsocket > /dev/null 2>&1 &
  59.  
  60.  
  61. # Informations grabbing
  62. #declare -r filename="$(basename "${file}" )"
  63.  
  64. sleep 1
  65.  
  66. declare -r lastFrame="$(echo '{ "command": ["get_property", "estimated-frame-count"]}' | socat - /tmp/mpvsocket | cut -d":" -f2 | cut -d , -f1)"
  67.  
  68. sleep 1
  69.  
  70. declare -r fpsVideo="$(echo '{ "command": ["get_property", "estimated-vf-fps"]}' | socat - /tmp/mpvsocket | cut -d":" -f2 | cut -d , -f1)"
  71.  
  72.  
  73. sleep 1
  74.  
  75. # Declare interval for each screenshot
  76. if [[ -z "$intervalScreenshots" ]] ; then
  77. declare diffFrame="$(awk "BEGIN {printf $lastFrame - $startFrame}")"
  78. declare intervalFrame="$(awk "BEGIN {printf $diffFrame / $numberScreenshots}")"
  79.  
  80. else
  81. declare -r intervalFrame="$intervalScreenshots"
  82. fi
  83.  
  84. # Looping to take screenshots
  85. declare currentFrame="$startFrame"
  86. for i in $(seq 1 "$numberScreenshots") ; do
  87.  
  88. declare currentTime="$(awk "BEGIN {printf $currentFrame / $fpsVideo}")"
  89.  
  90. if [[ -n "$verbose" ]] ; then
  91. printf 'Filename: %s\n\n' "$filename"
  92.  
  93. printf 'Current time: %.2f\n\n' "$currentTime"
  94.  
  95. printf 'Last frame: %s\n' "$lastFrame"
  96. printf 'FPS: %s\n' "$fpsVideo"
  97. printf 'Interval: %s\n' "$intervalFrame"
  98. printf 'Screenshot: %02d\n\n\n' "$i"
  99.  
  100. fi
  101. # Debug line
  102.  
  103.  
  104.  
  105. echo '{ "command": ["set_property", "pause", true] }' | socat - /tmp/mpvsocket
  106.  
  107. sleep 1
  108.  
  109. echo '{ "command": ["seek", '$currentTime', "absolute" ] }' | socat - /tmp/mpvsocket
  110.  
  111. sleep 1
  112.  
  113. echo '{ "command": ["screenshot", "window"] }' | socat - /tmp/mpvsocket
  114.  
  115. sleep 1
  116.  
  117.  
  118.  
  119. currentFrame="$(awk "BEGIN {printf $currentFrame+$intervalFrame}")"
  120.  
  121.  
  122.  
  123. done
  124.  
  125. echo '{ "command": ["quit"] }' | socat - /tmp/mpvsockedone
  126.  
  127. done
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement