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
*