You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2017/09/22 04:56:31 UTC
openmeetings git commit: [OPENMEETINGS-1710] thumbnail generation is
changed
Repository: openmeetings
Updated Branches:
refs/heads/master 2fe741da7 -> d330858ea
[OPENMEETINGS-1710] thumbnail generation is changed
Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/d330858e
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/d330858e
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/d330858e
Branch: refs/heads/master
Commit: d330858ea2406421142363d964519359a98b6c0a
Parents: 2fe741d
Author: Maxim Solodovnik <so...@gmail.com>
Authored: Fri Sep 22 11:56:22 2017 +0700
Committer: Maxim Solodovnik <so...@gmail.com>
Committed: Fri Sep 22 11:56:22 2017 +0700
----------------------------------------------------------------------
.../core/converter/BaseConverter.java | 30 ++++++------
.../core/converter/FlvExplorerConverter.java | 10 +---
.../core/converter/InterviewConverter.java | 2 +-
.../core/converter/RecordingConverter.java | 2 +-
.../openmeetings/backup/BackupImport.java | 3 +-
.../openmeetings/web/app/Application.java | 4 +-
.../web/room/RoomPreviewResourceReference.java | 10 ++--
.../web/room/wb/WbWebSocketHelper.java | 4 +-
.../record/JpgRecordingResourceReference.java | 51 --------------------
.../record/PngRecordingResourceReference.java | 51 ++++++++++++++++++++
.../web/user/record/VideoPlayer.java | 2 +-
11 files changed, 82 insertions(+), 87 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d330858e/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java
----------------------------------------------------------------------
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java
index 21a3b6b..6709508 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java
@@ -20,7 +20,7 @@ package org.apache.openmeetings.core.converter;
import static org.apache.openmeetings.core.data.record.listener.async.BaseStreamWriter.TIME_TO_WAIT_FOR_FRAME;
import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_FLV;
-import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_JPG;
+import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_PNG;
import static org.apache.openmeetings.util.OmFileHelper.getRecordingMetaData;
import static org.apache.openmeetings.util.OmFileHelper.getStreamsSubDir;
import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_PATH_FFMPEG;
@@ -42,6 +42,7 @@ import org.apache.directory.api.util.Strings;
import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
import org.apache.openmeetings.db.dao.record.RecordingMetaDataDao;
import org.apache.openmeetings.db.dao.record.RecordingMetaDeltaDao;
+import org.apache.openmeetings.db.entity.file.BaseFileItem;
import org.apache.openmeetings.db.entity.record.Recording;
import org.apache.openmeetings.db.entity.record.RecordingMetaData;
import org.apache.openmeetings.db.entity.record.RecordingMetaData.Status;
@@ -348,8 +349,12 @@ public abstract class BaseConverter {
}
}
+ protected String getDimensions(Recording r, char delim) {
+ return String.format("%s%s%s", r.getWidth(), delim, r.getHeight());
+ }
+
protected String getDimensions(Recording r) {
- return String.format("%sx%s", r.getWidth(), r.getHeight());
+ return getDimensions(r, 'x');
}
protected List<String> addMp4OutParams(Recording r, List<String> argv, String mp4path) {
@@ -378,21 +383,18 @@ public abstract class BaseConverter {
return mp4path;
}
- protected void convertToJpg(Recording r, String mp4path, List<ConverterProcessResult> returnLog) throws IOException {
+ protected void convertToPng(BaseFileItem f, String mp4path, List<ConverterProcessResult> logs) throws IOException {
// Extract first Image for preview purpose
- // ffmpeg -i movie.flv -vcodec mjpeg -vframes 1 -an -f rawvideo -s
- // 320x240 movie.jpg
- File jpg = r.getFile(EXTENSION_JPG);
+ // ffmpeg -i movie.mp4 -vf "thumbnail,scale=640:-1" -frames:v 1 movie.png
+ File png = f.getFile(EXTENSION_PNG);
String[] argv = new String[] { //
- getPathToFFMPEG(), "-y", //
- "-i", mp4path, //
- "-vcodec", "mjpeg", //
- "-vframes", "100", "-an", //
- "-f", "rawvideo", //
- "-s", getDimensions(r), //
- jpg.getCanonicalPath() };
+ getPathToFFMPEG(), "-y" //
+ , "-i", mp4path //
+ , "-vf", "thumbnail,scale=640:-1" //
+ , "-frames:v", "1" //
+ , png.getCanonicalPath() };
- returnLog.add(ProcessHelper.executeScript("generate preview JPG", argv));
+ logs.add(ProcessHelper.executeScript(String.format("generate preview PNG :: ", f.getHash()), argv));
}
protected static Dimension getDimension(String txt) {
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d330858e/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/FlvExplorerConverter.java
----------------------------------------------------------------------
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/FlvExplorerConverter.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/FlvExplorerConverter.java
index c9c0f52..afd8606 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/FlvExplorerConverter.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/FlvExplorerConverter.java
@@ -19,7 +19,6 @@
package org.apache.openmeetings.core.converter;
import static java.nio.file.StandardCopyOption.REPLACE_EXISTING;
-import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_JPG;
import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_MP4;
import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
@@ -75,14 +74,7 @@ public class FlvExplorerConverter extends BaseConverter {
Dimension dim = getDimension(res.getError());
f.setWidth(dim.width);
f.setHeight(dim.height);
- File jpeg = f.getFile(EXTENSION_JPG);
-
- args = new String[] { getPathToFFMPEG(), "-y", "-i",
- mp4.getCanonicalPath(), "-codec:v", "mjpeg", "-vframes", "1", "-an",
- "-f", "rawvideo", "-s", dim.width + "x" + dim.height,
- jpeg.getCanonicalPath() };
-
- logs.add(ProcessHelper.executeScript("previewUpload ID :: " + f.getHash(), args));
+ convertToPng(f, mp4.getCanonicalPath(), logs);
} catch (Exception err) {
log.error("[convertToFLV]", err);
logs.add(new ConverterProcessResult("convertToMP4", err.getMessage(), err));
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d330858e/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/InterviewConverter.java
----------------------------------------------------------------------
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/InterviewConverter.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/InterviewConverter.java
index a07d0db..8b7628a 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/InterviewConverter.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/InterviewConverter.java
@@ -258,7 +258,7 @@ public class InterviewConverter extends BaseConverter implements IRecordingConve
String mp4path = convertToMp4(r, args, logs);
- convertToJpg(r, mp4path, logs);
+ convertToPng(r, mp4path, logs);
updateDuration(r);
r.setStatus(Recording.Status.PROCESSED);
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d330858e/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/RecordingConverter.java
----------------------------------------------------------------------
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/RecordingConverter.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/RecordingConverter.java
index 8a9b0c9..232ff97 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/RecordingConverter.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/RecordingConverter.java
@@ -140,7 +140,7 @@ public class RecordingConverter extends BaseConverter implements IRecordingConve
"-i", inputScreenFullFlv, "-i", wav.getCanonicalPath()
), logs);
- convertToJpg(r, mp4path, logs);
+ convertToPng(r, mp4path, logs);
updateDuration(r);
r.setStatus(Recording.Status.PROCESSED);
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d330858e/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java
----------------------------------------------------------------------
diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java
index d0210aa..c420923 100644
--- a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java
+++ b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java
@@ -27,6 +27,7 @@ import static org.apache.openmeetings.util.OmFileHelper.BCKP_ROOM_FILES;
import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_FLV;
import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_JPG;
import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_MP4;
+import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_PNG;
import static org.apache.openmeetings.util.OmFileHelper.FILES_DIR;
import static org.apache.openmeetings.util.OmFileHelper.PROFILES_DIR;
import static org.apache.openmeetings.util.OmFileHelper.getFileName;
@@ -685,7 +686,7 @@ public class BackupImport {
if (!Strings.isEmpty(r.getHash()) && r.getHash().startsWith(recordingFileName)) {
String name = getFileName(r.getHash());
r.setHash(UUID.randomUUID().toString());
- fileMap.put(String.format("%s.%s", name, EXTENSION_JPG), String.format("%s.%s", r.getHash(), EXTENSION_JPG));
+ fileMap.put(String.format("%s.%s", name, EXTENSION_JPG), String.format("%s.%s", r.getHash(), EXTENSION_PNG));
fileMap.put(String.format("%s.%s.%s", name, EXTENSION_FLV, EXTENSION_MP4), String.format("%s.%s", r.getHash(), EXTENSION_MP4));
}
if (Strings.isEmpty(r.getHash())) {
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d330858e/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
index d95093a..9d91960 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
@@ -92,7 +92,7 @@ import org.apache.openmeetings.web.user.dashboard.RssWidgetDescriptor;
import org.apache.openmeetings.web.user.dashboard.StartWidgetDescriptor;
import org.apache.openmeetings.web.user.dashboard.WelcomeWidgetDescriptor;
import org.apache.openmeetings.web.user.dashboard.admin.AdminWidgetDescriptor;
-import org.apache.openmeetings.web.user.record.JpgRecordingResourceReference;
+import org.apache.openmeetings.web.user.record.PngRecordingResourceReference;
import org.apache.openmeetings.web.user.record.Mp4RecordingResourceReference;
import org.apache.openmeetings.web.util.GroupLogoResourceReference;
import org.apache.openmeetings.web.util.ProfileImageResourceReference;
@@ -288,7 +288,7 @@ public class Application extends AuthenticatedWebApplication implements IApplica
mountPage("activate", ActivatePage.class);
mountPage("reset", ResetPage.class);
mountResource("/recordings/mp4/${id}", new Mp4RecordingResourceReference());
- mountResource("/recordings/jpg/${id}", new JpgRecordingResourceReference()); //should be in sync with VideoPlayer
+ mountResource("/recordings/png/${id}", new PngRecordingResourceReference()); //should be in sync with VideoPlayer
mountResource("/room/file/${id}", new RoomResourceReference());
mountResource("/room/preview/${id}", new RoomPreviewResourceReference());
mountResource("/profile/${id}", new ProfileImageResourceReference());
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d330858e/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPreviewResourceReference.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPreviewResourceReference.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPreviewResourceReference.java
index 3921d27..4405ef2 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPreviewResourceReference.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPreviewResourceReference.java
@@ -18,8 +18,8 @@
*/
package org.apache.openmeetings.web.room;
-import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_JPG;
-import static org.apache.openmeetings.util.OmFileHelper.JPG_MIME_TYPE;
+import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_PNG;
+import static org.apache.openmeetings.util.OmFileHelper.PNG_MIME_TYPE;
import java.io.File;
@@ -40,7 +40,7 @@ public class RoomPreviewResourceReference extends RoomResourceReference {
@Override
protected String getMimeType(FileItem r) {
- return JPG_MIME_TYPE;
+ return PNG_MIME_TYPE;
}
@Override
@@ -54,11 +54,11 @@ public class RoomPreviewResourceReference extends RoomResourceReference {
@Override
protected File getFile(FileItem f, Attributes attr) {
- return getFile(f, EXTENSION_JPG);
+ return getFile(f, EXTENSION_PNG);
}
@Override
protected String getFileName(FileItem f) {
- return f.getFileName(EXTENSION_JPG);
+ return f.getFileName(EXTENSION_PNG);
}
}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d330858e/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbWebSocketHelper.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbWebSocketHelper.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbWebSocketHelper.java
index f725b89..6db0971 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbWebSocketHelper.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbWebSocketHelper.java
@@ -27,7 +27,7 @@ import org.apache.openmeetings.util.NullStringer;
import org.apache.openmeetings.util.ws.IClusterWsMessage;
import org.apache.openmeetings.web.room.RoomPreviewResourceReference;
import org.apache.openmeetings.web.room.RoomResourceReference;
-import org.apache.openmeetings.web.user.record.JpgRecordingResourceReference;
+import org.apache.openmeetings.web.user.record.PngRecordingResourceReference;
import org.apache.openmeetings.web.user.record.Mp4RecordingResourceReference;
import org.apache.wicket.request.cycle.RequestCycle;
import org.apache.wicket.request.mapper.parameter.PageParameters;
@@ -104,7 +104,7 @@ public class WbWebSocketHelper extends WebSocketHelper {
case Recording:
ref = new Mp4RecordingResourceReference();
file.put("_src", urlFor(ref, pp));
- file.put("_poster", urlFor(new JpgRecordingResourceReference(), pp));
+ file.put("_poster", urlFor(new PngRecordingResourceReference(), pp));
break;
case Presentation:
ref = new RoomResourceReference();
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d330858e/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/JpgRecordingResourceReference.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/JpgRecordingResourceReference.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/JpgRecordingResourceReference.java
deleted file mode 100644
index 5eb2acb..0000000
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/JpgRecordingResourceReference.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License") + you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.openmeetings.web.user.record;
-
-import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_JPG;
-import static org.apache.openmeetings.util.OmFileHelper.JPG_MIME_TYPE;
-import static org.apache.openmeetings.util.OmFileHelper.recordingFileName;
-
-import java.io.File;
-
-import org.apache.openmeetings.db.entity.record.Recording;
-import org.apache.wicket.request.resource.IResource.Attributes;
-
-public class JpgRecordingResourceReference extends RecordingResourceReference {
- private static final long serialVersionUID = 1L;
-
- public JpgRecordingResourceReference() {
- super("jpg-recording-cover");
- }
-
- @Override
- public String getMimeType() {
- return JPG_MIME_TYPE;
- }
-
- @Override
- protected String getFileName(Recording r) {
- return String.format("%s%s.%s", recordingFileName, r.getId(), EXTENSION_JPG);
- }
-
- @Override
- protected File getFile(Recording r, Attributes attr) {
- return r.getFile(EXTENSION_JPG);
- }
-}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d330858e/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/PngRecordingResourceReference.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/PngRecordingResourceReference.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/PngRecordingResourceReference.java
new file mode 100644
index 0000000..181d6f6
--- /dev/null
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/PngRecordingResourceReference.java
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License") + you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openmeetings.web.user.record;
+
+import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_PNG;
+import static org.apache.openmeetings.util.OmFileHelper.PNG_MIME_TYPE;
+import static org.apache.openmeetings.util.OmFileHelper.recordingFileName;
+
+import java.io.File;
+
+import org.apache.openmeetings.db.entity.record.Recording;
+import org.apache.wicket.request.resource.IResource.Attributes;
+
+public class PngRecordingResourceReference extends RecordingResourceReference {
+ private static final long serialVersionUID = 1L;
+
+ public PngRecordingResourceReference() {
+ super("png-recording-cover");
+ }
+
+ @Override
+ public String getMimeType() {
+ return PNG_MIME_TYPE;
+ }
+
+ @Override
+ protected String getFileName(Recording r) {
+ return String.format("%s%s.%s", recordingFileName, r.getId(), EXTENSION_PNG);
+ }
+
+ @Override
+ protected File getFile(Recording r, Attributes attr) {
+ return r.getFile(EXTENSION_PNG);
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d330858e/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoPlayer.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoPlayer.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoPlayer.java
index 6c3538d..3102264 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoPlayer.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoPlayer.java
@@ -36,7 +36,7 @@ public class VideoPlayer extends Panel {
private final WebMarkupContainer wait = new WebMarkupContainer("wait"); //FIXME not used
private final WebMarkupContainer container = new WebMarkupContainer("container");
private final Mp4RecordingResourceReference mp4RecRes = new Mp4RecordingResourceReference();
- private final JpgRecordingResourceReference posterRecRes = new JpgRecordingResourceReference();
+ private final PngRecordingResourceReference posterRecRes = new PngRecordingResourceReference();
private final RoomResourceReference mp4FileRes = new RoomResourceReference();
private final RoomResourceReference posterFileRes = new RoomResourceReference();
private final Video player = new Video("player") {