This is an automated email from the ASF dual-hosted git repository.

solomax pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openmeetings.git


The following commit(s) were added to refs/heads/master by this push:
     new 9077ad2  [OPENMEETINGS-2226] fixes issue #46: sharing dimentions are 
preserved
9077ad2 is described below

commit 9077ad2d1f4d368ac943c5188bf2f5b6e8b8f2c7
Author: Maxim Solodovnik <[email protected]>
AuthorDate: Sun Apr 5 14:09:03 2020 +0700

    [OPENMEETINGS-2226] fixes issue #46: sharing dimentions are preserved
---
 .../openmeetings/core/converter/BaseConverter.java | 22 ++++++++++++++++------
 .../core/converter/InterviewConverter.java         |  5 +++++
 .../core/converter/RecordingConverter.java         | 20 +++++---------------
 .../core/converter/VideoConverter.java             |  2 +-
 .../org/apache/openmeetings/core/remote/KRoom.java |  2 +-
 .../util/process/ProcessResultList.java            |  4 ++++
 6 files changed, 32 insertions(+), 23 deletions(-)

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 488ae4a..cbcc7d2 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
@@ -309,7 +309,11 @@ public abstract class BaseConverter {
                return getDimensions(r, 'x');
        }
 
-       protected List<String> addMp4OutParams(Recording r, List<String> argv, 
String mp4path) {
+       protected List<String> additionalMp4OutParams(Recording r) {
+               return List.of();
+       }
+
+       private List<String> addMp4OutParams(Recording r, List<String> argv, 
String mp4path) {
                argv.addAll(List.of(
                                "-c:v", "h264", //
                                "-crf", "24",
@@ -321,10 +325,10 @@ public abstract class BaseConverter {
                                "-movflags", "faststart",
                                "-c:a", "aac",
                                "-ar", String.valueOf(getAudioRate()),
-                               "-b:a", getAudioBitrate(),
-                               "-s", getDimensions(r), //
-                               mp4path
+                               "-b:a", getAudioBitrate()
                                ));
+               argv.addAll(additionalMp4OutParams(r));
+               argv.add(mp4path);
                return argv;
        }
 
@@ -349,7 +353,13 @@ public abstract class BaseConverter {
                logs.add(ProcessHelper.executeScript(String.format("generate 
preview PNG :: %s", f.getHash()), argv));
        }
 
-       protected static Dimension getDimension(String txt) {
+       /**
+        * Parse the width height from the FFMPEG output
+        *
+        * @param txt FFMPEG output
+        * @return {@link Dimension} parsed
+        */
+       protected static Dimension getDimension(String txt, Dimension def) {
                Matcher matcher = p.matcher(txt);
 
                if (matcher.find()) {
@@ -358,7 +368,7 @@ public abstract class BaseConverter {
                        return new Dimension(toInt(resolutions[0]), 
toInt(resolutions[1]));
                }
 
-               return new Dimension(100, 100); // will return 100x100 for 
non-video to be able to play
+               return def;
        }
 
        protected void finalizeRec(Recording r, String mp4path, 
ProcessResultList logs) throws IOException {
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 f3d7890..6289ea4 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,6 +258,11 @@ public class InterviewConverter extends BaseConverter 
implements IRecordingConve
                return args;
        }
 
+       @Override
+       protected List<String> additionalMp4OutParams(Recording r) {
+               return List.of("-s", getDimensions(r));
+       }
+
        private static class PodPart {
                final String file;
                final long duration;
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 df792f3..f1afb49 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
@@ -85,25 +85,15 @@ public class RecordingConverter extends BaseConverter 
implements IRecordingConve
                        // -i 
65318fb5c54b1bc1b1bca077b493a914_28_12_2009_23_38_17.flv
                        // final1.flv
 
-                       int flvWidth = r.getWidth();
-                       int flvHeight = r.getHeight();
-
-                       log.debug("flvWidth -1- {}", flvWidth);
-                       log.debug("flvHeight -1- {}", flvHeight);
-
-                       flvWidth = (int)(16. * flvWidth / 16);
-                       flvHeight = (int)(16. * flvHeight / 16);
-
-                       log.debug("flvWidth -2- {}", flvWidth);
-                       log.debug("flvHeight -2- {}", flvHeight);
-
-                       r.setWidth(flvWidth);
-                       r.setHeight(flvHeight);
-
                        String mp4path = convertToMp4(r, List.of(
                                        "-itsoffset", 
formatMillis(diff(screenChunk.getStart(), r.getRecordStart())),
                                        "-i", inputScreenFullFlv, "-i", 
wav.getCanonicalPath()
                                        ), logs);
+                       Dimension dim = getDimension(logs.getLast().getError(), 
null); // will return 100x100 for non-video to be able to play
+                       if (dim != null) {
+                               r.setWidth(dim.getWidth());
+                               r.setHeight(dim.getHeight());
+                       }
 
                        finalizeRec(r, mp4path, logs);
                } catch (Exception err) {
diff --git 
a/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/VideoConverter.java
 
b/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/VideoConverter.java
index 08fae35..660b568 100644
--- 
a/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/VideoConverter.java
+++ 
b/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/VideoConverter.java
@@ -87,7 +87,7 @@ public class VideoConverter extends BaseConverter {
                        }
                        progress.ifPresent(theProgress -> 
theProgress.accept(STEP));
                        //Parse the width height from the FFMPEG output
-                       Dimension dim = getDimension(res.getError());
+                       Dimension dim = getDimension(res.getError(), new 
Dimension(100, 100)); // will return 100x100 for non-video to be able to play
                        progress.ifPresent(theProgress -> 
theProgress.accept(STEP));
                        f.setWidth(dim.getWidth());
                        f.setHeight(dim.getHeight());
diff --git 
a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KRoom.java
 
b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KRoom.java
index 5f0587f..c33926d 100644
--- 
a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KRoom.java
+++ 
b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KRoom.java
@@ -175,7 +175,7 @@ public class KRoom {
                                osd.get().addActivity(Activity.RECORD);
                                processor.getClientManager().update(c);
                                rec.setWidth(osd.get().getWidth());
-                               rec.setHeight(osd.get().getWidth());
+                               rec.setHeight(osd.get().getHeight());
                        }
                        rec = processor.getRecordingDao().update(rec);
                        // Receive recordingId
diff --git 
a/openmeetings-util/src/main/java/org/apache/openmeetings/util/process/ProcessResultList.java
 
b/openmeetings-util/src/main/java/org/apache/openmeetings/util/process/ProcessResultList.java
index 997e142..b3baa8b 100644
--- 
a/openmeetings-util/src/main/java/org/apache/openmeetings/util/process/ProcessResultList.java
+++ 
b/openmeetings-util/src/main/java/org/apache/openmeetings/util/process/ProcessResultList.java
@@ -35,6 +35,10 @@ public class ProcessResultList {
                jobs.add(res);
        }
 
+       public ProcessResult getLast() {
+               return jobs.isEmpty() ? null : jobs.get(jobs.size() - 1);
+       }
+
        /**
         * checks if process was successful
         *

Reply via email to