diff --git a/openvidu-server/docker/openvidu-recording/Dockerfile b/openvidu-server/docker/openvidu-recording/Dockerfile index 458bbd13..05985213 100644 --- a/openvidu-server/docker/openvidu-recording/Dockerfile +++ b/openvidu-server/docker/openvidu-recording/Dockerfile @@ -2,14 +2,14 @@ FROM ubuntu:16.04 MAINTAINER openvidu@gmail.com # Install Chrome -RUN apt-get update && apt-get install -y wget +RUN apt-get update && apt-get -y upgrade && apt-get install -y wget RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \ echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" | tee /etc/apt/sources.list.d/google-chrome.list && \ apt-get update && apt-get install -y google-chrome-stable # Install media packages RUN apt-get install -y software-properties-common -RUN add-apt-repository ppa:mc3man/xerus-media +RUN add-apt-repository ppa:jonathonf/ffmpeg-3 RUN apt-get update RUN apt-get install -y ffmpeg pulseaudio xvfb diff --git a/openvidu-server/docker/openvidu-recording/entrypoint.sh b/openvidu-server/docker/openvidu-recording/entrypoint.sh index 45cb50c3..14ec0d52 100755 --- a/openvidu-server/docker/openvidu-recording/entrypoint.sh +++ b/openvidu-server/docker/openvidu-recording/entrypoint.sh @@ -101,7 +101,7 @@ sleep 2 ### Start recording with ffmpeg ### function4() { - <./stop ffmpeg -y -f alsa -i pulse -f x11grab -framerate 25 -video_size $RESOLUTION -i :$DISPLAY_NUM -c:a libfdk_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 -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" } export -f function4 if [[ $CURRENT_UID != $USER_ID ]]; then @@ -143,4 +143,18 @@ if [[ $CURRENT_UID != $USER_ID ]]; then su myuser -c "bash -c function6" else function6 +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}') + ffmpeg -ss $MIDDLE_TIME -i /recordings/$VIDEO_NAME.$VIDEO_FORMAT -vframes 1 -s 480x300 /recordings/$VIDEO_ID.jpg +} +export -f function7 +if [[ $CURRENT_UID != $USER_ID ]]; then + su myuser -c "bash -c function7" +else + function7 fi \ No newline at end of file diff --git a/openvidu-server/src/main/java/io/openvidu/server/recording/ComposedRecordingService.java b/openvidu-server/src/main/java/io/openvidu/server/recording/ComposedRecordingService.java index 6be15ca1..9ce4312b 100644 --- a/openvidu-server/src/main/java/io/openvidu/server/recording/ComposedRecordingService.java +++ b/openvidu-server/src/main/java/io/openvidu/server/recording/ComposedRecordingService.java @@ -465,7 +465,8 @@ public class ComposedRecordingService { private boolean isFileFromRecording(File file, String recordingId, String recordingName) { return (((recordingId + ".info").equals(file.getName())) || ((RECORDING_ENTITY_FILE + recordingId).equals(file.getName())) - || (file.getName().equals(recordingName + ".mp4"))); + || (recordingName + ".mp4").equals(file.getName()) + || (recordingId + ".jpg").equals(file.getName())); } private String getFreeRecordingId(String sessionId, String shortSessionId) { diff --git a/openvidu-server/src/main/resources/application.properties b/openvidu-server/src/main/resources/application.properties index 676c9071..a11f2f76 100644 --- a/openvidu-server/src/main/resources/application.properties +++ b/openvidu-server/src/main/resources/application.properties @@ -1,6 +1,6 @@ server.address: 0.0.0.0 server.ssl.enabled: true -openvidu.recording.version: 2.1.0 +openvidu.recording.version: 2.6.0