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/02/21 16:26:26 UTC
svn commit: r1783907 - in /openmeetings/application:
branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/
trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/
Author: solomax
Date: Tue Feb 21 16:26:26 2017
New Revision: 1783907
URL: http://svn.apache.org/viewvc?rev=1783907&view=rev
Log:
[OPENMEETINGS-1570] mp4 room upload should work
Modified:
openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/FlvExplorerConverter.java
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/FlvExplorerConverter.java
Modified: openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/FlvExplorerConverter.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/FlvExplorerConverter.java?rev=1783907&r1=1783906&r2=1783907&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/FlvExplorerConverter.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/FlvExplorerConverter.java Tue Feb 21 16:26:26 2017
@@ -23,6 +23,9 @@ import static org.apache.openmeetings.ut
import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
import java.io.File;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.StandardCopyOption;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
@@ -58,37 +61,44 @@ public class FlvExplorerConverter extend
List<ConverterProcessResult> logs = new ArrayList<ConverterProcessResult>();
try {
File mp4 = f.getFile(EXTENSION_MP4);
-
f.setType(Type.Video);
- ConverterProcessResult res;
- if (EXTENSION_MP4.equals(ext)) {
- String[] args = new String[] { getPathToFFMPEG(), "-i", f.getFile(ext).getCanonicalPath() };
- res = ProcessHelper.executeScript("Info ID :: " + f.getId(), args);
- res.setExitCode(0); //normal code is 1, ffmpeg requires output file
- } else {
- String[] args = new String[] { getPathToFFMPEG(), "-y"
- , "-i", f.getFile(ext).getCanonicalPath() //
- , "-c:v", "h264" //
- , "-c:a", "libfaac" //
- , "-c:a", "libfdk_aac" //
- , "-pix_fmt", "yuv420p" //
- , mp4.getCanonicalPath() };
- res = ProcessHelper.executeScript("uploadFLV ID :: " + f.getId(), args);
-
+ String input = f.getFile(ext).getCanonicalPath();
+ boolean sameExt = EXTENSION_MP4.equals(ext);
+ Path tmp = null;
+ if (sameExt) {
+ //we should do in-place conversion
+ tmp = Files.createTempFile("video", "mp4");
+ input = Files.move(mp4.toPath(), tmp, StandardCopyOption.ATOMIC_MOVE).toFile().getCanonicalPath();
}
+ String[] args = new String[] { getPathToFFMPEG(), "-y"
+ , "-i", input //
+ , "-c:v", "h264" //
+ , "-c:a", "libfaac" //
+ , "-c:a", "libfdk_aac" //
+ , "-pix_fmt", "yuv420p" //
+ , mp4.getCanonicalPath() };
+ ConverterProcessResult res = ProcessHelper.executeScript("uploadVideo ID :: " + f.getId(), args);
logs.add(res);
+ if (sameExt && tmp != null) {
+ if (res.isOk()) {
+ Files.delete(tmp);
+ } else {
+ //conversion fails, need to move temp file back
+ Files.move(tmp, mp4.toPath(), StandardCopyOption.ATOMIC_MOVE);
+ }
+ }
//Parse the width height from the FFMPEG output
FlvDimension dim = getFlvDimension(res.getError());
f.setFlvWidth(dim.width);
f.setFlvHeight(dim.height);
File jpeg = f.getFile(EXTENSION_JPG);
- String[] argv_previewFLV = new String[] { getPathToFFMPEG(), "-y", "-i",
+ 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.getId(), argv_previewFLV));
+ logs.add(ProcessHelper.executeScript("previewUpload ID :: " + f.getId(), args));
fileDao.update(f);
} catch (Exception err) {
Modified: openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/FlvExplorerConverter.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/FlvExplorerConverter.java?rev=1783907&r1=1783906&r2=1783907&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/FlvExplorerConverter.java (original)
+++ openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/FlvExplorerConverter.java Tue Feb 21 16:26:26 2017
@@ -23,6 +23,9 @@ import static org.apache.openmeetings.ut
import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
import java.io.File;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.StandardCopyOption;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
@@ -58,37 +61,44 @@ public class FlvExplorerConverter extend
List<ConverterProcessResult> logs = new ArrayList<ConverterProcessResult>();
try {
File mp4 = f.getFile(EXTENSION_MP4);
-
f.setType(Type.Video);
- ConverterProcessResult res;
- if (EXTENSION_MP4.equals(ext)) {
- String[] args = new String[] { getPathToFFMPEG(), "-i", f.getFile(ext).getCanonicalPath() };
- res = ProcessHelper.executeScript("Info ID :: " + f.getId(), args);
- res.setExitCode(0); //normal code is 1, ffmpeg requires output file
- } else {
- String[] args = new String[] { getPathToFFMPEG(), "-y"
- , "-i", f.getFile(ext).getCanonicalPath() //
- , "-c:v", "h264" //
- , "-c:a", "libfaac" //
- , "-c:a", "libfdk_aac" //
- , "-pix_fmt", "yuv420p" //
- , mp4.getCanonicalPath() };
- res = ProcessHelper.executeScript("uploadFLV ID :: " + f.getId(), args);
-
+ String input = f.getFile(ext).getCanonicalPath();
+ boolean sameExt = EXTENSION_MP4.equals(ext);
+ Path tmp = null;
+ if (sameExt) {
+ //we should do in-place conversion
+ tmp = Files.createTempFile("video", "mp4");
+ input = Files.move(mp4.toPath(), tmp, StandardCopyOption.ATOMIC_MOVE).toFile().getCanonicalPath();
}
+ String[] args = new String[] { getPathToFFMPEG(), "-y"
+ , "-i", input //
+ , "-c:v", "h264" //
+ , "-c:a", "libfaac" //
+ , "-c:a", "libfdk_aac" //
+ , "-pix_fmt", "yuv420p" //
+ , mp4.getCanonicalPath() };
+ ConverterProcessResult res = ProcessHelper.executeScript("uploadVideo ID :: " + f.getId(), args);
logs.add(res);
+ if (sameExt && tmp != null) {
+ if (res.isOk()) {
+ Files.delete(tmp);
+ } else {
+ //conversion fails, need to move temp file back
+ Files.move(tmp, mp4.toPath(), StandardCopyOption.ATOMIC_MOVE);
+ }
+ }
//Parse the width height from the FFMPEG output
FlvDimension dim = getFlvDimension(res.getError());
f.setFlvWidth(dim.width);
f.setFlvHeight(dim.height);
File jpeg = f.getFile(EXTENSION_JPG);
- String[] argv_previewFLV = new String[] { getPathToFFMPEG(), "-y", "-i",
+ 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.getId(), argv_previewFLV));
+ logs.add(ProcessHelper.executeScript("previewUpload ID :: " + f.getId(), args));
fileDao.update(f);
} catch (Exception err) {