@@ -11,7 +11,7 @@ VIDEO_FOLDER=${VIDEO_FOLDER}
11
11
VIDEO_UPLOAD_ENABLED=${VIDEO_UPLOAD_ENABLED:- $SE_VIDEO_UPLOAD_ENABLED }
12
12
VIDEO_CONFIG_DIRECTORY=${VIDEO_CONFIG_DIRECTORY:- " /opt/bin" }
13
13
UPLOAD_DESTINATION_PREFIX=${UPLOAD_DESTINATION_PREFIX:- $SE_UPLOAD_DESTINATION_PREFIX }
14
- UPLOAD_PIPE_FILE_NAME=${UPLOAD_PIPE_FILE_NAME :- " uploadpipe" }
14
+ UPLOAD_PIPE_FILE_NAME=${SE_UPLOAD_PIPE_FILE_NAME :- " uploadpipe" }
15
15
SE_VIDEO_INTERNAL_UPLOAD=${SE_VIDEO_INTERNAL_UPLOAD:- " false" }
16
16
SE_SERVER_PROTOCOL=${SE_SERVER_PROTOCOL:- " http" }
17
17
max_attempts=${SE_VIDEO_WAIT_ATTEMPTS:- 50}
@@ -57,13 +57,34 @@ function create_pipe() {
57
57
fi
58
58
}
59
59
60
+ function wait_for_display() {
61
+ export DISPLAY=${DISPLAY_CONTAINER_NAME} :${DISPLAY_NUM} .0
62
+ attempts=0
63
+
64
+ echo " $( date +%FT%T%Z) [${process_name} ] - Checking if the display is open"
65
+ until xset b off || [[ $attempts = " $max_attempts " ]]
66
+ do
67
+ echo " $( date +%FT%T%Z) [${process_name} ] - Waiting before next display check"
68
+ sleep 0.5
69
+ attempts=$(( attempts+ 1 ))
70
+ done
71
+ if [[ $attempts = " $max_attempts " ]];
72
+ then
73
+ echo " $( date +%FT%T%Z) [${process_name} ] - Can not open display, exiting."
74
+ exit
75
+ fi
76
+
77
+ VIDEO_SIZE=$( xdpyinfo | grep ' dimensions:' | awk ' {print $2}' )
78
+ }
79
+
60
80
function wait_util_uploader_shutdown() {
61
81
max_wait=5
62
82
wait=0
63
83
if [[ " ${VIDEO_UPLOAD_ENABLED} " != " false" ]] && [[ -n " ${UPLOAD_DESTINATION_PREFIX} " ]];
64
84
then
65
85
while [[ -f ${FORCE_EXIT_FILE} ]] && [[ ${wait} -lt ${max_wait} ]];
66
86
do
87
+ echo " exit" >> ${UPLOAD_PIPE_FILE} &
67
88
echo " $( date +%FT%T%Z) [${process_name} ] - Waiting for force exit file to be consumed by external upload container"
68
89
sleep 1
69
90
wait=$(( wait+ 1 ))
@@ -73,6 +94,7 @@ function wait_util_uploader_shutdown() {
73
94
then
74
95
while [[ $( pgrep rclone | wc -l) -gt 0 ]]
75
96
do
97
+ echo " exit" >> ${UPLOAD_PIPE_FILE} &
76
98
echo " $( date +%FT%T%Z) [${process_name} ] - Recorder is waiting for RCLONE to finish"
77
99
sleep 1
78
100
done
@@ -134,6 +156,12 @@ function check_if_recording_inprogress() {
134
156
fi
135
157
}
136
158
159
+ function log_node_response() {
160
+ if [[ -f " /tmp/graphQL_$session_id .json" ]]; then
161
+ jq ' .' " /tmp/graphQL_$session_id .json" ;
162
+ fi
163
+ }
164
+
137
165
function graceful_exit() {
138
166
check_if_recording_inprogress
139
167
send_exit_signal_to_uploader
@@ -160,27 +188,9 @@ if [[ "${VIDEO_UPLOAD_ENABLED}" != "true" ]] && [[ "${VIDEO_FILE_NAME}" != "auto
160
188
-video_size ${VIDEO_SIZE} -r ${FRAME_RATE} -i ${DISPLAY_CONTAINER_NAME} :${DISPLAY_NUM} .0 -codec:v ${CODEC} ${PRESET} -pix_fmt yuv420p " $VIDEO_FOLDER /$VIDEO_FILE_NAME "
161
189
162
190
else
163
- create_pipe
164
191
trap graceful_exit SIGTERM SIGINT EXIT
165
- export DISPLAY=${DISPLAY_CONTAINER_NAME} :${DISPLAY_NUM} .0
166
-
167
- attempts=0
168
-
169
- echo " $( date +%FT%T%Z) [${process_name} ] - Checking if the display is open"
170
- until xset b off || [[ $attempts = " $max_attempts " ]]
171
- do
172
- echo " $( date +%FT%T%Z) [${process_name} ] - Waiting before next display check"
173
- sleep 0.5
174
- attempts=$(( attempts+ 1 ))
175
- done
176
- if [[ $attempts = " $max_attempts " ]];
177
- then
178
- echo " $( date +%FT%T%Z) [${process_name} ] - Can not open display, exiting."
179
- exit
180
- fi
181
-
182
- VIDEO_SIZE=$( xdpyinfo | grep ' dimensions:' | awk ' {print $2}' )
183
-
192
+ create_pipe
193
+ wait_for_display
184
194
recording_started=" false"
185
195
video_file_name=" "
186
196
video_file=" "
201
211
done
202
212
if [[ $attempts = " $max_attempts " ]];
203
213
then
204
- echo " $( date +%FT%T%Z) [${process_name} ] - Can not reach node API, exiting."
214
+ echo " $( date +%FT%T%Z) [${process_name} ] - Can not reach node API, reach the max attempts $max_attempts , exiting."
205
215
exit
206
216
fi
207
217
while curl --noproxy " *" -sk --request GET ${NODE_STATUS_ENDPOINT} > /tmp/status.json
@@ -214,15 +224,13 @@ else
214
224
caps_se_video_record=${return_list[0]}
215
225
video_file_name=" ${return_list[1]} .mp4"
216
226
echo " $( date +%FT%T%Z) [${process_name} ] - Start recording: $caps_se_video_record , video file name: $video_file_name "
217
- if [[ -f " /tmp/graphQL_$session_id .json" ]]; then
218
- jq ' .' " /tmp/graphQL_$session_id .json" ;
219
- fi
227
+ log_node_response
220
228
fi
221
229
if [[ " $session_id " != " null" && " $session_id " != " " && " $session_id " != " reserved" && " $recording_started " = " false" && " $caps_se_video_record " = " true" ]];
222
230
then
223
231
video_file=" ${VIDEO_FOLDER} /$video_file_name "
224
232
echo " $( date +%FT%T%Z) [${process_name} ] - Starting to record video"
225
- exec ffmpeg -hide_banner -loglevel warning -flags low_delay -threads 2 -fflags nobuffer+genpts -strict experimental -y -f x11grab \
233
+ ffmpeg -hide_banner -loglevel warning -flags low_delay -threads 2 -fflags nobuffer+genpts -strict experimental -y -f x11grab \
226
234
-video_size ${VIDEO_SIZE} -r ${FRAME_RATE} -i ${DISPLAY} -codec:v ${CODEC} ${PRESET} -pix_fmt yuv420p " $video_file " &
227
235
recording_started=" true"
228
236
echo " $( date +%FT%T%Z) [${process_name} ] - Video recording started"
244
252
fi
245
253
prev_session_id=$session_id
246
254
done
247
- echo " $( date +%FT%T%Z) [${process_name} ] - Node API is not responding, exiting."
255
+ echo " $( date +%FT%T%Z) [${process_name} ] - Last response from node API..."
256
+ log_node_response
257
+ echo " $( date +%FT%T%Z) [${process_name} ] - Node API is not responding now, exiting..."
248
258
exit
249
259
fi
0 commit comments