Add video processing

This commit is contained in:
Thomas Nordquist
2019-01-29 11:48:59 +01:00
parent e32e5f57f3
commit 598e0e64fa
2 changed files with 44 additions and 5 deletions

21
prepareVideo.sh Executable file
View File

@@ -0,0 +1,21 @@
#!/bin/bash
# The video starts with a few blank frames, we want to know when the stop
ffprobe -f lavfi -i "movie=app.mp4,blackdetect[out0]" -show_entries tags=lavfi.black_start,lavfi.black_end -of default=nw=1 -v quiet > ffmpeg_info
END_OF_BLACK=`cat ffmpeg_info | grep end | head -n1 | cut -d'=' -f2`
# Find crop values for black bars
CROP=`ffmpeg -i app.mp4 -t 1 -vf cropdetect -f null - 2>&1 | awk '/crop/ { print $NF }' | head -n1`
# Crop and trim black frames at start
ffmpeg -ss $END_ONF_BLACK -i app.mp4 -vf "$CROP" app2.mp4
mv app2.mp4 app.mp4
# Generate gif palette
ffmpeg -y -i app.mp4 -vf fps=10,scale=720:-1:flags=lanczos,palettegen palette.png
# Create gif
ffmpeg -i app.mp4 -i palette.png -filter_complex "fps=10,scale=720:-1:flags=lanczos[x];[x][1:v]paletteuse" app.gif
# Clean up
rm ffmpeg_info palette.png

View File

@@ -1,20 +1,34 @@
#!/bin/bash #!/bin/bash
function finish {
echo "UUUUPS I crashed"
tmux send-keys -t record q || echo "No tmux was running"
echo kill $PID_XVFB $PID_CHROMEDRIVER $PID_MOSQUITTO
kill $PID_XVFB $PID_CHROMEDRIVER $PID_MOSQUITTO
}
trap finish EXIT
set -e
SCR=99 SCR=99
# Start new window manager # Start new window manager
Xvfb :$SCR -screen 0 1024x800x24 -ac & Xvfb :$SCR -screen 0 1024x800x24 -ac &
PID_XVFB=$! export PID_XVFB=$!
sleep 2 sleep 2
mosquitto &
export PID_MOSQUITTO=$!
DISPLAY=:$SCR ./node_modules/.bin/chromedriver --url-base=wd/hub --port=9515 & DISPLAY=:$SCR ./node_modules/.bin/chromedriver --url-base=wd/hub --port=9515 &
PID_CHROMEDRIVER=$! export PID_CHROMEDRIVER=$!
sleep 2 sleep 2
# Delete old video # Delete old video
rm ./app.mp4 rm ./app.mp4 || echo no need to delete ./app.mp4
# Start recoring in tmux # Start recoring in tmux
tmux new-session -d -s record ffmpeg -f x11grab -video_size 1024x800 -i :$SCR -codec:v libx264 -r 20 ./app.mp4 tmux new-session -d -s record ffmpeg -f x11grab -draw_mouse 0 -video_size 1024x800 -i :$SCR -codec:v libx264 -r 20 ./app.mp4
# Start tests # Start tests
node dist/src/spec/webdriverio.js node dist/src/spec/webdriverio.js
@@ -22,4 +36,8 @@ node dist/src/spec/webdriverio.js
# Stop recording # Stop recording
tmux send-keys -t record q tmux send-keys -t record q
kill $PID_XVFB $PID_CHROMEDRIVER # Ensure video is written
sleep 5
# Process the video
./prepareVideo.sh