mirror of https://github.com/OpenVidu/openvidu.git
openvidu-recording Docker container adds parent folder for recordings
parent
95b8207f58
commit
864ffd8672
|
@ -23,5 +23,6 @@ COPY entrypoint.sh /entrypoint.sh
|
|||
RUN ["chmod", "+x", "/entrypoint.sh"]
|
||||
|
||||
RUN mkdir /recordings
|
||||
RUN chmod 777 /recordings
|
||||
|
||||
ENTRYPOINT /entrypoint.sh
|
||||
|
|
|
@ -10,7 +10,7 @@ fi
|
|||
|
||||
URL=${URL:-https://www.youtube.com/watch?v=JMuzlEQz3uo}
|
||||
RESOLUTION=${RESOLUTION:-1920x1080}
|
||||
FRAMERATE=${FRAMERATE:-24}
|
||||
FRAMERATE=${FRAMERATE:-25}
|
||||
WIDTH="$(cut -d'x' -f1 <<< $RESOLUTION)"
|
||||
HEIGHT="$(cut -d'x' -f2 <<< $RESOLUTION)"
|
||||
VIDEO_ID=${VIDEO_ID:-video}
|
||||
|
@ -31,7 +31,9 @@ export RECORDING_JSON
|
|||
### Store Recording json data ###
|
||||
|
||||
function1() {
|
||||
echo $RECORDING_JSON > /recordings/.recording.$VIDEO_ID
|
||||
mkdir /recordings/$VIDEO_ID
|
||||
chmod 777 /recordings/$VIDEO_ID
|
||||
echo $RECORDING_JSON > /recordings/$VIDEO_ID/.recording.$VIDEO_ID
|
||||
}
|
||||
export -f function1
|
||||
if [[ $CURRENT_UID != $USER_ID ]]; then
|
||||
|
@ -83,7 +85,7 @@ touch xvfb.log
|
|||
chmod 777 xvfb.log
|
||||
|
||||
function3() {
|
||||
xvfb-run --server-num=${DISPLAY_NUM} --server-args="-screen 0 ${RESOLUTION}x24 -ac" google-chrome -start-maximized -no-sandbox -test-type -disable-infobars -window-size=$WIDTH,$HEIGHT --window-position=0,0 -no-first-run -ignore-certificate-errors --autoplay-policy=no-user-gesture-required --kiosk $URL &> xvfb.log &
|
||||
xvfb-run --server-num=${DISPLAY_NUM} --server-args="-ac -screen 0 ${RESOLUTION}x24 -noreset" google-chrome --start-maximized --no-sandbox --test-type --disable-infobars --window-size=$WIDTH,$HEIGHT --window-position=0,0 --no-first-run --ignore-certificate-errors --autoplay-policy=no-user-gesture-required --kiosk $URL &> xvfb.log &
|
||||
}
|
||||
export -f function3
|
||||
if [[ $CURRENT_UID != $USER_ID ]]; then
|
||||
|
@ -101,7 +103,7 @@ sleep 2
|
|||
### Start recording with ffmpeg ###
|
||||
|
||||
function4() {
|
||||
<./stop ffmpeg -y -f alsa -i pulse -f x11grab -draw_mouse 0 -framerate 25 -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=25 "/recordings/$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"
|
||||
}
|
||||
export -f function4
|
||||
if [[ $CURRENT_UID != $USER_ID ]]; then
|
||||
|
@ -114,7 +116,7 @@ fi
|
|||
### Generate video report file ###
|
||||
|
||||
function5() {
|
||||
ffprobe -v quiet -print_format json -show_format -show_streams /recordings/$VIDEO_NAME.$VIDEO_FORMAT > /recordings/$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
|
||||
}
|
||||
export -f function5
|
||||
if [[ $CURRENT_UID != $USER_ID ]]; then
|
||||
|
@ -127,8 +129,8 @@ fi
|
|||
### Update Recording json data ###
|
||||
|
||||
function6() {
|
||||
TMP=$(mktemp /recordings/.$VIDEO_ID.XXXXXXXXXXXXXXXXXXXXXXX.json)
|
||||
INFO=$(cat /recordings/$VIDEO_ID.info | jq '.')
|
||||
TMP=$(mktemp /recordings/$VIDEO_ID/.$VIDEO_ID.XXXXXXXXXXXXXXXXXXXXXXX.json)
|
||||
INFO=$(cat /recordings/$VIDEO_ID/$VIDEO_ID.info | jq '.')
|
||||
HAS_AUDIO_AUX=$(echo $INFO | jq '.streams[] | select(.codec_type == "audio")')
|
||||
if [ -z "$HAS_AUDIO_AUX" ]; then HAS_AUDIO=false; else HAS_AUDIO=true; fi
|
||||
HAS_VIDEO_AUX=$(echo $INFO | jq '.streams[] | select(.codec_type == "video")')
|
||||
|
@ -136,7 +138,7 @@ function6() {
|
|||
SIZE=$(echo $INFO | jq '.format.size | tonumber')
|
||||
DURATION=$(echo $INFO | jq '.format.duration | tonumber')
|
||||
STATUS="stopped"
|
||||
jq -c -r ".hasAudio=$HAS_AUDIO | .hasVideo=$HAS_VIDEO | .duration=$DURATION | .size=$SIZE | .status=\"$STATUS\"" "/recordings/.recording.$VIDEO_ID" > $TMP && mv $TMP /recordings/.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
|
||||
}
|
||||
export -f function6
|
||||
if [[ $CURRENT_UID != $USER_ID ]]; then
|
||||
|
@ -149,9 +151,9 @@ fi
|
|||
### Generate video thumbnail ###
|
||||
|
||||
function7() {
|
||||
MIDDLE_TIME=$(ffmpeg -i /recordings/$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))
|
||||
ffmpeg -ss $MIDDLE_TIME -i /recordings/$VIDEO_NAME.$VIDEO_FORMAT -vframes 1 -s 480x$THUMBNAIL_HEIGHT /recordings/$VIDEO_ID.jpg
|
||||
ffmpeg -ss $MIDDLE_TIME -i /recordings/$VIDEO_ID/$VIDEO_NAME.$VIDEO_FORMAT -vframes 1 -s 480x$THUMBNAIL_HEIGHT /recordings/$VIDEO_ID/$VIDEO_ID.jpg
|
||||
}
|
||||
export -f function7
|
||||
if [[ $CURRENT_UID != $USER_ID ]]; then
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
server.address: 0.0.0.0
|
||||
server.ssl.enabled: true
|
||||
openvidu.recording.version: 2.7.0
|
||||
openvidu.recording.version: 2.8.0
|
||||
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue