mirror of https://github.com/OpenVidu/openvidu.git
Run VNC temporaly to check recording
parent
d965739a53
commit
2716777f2b
|
@ -14,7 +14,8 @@ fi
|
||||||
export COMPOSED_QUICK_START_ACTION=$1
|
export COMPOSED_QUICK_START_ACTION=$1
|
||||||
|
|
||||||
if [[ -z "${COMPOSED_QUICK_START_ACTION}" ]]; then
|
if [[ -z "${COMPOSED_QUICK_START_ACTION}" ]]; then
|
||||||
{
|
{
|
||||||
|
|
||||||
### Variables ###
|
### Variables ###
|
||||||
export RESOLUTION=${RESOLUTION:-1920x1080}
|
export RESOLUTION=${RESOLUTION:-1920x1080}
|
||||||
export URL=${URL:-https://www.youtube.com/watch?v=JMuzlEQz3uo}
|
export URL=${URL:-https://www.youtube.com/watch?v=JMuzlEQz3uo}
|
||||||
|
@ -33,7 +34,7 @@ if [[ -z "${COMPOSED_QUICK_START_ACTION}" ]]; then
|
||||||
chmod 777 /recordings
|
chmod 777 /recordings
|
||||||
|
|
||||||
until pids=$(pidof Xvfb)
|
until pids=$(pidof Xvfb)
|
||||||
do
|
do
|
||||||
sleep 0.1
|
sleep 0.1
|
||||||
done
|
done
|
||||||
|
|
||||||
|
@ -41,9 +42,9 @@ if [[ -z "${COMPOSED_QUICK_START_ACTION}" ]]; then
|
||||||
|
|
||||||
XVFB_ARGS=$(ps -eo args | grep [X]vfb)
|
XVFB_ARGS=$(ps -eo args | grep [X]vfb)
|
||||||
DISPLAY_NUM=$(echo $XVFB_ARGS | sed 's/Xvfb :\([0-9]\+\).*/\1/')
|
DISPLAY_NUM=$(echo $XVFB_ARGS | sed 's/Xvfb :\([0-9]\+\).*/\1/')
|
||||||
|
x11vnc -noxrecord -noxfixes -noxdamage -forever -display :$DISPLAY_NUM &
|
||||||
echo "Display in use -> :$DISPLAY_NUM"
|
echo "Display in use -> :$DISPLAY_NUM"
|
||||||
echo "----------------------------------------"
|
echo "----------------------------------------"
|
||||||
|
|
||||||
# Save Global Environment variables
|
# Save Global Environment variables
|
||||||
echo "export DISPLAY_NUM=$DISPLAY_NUM" > /tmp/display_num
|
echo "export DISPLAY_NUM=$DISPLAY_NUM" > /tmp/display_num
|
||||||
|
|
||||||
|
@ -55,7 +56,7 @@ elif [[ "${COMPOSED_QUICK_START_ACTION}" == "--start-recording" ]]; then
|
||||||
{
|
{
|
||||||
export $(cat /tmp/display_num | xargs)
|
export $(cat /tmp/display_num | xargs)
|
||||||
rm -f /tmp/global_environment_vars
|
rm -f /tmp/global_environment_vars
|
||||||
|
|
||||||
# Remove possible stop file from previous recordings
|
# Remove possible stop file from previous recordings
|
||||||
[ -e stop ] && rm stop
|
[ -e stop ] && rm stop
|
||||||
# Create stop file
|
# Create stop file
|
||||||
|
@ -71,20 +72,20 @@ elif [[ "${COMPOSED_QUICK_START_ACTION}" == "--start-recording" ]]; then
|
||||||
export VIDEO_NAME=${VIDEO_NAME:-video}
|
export VIDEO_NAME=${VIDEO_NAME:-video}
|
||||||
export VIDEO_FORMAT=${VIDEO_FORMAT:-mp4}
|
export VIDEO_FORMAT=${VIDEO_FORMAT:-mp4}
|
||||||
export RECORDING_JSON="${RECORDING_JSON}"
|
export RECORDING_JSON="${RECORDING_JSON}"
|
||||||
|
|
||||||
echo "==== Loaded Environment Variables - Start Recording ====="
|
echo "==== Loaded Environment Variables - Start Recording ====="
|
||||||
env
|
env
|
||||||
echo "========================================================="
|
echo "========================================================="
|
||||||
|
|
||||||
### Store Recording json data ###
|
### Store Recording json data ###
|
||||||
|
|
||||||
mkdir /recordings/$VIDEO_ID
|
mkdir /recordings/$VIDEO_ID
|
||||||
echo $RECORDING_JSON > /recordings/$VIDEO_ID/.recording.$VIDEO_ID
|
echo $RECORDING_JSON > /recordings/$VIDEO_ID/.recording.$VIDEO_ID
|
||||||
chmod 777 -R /recordings/$VIDEO_ID
|
chmod 777 -R /recordings/$VIDEO_ID
|
||||||
|
|
||||||
# Save Global Environment variables
|
# Save Global Environment variables
|
||||||
env > /tmp/global_environment_vars
|
env > /tmp/global_environment_vars
|
||||||
|
|
||||||
### Start recording with ffmpeg ###
|
### Start recording with ffmpeg ###
|
||||||
|
|
||||||
if [[ "$ONLY_VIDEO" == true ]]
|
if [[ "$ONLY_VIDEO" == true ]]
|
||||||
|
@ -95,7 +96,7 @@ elif [[ "${COMPOSED_QUICK_START_ACTION}" == "--start-recording" ]]; then
|
||||||
# Record audio ("-f alsa -i pulse [...] -c:a aac")
|
# Record audio ("-f alsa -i pulse [...] -c:a aac")
|
||||||
<./stop ffmpeg -y -f alsa -i pulse -f x11grab -draw_mouse 0 -framerate $FRAMERATE -video_size $RESOLUTION -i :$DISPLAY_NUM -c:a aac -c:v libx264 -preset ultrafast -crf 28 -refs 4 -qmin 4 -pix_fmt yuv420p -filter:v fps=$FRAMERATE "/recordings/$VIDEO_ID/$VIDEO_NAME.$VIDEO_FORMAT"
|
<./stop ffmpeg -y -f alsa -i pulse -f x11grab -draw_mouse 0 -framerate $FRAMERATE -video_size $RESOLUTION -i :$DISPLAY_NUM -c:a aac -c:v libx264 -preset ultrafast -crf 28 -refs 4 -qmin 4 -pix_fmt yuv420p -filter:v fps=$FRAMERATE "/recordings/$VIDEO_ID/$VIDEO_NAME.$VIDEO_FORMAT"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
} 2>&1 | tee -a /tmp/container-start-recording.log
|
} 2>&1 | tee -a /tmp/container-start-recording.log
|
||||||
|
|
||||||
elif [[ "${COMPOSED_QUICK_START_ACTION}" == "--stop-recording" ]]; then
|
elif [[ "${COMPOSED_QUICK_START_ACTION}" == "--stop-recording" ]]; then
|
||||||
|
@ -103,23 +104,23 @@ elif [[ "${COMPOSED_QUICK_START_ACTION}" == "--stop-recording" ]]; then
|
||||||
{
|
{
|
||||||
# Load global variables saved before
|
# Load global variables saved before
|
||||||
export $(cat /tmp/global_environment_vars | xargs)
|
export $(cat /tmp/global_environment_vars | xargs)
|
||||||
|
|
||||||
if [[ -f /recordings/$VIDEO_ID/$VIDEO_ID.jpg ]]; then
|
if [[ -f /recordings/$VIDEO_ID/$VIDEO_ID.jpg ]]; then
|
||||||
echo "Video already recorded"
|
echo "Video already recorded"
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Stop and wait ffmpeg process to be stopped
|
# Stop and wait ffmpeg process to be stopped
|
||||||
FFMPEG_PID=$(pgrep ffmpeg)
|
FFMPEG_PID=$(pgrep ffmpeg)
|
||||||
echo 'q' > stop && tail --pid=$FFMPEG_PID -f /dev/null
|
echo 'q' > stop && tail --pid=$FFMPEG_PID -f /dev/null
|
||||||
|
|
||||||
|
|
||||||
### Generate video report file ###
|
### Generate video report file ###
|
||||||
ffprobe -v quiet -print_format json -show_format -show_streams /recordings/$VIDEO_ID/$VIDEO_NAME.$VIDEO_FORMAT > /recordings/$VIDEO_ID/$VIDEO_ID.info
|
ffprobe -v quiet -print_format json -show_format -show_streams /recordings/$VIDEO_ID/$VIDEO_NAME.$VIDEO_FORMAT > /recordings/$VIDEO_ID/$VIDEO_ID.info
|
||||||
|
|
||||||
### Change permissions to all generated files ###
|
### Change permissions to all generated files ###
|
||||||
sudo chmod -R 777 /recordings/$VIDEO_ID
|
sudo chmod -R 777 /recordings/$VIDEO_ID
|
||||||
|
|
||||||
### Update Recording json data ###
|
### Update Recording json data ###
|
||||||
TMP=$(mktemp /recordings/$VIDEO_ID/.$VIDEO_ID.XXXXXXXXXXXXXXXXXXXXXXX.json)
|
TMP=$(mktemp /recordings/$VIDEO_ID/.$VIDEO_ID.XXXXXXXXXXXXXXXXXXXXXXX.json)
|
||||||
INFO=$(cat /recordings/$VIDEO_ID/$VIDEO_ID.info | jq '.')
|
INFO=$(cat /recordings/$VIDEO_ID/$VIDEO_ID.info | jq '.')
|
||||||
|
@ -139,18 +140,18 @@ elif [[ "${COMPOSED_QUICK_START_ACTION}" == "--stop-recording" ]]; then
|
||||||
|
|
||||||
jq -c -r ".hasAudio=$HAS_AUDIO | .hasVideo=$HAS_VIDEO | .duration=$DURATION | .size=$SIZE | .status=\"$STATUS\"" "/recordings/$VIDEO_ID/.recording.$VIDEO_ID" > $TMP && mv $TMP /recordings/$VIDEO_ID/.recording.$VIDEO_ID
|
jq -c -r ".hasAudio=$HAS_AUDIO | .hasVideo=$HAS_VIDEO | .duration=$DURATION | .size=$SIZE | .status=\"$STATUS\"" "/recordings/$VIDEO_ID/.recording.$VIDEO_ID" > $TMP && mv $TMP /recordings/$VIDEO_ID/.recording.$VIDEO_ID
|
||||||
rm -f $TMP
|
rm -f $TMP
|
||||||
|
|
||||||
### Change permissions to metadata file ###
|
### Change permissions to metadata file ###
|
||||||
sudo chmod 777 /recordings/$VIDEO_ID/.recording.$VIDEO_ID
|
sudo chmod 777 /recordings/$VIDEO_ID/.recording.$VIDEO_ID
|
||||||
|
|
||||||
### Generate video thumbnail ###
|
### Generate video thumbnail ###
|
||||||
|
|
||||||
MIDDLE_TIME=$(ffmpeg -i /recordings/$VIDEO_ID/$VIDEO_NAME.$VIDEO_FORMAT 2>&1 | grep Duration | awk '{print $2}' | tr -d , | awk -F ':' '{print ($3+$2*60+$1*3600)/2}')
|
MIDDLE_TIME=$(ffmpeg -i /recordings/$VIDEO_ID/$VIDEO_NAME.$VIDEO_FORMAT 2>&1 | grep Duration | awk '{print $2}' | tr -d , | awk -F ':' '{print ($3+$2*60+$1*3600)/2}')
|
||||||
THUMBNAIL_HEIGHT=$((480*$HEIGHT/$WIDTH))
|
THUMBNAIL_HEIGHT=$((480*$HEIGHT/$WIDTH))
|
||||||
ffmpeg -ss $MIDDLE_TIME -i /recordings/$VIDEO_ID/$VIDEO_NAME.$VIDEO_FORMAT -vframes 1 -s 480x$THUMBNAIL_HEIGHT /recordings/$VIDEO_ID/$VIDEO_ID.jpg &> /tmp/ffmpeg-thumbnail.log
|
ffmpeg -ss $MIDDLE_TIME -i /recordings/$VIDEO_ID/$VIDEO_NAME.$VIDEO_FORMAT -vframes 1 -s 480x$THUMBNAIL_HEIGHT /recordings/$VIDEO_ID/$VIDEO_ID.jpg &> /tmp/ffmpeg-thumbnail.log
|
||||||
|
|
||||||
echo "Recording finished /recordings/$VIDEO_ID/$VIDEO_NAME.$VIDEO_FORMAT"
|
echo "Recording finished /recordings/$VIDEO_ID/$VIDEO_NAME.$VIDEO_FORMAT"
|
||||||
|
|
||||||
} 2>&1 | tee -a /tmp/container-stop-recording.log
|
} 2>&1 | tee -a /tmp/container-stop-recording.log
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
|
@ -19,6 +19,9 @@ RUN apt-get install -y ffmpeg pulseaudio xvfb
|
||||||
# Install jq for managing JSON
|
# Install jq for managing JSON
|
||||||
RUN apt-get install -y jq
|
RUN apt-get install -y jq
|
||||||
|
|
||||||
|
RUN apt-get install x11vnc
|
||||||
|
|
||||||
|
|
||||||
# Clean
|
# Clean
|
||||||
RUN apt-get autoclean
|
RUN apt-get autoclean
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue