Author: sebawagner
Date: Tue Feb 21 13:03:12 2012
New Revision: 1291755

URL: http://svn.apache.org/viewvc?rev=1291755&view=rev
Log:
Fixes: OPENMEETINGS-66 Whiteboard Player should aspect ratio when importing a 
video to the whiteboard

Modified:
    
incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/data/file/FileProcessor.java
    
incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/data/flvrecord/converter/FlvExplorerConverter.java
    
incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/documents/GenerateSWF.java

Modified: 
incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/data/file/FileProcessor.java
URL: 
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/data/file/FileProcessor.java?rev=1291755&r1=1291754&r2=1291755&view=diff
==============================================================================
--- 
incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/data/file/FileProcessor.java
 (original)
+++ 
incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/data/file/FileProcessor.java
 Tue Feb 21 13:03:12 2012
@@ -23,6 +23,7 @@ import java.io.FileOutputStream;
 import java.io.InputStream;
 import java.util.Date;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 import org.openmeetings.app.OpenmeetingsVariables;
@@ -219,7 +220,13 @@ public class FileProcessor {
             HashMap<String, String> processThumb = 
generateThumbs.generateThumb("_thumb_", current_dir, completeName, 50);
             returnError.put("processThumb", processThumb);
         } else if (isVideo) {
-             flvExplorerConverter.startConversion(fileExplorerItemId, 
completeName + newFileExtDot);
+               List<HashMap<String, String>> returnList = 
flvExplorerConverter.startConversion(fileExplorerItemId, completeName + 
newFileExtDot);
+               
+               int i=0;
+               for (HashMap<String, String> returnMap : returnList) {
+                       returnError.put("processFLV "+i, returnMap);
+               }
+               
         }
                
         returnError.put("returnAttributes", returnAttributes);

Modified: 
incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/data/flvrecord/converter/FlvExplorerConverter.java
URL: 
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/data/flvrecord/converter/FlvExplorerConverter.java?rev=1291755&r1=1291754&r2=1291755&view=diff
==============================================================================
--- 
incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/data/flvrecord/converter/FlvExplorerConverter.java
 (original)
+++ 
incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/data/flvrecord/converter/FlvExplorerConverter.java
 Tue Feb 21 13:03:12 2012
@@ -21,6 +21,8 @@ package org.openmeetings.app.data.flvrec
 import java.util.HashMap;
 import java.util.LinkedList;
 import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 import org.openmeetings.app.OpenmeetingsVariables;
 import org.openmeetings.app.data.file.dao.FileExplorerItemDaoImpl;
@@ -41,8 +43,18 @@ public class FlvExplorerConverter extend
        private FileExplorerItemDaoImpl fileExplorerItemDaoImpl;
        @Autowired
        private FlvRecordingLogDaoImpl flvRecordingLogDaoImpl;
+       
+       private class FlvDimension {
+               public FlvDimension(int width, int height) {
+                       this.width = width;
+                       this.height = height;
+               }
+               public int width = 0;
+               public int height = 0;
+       }
 
-       public void startConversion(Long fileExplorerItemId, String moviePath) {
+       public List<HashMap<String, String>> startConversion(Long 
fileExplorerItemId, String moviePath) {
+               List<HashMap<String, String>> returnLog = new 
LinkedList<HashMap<String, String>>();
                try {
 
                        FileExplorerItem fileExplorerItem = 
this.fileExplorerItemDaoImpl
@@ -51,41 +63,44 @@ public class FlvExplorerConverter extend
                        log.debug("fileExplorerItem "
                                        + 
fileExplorerItem.getFileExplorerItemId());
 
-                       // Strip Audio out of all Audio-FLVs
-                       this.convertToFLV(fileExplorerItem, moviePath);
+                       //  Convert to FLV
+                       return this.convertToFLV(fileExplorerItem, moviePath);
 
                        // Add empty pieces at the beginning and end of the wav
 
                } catch (Exception err) {
                        log.error("[startConversion]", err);
+                       HashMap<String, String> returnMap = new HashMap<String, 
String>();
+                       returnMap.put("process", "startConversion");
+                       returnMap.put("error", err.getMessage());
+                       returnMap.put("exception", err.toString());
+                       returnMap.put("exitValue", "-1");
+                       returnLog.add(returnMap);
                }
 
+               return returnLog;
+
        }
 
-       private void convertToFLV(FileExplorerItem fileExplorerItem,
+       private List<HashMap<String, String>> convertToFLV(FileExplorerItem 
fileExplorerItem,
                        String moviePath) {
+               List<HashMap<String, String>> returnLog = new 
LinkedList<HashMap<String, String>>();
                try {
 
-                       List<HashMap<String, String>> returnLog = new 
LinkedList<HashMap<String, String>>();
-
                        String streamFolderName = 
getStreamFolderName("hibernate");
 
                        String outputFullFlv = streamFolderName + "UPLOADFLV_"
                                        + 
fileExplorerItem.getFileExplorerItemId() + ".flv";
 
-                       int flvWidth = 300;
-                       int flvHeight = 240;
-
-                       fileExplorerItem.setFlvWidth(flvWidth);
-                       fileExplorerItem.setFlvHeight(flvHeight);
                        fileExplorerItem.setIsVideo(true);
 
                        String[] argv_fullFLV = null;
 
                        argv_fullFLV = new String[] { getPathToFFMPEG(), "-i", 
moviePath,
                                        "-ar", "22050", "-acodec", 
"libmp3lame", "-ab", "32k",
-                                       "-s", flvWidth + "x" + flvHeight, 
"-vcodec", "flv",
+                                       "-vcodec", "flv",
                                        outputFullFlv };
+                       // "-s", flvWidth + "x" + flvHeight, 
 
                        log.debug("START generateFullFLV ################# ");
                        String tString = "";
@@ -95,9 +110,20 @@ public class FlvExplorerConverter extend
                        }
                        log.debug(tString);
                        log.debug("END generateFullFLV ################# ");
+                       
+                       HashMap<String, String> returnMapConvertFLV = 
GenerateSWF.executeScript("uploadFLV ID :: "
+                                       + 
fileExplorerItem.getFileExplorerItemId(), argv_fullFLV);
+                       
+                       //Parse the width height from the FFMPEG output
+                       FlvDimension flvDimension = 
getFlvDimension(returnMapConvertFLV.get("error"));
+                       int flvWidth = flvDimension.width;
+                       int flvHeight = flvDimension.height;
+                       
+                       
+                       fileExplorerItem.setFlvWidth(flvWidth);
+                       fileExplorerItem.setFlvHeight(flvHeight);
 
-                       returnLog.add(GenerateSWF.executeScript("uploadFLV ID 
:: "
-                                       + 
fileExplorerItem.getFileExplorerItemId(), argv_fullFLV));
+                       returnLog.add(returnMapConvertFLV);
 
                        String hashFileFullNameJPEG = "UPLOADFLV_"
                                        + 
fileExplorerItem.getFileExplorerItemId() + ".jpg";
@@ -131,11 +157,38 @@ public class FlvExplorerConverter extend
                                this.flvRecordingLogDaoImpl.addFLVRecordingLog(
                                                "generateFFMPEG", null, 
returnMap);
                        }
+                       
+                       
 
                } catch (Exception err) {
                        log.error("[convertToFLV]", err);
+                       HashMap<String, String> returnMap = new HashMap<String, 
String>();
+                       returnMap.put("process", "convertToFLV");
+                       returnMap.put("error", err.getMessage());
+                       returnMap.put("exception", err.toString());
+                       returnMap.put("exitValue", "-1");
+                       returnLog.add(returnMap);
                }
 
+               return returnLog;
        }
-
+       
+       private FlvDimension getFlvDimension(String txt) throws Exception {
+               
+               Pattern p = Pattern.compile("\\d{2,4}(x)\\d{2,4}");
+               
+               Matcher matcher = p.matcher(txt);
+               
+               while ( matcher.find() ) {
+                       String foundResolution = txt.substring(matcher.start(), 
matcher.end());
+                       
+                       String[] resultions = foundResolution.split("x");
+                       
+                       return new 
FlvDimension(Integer.valueOf(resultions[0]).intValue(), 
Integer.valueOf(resultions[1]).intValue());
+                       
+           }
+               
+               return null;
+       }
+       
 }

Modified: 
incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/documents/GenerateSWF.java
URL: 
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/documents/GenerateSWF.java?rev=1291755&r1=1291754&r2=1291755&view=diff
==============================================================================
--- 
incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/documents/GenerateSWF.java
 (original)
+++ 
incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/documents/GenerateSWF.java
 Tue Feb 21 13:03:12 2012
@@ -37,7 +37,7 @@ import org.springframework.beans.factory
 public class GenerateSWF {
 
        private static final Logger log = Red5LoggerFactory
-                       .getLogger(GeneratePDF.class);
+                       .getLogger(GenerateSWF.class);
 
        @Autowired
        private Configurationmanagement cfgManagement;
@@ -56,6 +56,7 @@ public class GenerateSWF {
 
                try {
                        returnMap.put("command", Arrays.toString(argv));
+                       returnMap.put("out","");
 
                        // By using the process Builder we have access to 
modify the
                        // environment variables
@@ -73,9 +74,10 @@ public class GenerateSWF {
                        Worker worker = new Worker(proc);
                        InputStreamWatcher inputWatcher = new 
InputStreamWatcher(proc);
                        errorWatcher.start();
-                       worker.start();
-
                        inputWatcher.start();
+                       worker.start();
+                       
+                       
                        try {
                                worker.join(timeout);
                                if (worker.exit != null) {
@@ -102,6 +104,7 @@ public class GenerateSWF {
                        } finally {
                                proc.destroy();
                        }
+                       
                } catch (TimeoutException e) {
                        // Timeout exception is processed above
                        log.error("executeScript",e);
@@ -117,6 +120,7 @@ public class GenerateSWF {
                        returnMap.put("exception", t.toString());
                        returnMap.put("exitValue", "-1");
                }
+               
                return returnMap;
        }
 
@@ -158,7 +162,6 @@ public class GenerateSWF {
                                String line = br.readLine();
                                while (line != null) {
                                        error += line;
-                                       log.debug("line: " + line);
                                        line = br.readLine();
                                }
                        } catch (IOException ioexception) {
@@ -168,11 +171,14 @@ public class GenerateSWF {
        }
 
        // This one just reads script's output stream so it can
-       // finish normally, see issue 801
+       // finish normally, see issue 801 
http://code.google.com/p/openmeetings/issues/detail?id=801
+       // needs verification, swagner 21.02.2012
        private static class InputStreamWatcher extends Thread {
+               
                private final InputStream stderr;
                private final InputStreamReader isr;
                private final BufferedReader br;
+               public String message;
 
                private InputStreamWatcher(Process process) {
                        stderr = process.getInputStream();
@@ -191,6 +197,11 @@ public class GenerateSWF {
                                return;
                        }
                }
+               
+               public String getOutputString() {
+                       return message;
+               }
+               
        }
 
        private String getPathToSwfTools() {


Reply via email to