Author: solomax
Date: Fri Dec  9 15:36:52 2016
New Revision: 1773416

URL: http://svn.apache.org/viewvc?rev=1773416&view=rev
Log:
[OPENMEETINGS-1518] recordings are not being converted to flv

Removed:
    
openmeetings/application/branches/3.1.x/openmeetings-server/src/site/xdoc/FFMPEGVersionSwitch.xml
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/FlvRecordingResourceReference.java
    
openmeetings/application/branches/3.2.x/openmeetings-server/src/site/xdoc/FFMPEGVersionSwitch.xml
    
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/FlvRecordingResourceReference.java
    
openmeetings/application/trunk/openmeetings-server/src/site/xdoc/FFMPEGVersionSwitch.xml
    
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/FlvRecordingResourceReference.java
Modified:
    
openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java
    
openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/InterviewConverter.java
    
openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/RecordingConverter.java
    
openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/RecordingDao.java
    
openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java
    
openmeetings/application/branches/3.1.x/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java
    
openmeetings/application/branches/3.1.x/openmeetings-server/src/site/site.xml
    
openmeetings/application/branches/3.1.x/openmeetings-server/src/site/xdoc/GeneralConfiguration.xml
    
openmeetings/application/branches/3.1.x/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/CleanupJob.java
    
openmeetings/application/branches/3.1.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java
    
openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java
    
openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/InterviewConverter.java
    
openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/RecordingConverter.java
    
openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/RecordingDao.java
    
openmeetings/application/branches/3.2.x/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java
    
openmeetings/application/branches/3.2.x/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java
    
openmeetings/application/branches/3.2.x/openmeetings-server/src/site/site.xml
    
openmeetings/application/branches/3.2.x/openmeetings-server/src/site/xdoc/GeneralConfiguration.xml
    
openmeetings/application/branches/3.2.x/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/CleanupJob.java
    
openmeetings/application/branches/3.2.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java
    
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
    
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java
    
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java
    
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/InterviewConverter.java
    
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/RecordingConverter.java
    
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/RecordingDao.java
    
openmeetings/application/trunk/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java
    
openmeetings/application/trunk/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java
    openmeetings/application/trunk/openmeetings-server/src/site/site.xml
    
openmeetings/application/trunk/openmeetings-server/src/site/xdoc/GeneralConfiguration.xml
    
openmeetings/application/trunk/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/CleanupJob.java
    
openmeetings/application/trunk/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java
    
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java?rev=1773416&r1=1773415&r2=1773416&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java
 Fri Dec  9 15:36:52 2016
@@ -19,10 +19,8 @@
 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.FLV_EXTENSION;
-import static org.apache.openmeetings.util.OmFileHelper.MP4_EXTENSION;
-import static org.apache.openmeetings.util.OmFileHelper.getRecording;
 import static org.apache.openmeetings.util.OmFileHelper.getRecordingMetaData;
 import static org.apache.openmeetings.util.OmFileHelper.getStreamsSubDir;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
@@ -30,6 +28,7 @@ import static org.apache.openmeetings.ut
 import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
 import java.util.concurrent.TimeUnit;
@@ -79,10 +78,6 @@ public abstract class BaseConverter {
                return getPath("imagemagick_path", "convert") + 
GenerateSWF.execExt;
        }
 
-       protected boolean isUseOldStyleFfmpegMap() {
-               return 
"1".equals(configurationDao.getConfValue("use.old.style.ffmpeg.map.option", 
String.class, "0"));
-       }
-       
        protected File getStreamFolder(Recording recording) {
                return getStreamsSubDir(recording.getRoomId());
        }
@@ -336,28 +331,52 @@ public abstract class BaseConverter {
                        log.error("[stripAudioFirstPass]", err);
                }
        }
-       
-       public void convertToMp4(Recording r, List<ConverterProcessResult> 
returnLog) throws IOException {
-               //TODO add faststart, move filepaths to helpers
-               if (!r.exists(EXTENSION_FLV)) {
-                       return;
-               }
-               File file = getRecording(r.getHash());
-               String path = file.getCanonicalPath();
-               String mp4path = path + MP4_EXTENSION;
-               String[] argv = new String[] {
-                               getPathToFFMPEG(), "-y",
-                               "-i", path,
+
+       protected String getDimensions(Recording r) {
+               return String.format("%sx%s", r.getFlvWidth(), 
r.getFlvHeight());
+       }
+
+       protected List<String> addMp4OutParams(Recording r, List<String> argv, 
String mp4path) throws IOException {
+               argv.addAll(Arrays.asList(
                                "-c:v", "libx264",
                                "-crf", "24",
                                "-pix_fmt", "yuv420p",
                                "-preset", "medium",
                                "-profile:v", "baseline",
                                "-c:a", "libfaac",
-                               "-c:a", "libfdk_aac", "-b:a", "32k", //FIXME 
add quality constants 
-                               "-s", r.getFlvWidth() + "x" + r.getFlvHeight(), 
//
+                               "-c:a", "libfdk_aac",
+                               "-ar", "22050",
+                               "-b:a", "32k", //FIXME add quality constants 
+                               "-s", getDimensions(r), //
                                mp4path
-                               };
-               returnLog.add(ProcessHelper.executeScript("generate MP4", 
argv));
+                               ));
+               return argv;
+       }
+
+       protected String convertToMp4(Recording r, List<String> _argv, 
List<ConverterProcessResult> returnLog) throws IOException {
+               //TODO add faststart, move filepaths to helpers
+               String mp4path = r.getFile().getCanonicalPath();
+               List<String> argv = new 
ArrayList<>(Arrays.asList(getPathToFFMPEG(), "-y"));
+               argv.addAll(_argv);
+               returnLog.add(ProcessHelper.executeScript("generate MP4", 
addMp4OutParams(r, argv, mp4path).toArray(new String[]{})));
+               return mp4path;
+       }
+
+       protected void convertToJpg(Recording r, String mp4path, 
List<ConverterProcessResult> returnLog) 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);
+               r.setPreviewImage(jpg.getName());
+               String[] argv = new String[] { //
+                               getPathToFFMPEG(), "-y", //
+                               "-i", mp4path, //
+                               "-vcodec", "mjpeg", //
+                               "-vframes", "100", "-an", //
+                               "-f", "rawvideo", //
+                               "-s", getDimensions(r), //
+                               jpg.getCanonicalPath() };
+
+               returnLog.add(ProcessHelper.executeScript("generate preview 
JPG", argv));
        }
 }

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/InterviewConverter.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/InterviewConverter.java?rev=1773416&r1=1773415&r2=1773416&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/InterviewConverter.java
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/InterviewConverter.java
 Fri Dec  9 15:36:52 2016
@@ -99,24 +99,24 @@ public class InterviewConverter extends
        }
 
        public void startConversion(Long recordingId, boolean reconversion, 
ReConverterParams rcv) {
-               Recording recording = null;
+               Recording r = null;
                try {
-                       recording = recordingDao.get(recordingId);
-                       log.debug("recording " + recording.getId());
-                       recording.setStatus(Recording.Status.CONVERTING);
-                       recording = recordingDao.update(recording);
+                       r = recordingDao.get(recordingId);
+                       log.debug("recording " + r.getId());
+                       r.setStatus(Recording.Status.CONVERTING);
+                       r = recordingDao.update(r);
 
-                       List<ConverterProcessResult> returnLog = new 
ArrayList<ConverterProcessResult>();
+                       List<ConverterProcessResult> logs = new 
ArrayList<ConverterProcessResult>();
                        List<String> listOfFullWaveFiles = new 
LinkedList<String>();
-                       File streamFolder = getStreamFolder(recording);
-                       List<RecordingMetaData> metaDataList = 
metaDataDao.getAudioMetaDataByRecording(recording.getId());
+                       File streamFolder = getStreamFolder(r);
+                       List<RecordingMetaData> metaDataList = 
metaDataDao.getAudioMetaDataByRecording(r.getId());
        
-                       stripAudioFirstPass(recording, returnLog, 
listOfFullWaveFiles, streamFolder, metaDataList);
+                       stripAudioFirstPass(r, logs, listOfFullWaveFiles, 
streamFolder, metaDataList);
                
                        // Merge Wave to Full Length
                        File streamFolderGeneral = getStreamsHibernateDir();
 
-                       String hashFileFullName = "INTERVIEW_" + 
recording.getId() + "_FINAL_WAVE.wav";
+                       String hashFileFullName = "INTERVIEW_" + r.getId() + 
"_FINAL_WAVE.wav";
                        String outputFullWav = streamFolder.getAbsolutePath() + 
File.separatorChar + hashFileFullName;
                        deleteFileIfExists(outputFullWav);
 
@@ -130,18 +130,18 @@ public class InterviewConverter extends
                                        argv_full_sox = 
mergeAudioToWaves(listOfFullWaveFiles, outputFullWav);
                                }
 
-                               
returnLog.add(ProcessHelper.executeScript("mergeAudioToWaves", argv_full_sox));
+                               
logs.add(ProcessHelper.executeScript("mergeAudioToWaves", argv_full_sox));
                        } else {
                                // create default Audio to merge it.
                                // strip to content length
                                File outputWav = new File(streamFolderGeneral, 
"one_second.wav");
 
                                // Calculate delta at beginning
-                               double deltaPadding = 
diffSeconds(recording.getRecordEnd(), recording.getRecordStart());
+                               double deltaPadding = 
diffSeconds(r.getRecordEnd(), r.getRecordStart());
 
                                String[] argv_full_sox = new String[] { 
getPathToSoX(), outputWav.getCanonicalPath(), outputFullWav, "pad", "0", "" + 
deltaPadding };
 
-                               
returnLog.add(ProcessHelper.executeScript("generateSampleAudio", 
argv_full_sox));
+                               
logs.add(ProcessHelper.executeScript("generateSampleAudio", argv_full_sox));
                        }
                        // Default Image for empty interview video pods
                        final File defaultInterviewImageFile = new 
File(streamFolderGeneral, "default_interview_image.png");
@@ -152,13 +152,12 @@ public class InterviewConverter extends
 
                        final int flvWidth = 320;
                        final int flvHeight = 260;
-                       final int frameRate = 25;
                        // Merge Audio with Video / Calculate resulting FLV
 
                        String[] pods = new String[2];
                        boolean found = false;
                        for (RecordingMetaData meta : metaDataList) {
-                               File flv = 
getRecordingMetaData(recording.getRoomId(), meta.getStreamName());
+                               File flv = getRecordingMetaData(r.getRoomId(), 
meta.getStreamName());
 
                                Integer pod = meta.getInteriewPodId();
                                if (flv.exists() && pod != null && pod > 0 && 
pod < 3) {
@@ -173,9 +172,9 @@ public class InterviewConverter extends
                                                        , "-v", "error"
                                                        , "-f", "null"
                                                        , "file.null"};
-                                       ConverterProcessResult r = 
ProcessHelper.executeScript("checkFlvPod_" + pod , args);
-                                       returnLog.add(r);
-                                       if ("0".equals(r.getExitValue())) {
+                                       ConverterProcessResult res = 
ProcessHelper.executeScript("checkFlvPod_" + pod , args);
+                                       logs.add(res);
+                                       if ("0".equals(res.getExitValue())) {
                                                //TODO need to remove smallest 
gap
                                                long diff = 
diff(meta.getRecordStart(), meta.getRecording().getRecordStart());
                                                if (diff != 0L) {
@@ -190,7 +189,7 @@ public class InterviewConverter extends
                                                                        , "-t", 
formatMillis(diff) //
                                                                        , 
"-pix_fmt", "yuv420p" //
                                                                        , podPB 
};
-                                                       
returnLog.add(ProcessHelper.executeScript("blankFlvPod_" + pod , argsPodB));
+                                                       
logs.add(ProcessHelper.executeScript("blankFlvPod_" + pod , argsPodB));
                                                        
                                                        //ffmpeg -y -i out.flv 
-i rec_15_stream_4_2014_07_15_20_41_03.flv -filter_complex 
'[0:0]setsar=1/1[sarfix];[1:0]scale=320:260,setsar=1/1[scale];[sarfix] [scale] 
concat=n=2:v=1:a=0 [v]' -map '[v]'  output1.flv
                                                        File podF = new 
File(streamFolder, meta.getStreamName() + "_pod_" + pod + FLV_EXTENSION);
@@ -201,7 +200,7 @@ public class InterviewConverter extends
                                                                        , 
"-filter_complex", 
String.format("[0:0]setsar=1/1[sarfix];[1:0]scale=%1$d:%2$d,setsar=1/1[scale];[sarfix]
 [scale] concat=n=2:v=1:a=0 [v]", flvWidth, flvHeight) //
                                                                        , 
"-map", "[v]" //
                                                                        , podP 
};
-                                                       
returnLog.add(ProcessHelper.executeScript("shiftedFlvPod_" + pod , argsPod));
+                                                       
logs.add(ProcessHelper.executeScript("shiftedFlvPod_" + pod , argsPod));
        
                                                        pods[pod - 1] = podP;
                                                } else {
@@ -212,16 +211,14 @@ public class InterviewConverter extends
                                }
                        }
                        if (!found) {
-                               ConverterProcessResult r = new 
ConverterProcessResult();
-                               r.setProcess("CheckFlvFilesExists");
-                               r.setError("No valid pods found");
-                               returnLog.add(r);
+                               ConverterProcessResult res = new 
ConverterProcessResult();
+                               res.setProcess("CheckFlvFilesExists");
+                               res.setError("No valid pods found");
+                               logs.add(res);
                                return;
                        }
                        boolean shortest = false;
                        List<String> args = new ArrayList<String>();
-                       args.add(getPathToFFMPEG());
-                       args.add("-y"); 
                        for (int i = 0; i < 2; ++i) {
                                /*
                                 * INSERT BLANK INSTEAD OF BAD PAD:
@@ -239,8 +236,6 @@ public class InterviewConverter extends
                                }
                        }
                        args.add("-i"); args.add(outputFullWav);
-                       args.add("-ar"); args.add("22050");
-                       args.add("-ab"); args.add("32k");
                        args.add("-filter_complex");
                        
args.add(String.format("[0:v]scale=%1$d:%2$d,pad=2*%1$d:%2$d[left];[1:v]scale=%1$d:%2$d[right];[left][right]overlay=main_w/2:0%3$s"
                                        , flvWidth, flvHeight, shortest ? 
":shortest=1" : ""));
@@ -250,49 +245,25 @@ public class InterviewConverter extends
                        args.add("-map"); args.add("0:0");
                        args.add("-map"); args.add("1:0");
                        args.add("-map"); args.add("2:0");
-                       args.add("-r"); args.add("" + frameRate);
                        args.add("-qmax"); args.add("1");
                        args.add("-qmin"); args.add("1");
-                       args.add("-y");
-                       String hashFileFullNameFlv = recordingFileName + 
recording.getId() + FLV_EXTENSION;
-                       String outputFullFlv = new File(streamFolderGeneral, 
hashFileFullNameFlv).getCanonicalPath();
-                       args.add(outputFullFlv);
+                       String hashFileFullNameFlv = recordingFileName + 
r.getId() + FLV_EXTENSION;
                        // TODO additional flag to 'quiet' output should be 
added
-                       
returnLog.add(ProcessHelper.executeScript("generateFullBySequenceFLV", 
args.toArray(new String[]{})));
 
-                       recording.setFlvWidth(2 * flvWidth);
-                       recording.setFlvHeight(flvHeight);
+                       r.setFlvWidth(2 * flvWidth);
+                       r.setFlvHeight(flvHeight);
 
-                       recording.setHash(hashFileFullNameFlv);
+                       String mp4path = convertToMp4(r, args, logs);
+                       r.setHash(hashFileFullNameFlv);
 
-                       // Extract first Image for preview purpose
-                       // ffmpeg -i movie.flv -vcodec mjpeg -vframes 1 -an -f 
rawvideo -s
-                       // 320x240 movie.jpg
+                       convertToJpg(r, mp4path, logs);
 
-                       String hashFileFullNameJPEG = recordingFileName + 
recording.getId() + ".jpg";
-                       String outPutJpeg = new File(streamFolderGeneral, 
hashFileFullNameJPEG).getCanonicalPath();
-                       deleteFileIfExists(outPutJpeg);
+                       updateDuration(r);
+                       r.setStatus(Recording.Status.PROCESSED);
 
-                       recording.setPreviewImage(hashFileFullNameJPEG);
-
-                       String[] argv_previewFLV = new String[] { //
-                                       getPathToFFMPEG(), "-y", //
-                                       "-i", outputFullFlv, //
-                                       "-vcodec", "mjpeg", //
-                                       "-vframes", "100", "-an", //
-                                       "-f", "rawvideo", //
-                                       "-s", (2 * flvWidth) + "x" + flvHeight, 
//
-                                       outPutJpeg };
-
-                       
returnLog.add(ProcessHelper.executeScript("generateFullFLV", argv_previewFLV));
-
-                       updateDuration(recording);
-                       convertToMp4(recording, returnLog);
-                       recording.setStatus(Recording.Status.PROCESSED);
-
-                       logDao.deleteByRecordingId(recording.getId());
-                       for (ConverterProcessResult returnMap : returnLog) {
-                               logDao.add("generateFFMPEG", recording, 
returnMap);
+                       logDao.deleteByRecordingId(r.getId());
+                       for (ConverterProcessResult returnMap : logs) {
+                               logDao.add("generateFFMPEG", r, returnMap);
                        }
 
                        // Delete Wave Files
@@ -304,8 +275,8 @@ public class InterviewConverter extends
                        }
                } catch (Exception err) {
                        log.error("[startConversion]", err);
-                       recording.setStatus(Recording.Status.ERROR);
+                       r.setStatus(Recording.Status.ERROR);
                }
-               recordingDao.update(recording);
+               recordingDao.update(r);
        }
 }

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/RecordingConverter.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/RecordingConverter.java?rev=1773416&r1=1773415&r2=1773416&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/RecordingConverter.java
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/RecordingConverter.java
 Fri Dec  9 15:36:52 2016
@@ -25,6 +25,7 @@ import static org.apache.openmeetings.ut
 
 import java.io.File;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 
 import org.apache.openmeetings.db.dao.record.RecordingDao;
@@ -50,42 +51,36 @@ public class RecordingConverter extends
        @Autowired
        private RecordingLogDao logDao;
 
-       private String FFMPEG_MAP_PARAM = ":";
-
        @Override
        public void startConversion(Long recordingId) {
-               Recording recording = recordingDao.get(recordingId);
-               if (recording == null) {
+               Recording r = recordingDao.get(recordingId);
+               if (r == null) {
                        log.warn("Conversion is NOT started. Recording with ID 
{} is not found", recordingId);
                        return;
                }
                try {
-                       if (isUseOldStyleFfmpegMap()) {
-                               FFMPEG_MAP_PARAM = ".";
-                       }
-
                        String finalNamePrefix = recordingFileName + 
recordingId;
-                       log.debug("recording " + recording.getId());
+                       log.debug("recording " + r.getId());
 
                        List<ConverterProcessResult> returnLog = new 
ArrayList<ConverterProcessResult>();
                        List<String> listOfFullWaveFiles = new 
ArrayList<String>();
-                       File streamFolder = getStreamFolder(recording);
+                       File streamFolder = getStreamFolder(r);
                        
-                       RecordingMetaData screenMetaData = 
metaDataDao.getScreenMetaDataByRecording(recording.getId());
+                       RecordingMetaData screenMetaData = 
metaDataDao.getScreenMetaDataByRecording(r.getId());
 
                        if (screenMetaData == null) {
-                               throw new Exception("screenMetaData is Null 
recordingId " + recording.getId());
+                               throw new Exception("screenMetaData is Null 
recordingId " + r.getId());
                        }
 
                        if (screenMetaData.getStreamStatus() == Status.NONE) {
                                throw new Exception("Stream has not been 
started, error in recording");
                        }
-                       recording.setStatus(Recording.Status.CONVERTING);
-                       recording = recordingDao.update(recording);
+                       r.setStatus(Recording.Status.CONVERTING);
+                       r = recordingDao.update(r);
 
                        screenMetaData = 
waitForTheStream(screenMetaData.getId());
 
-                       stripAudioFirstPass(recording, returnLog, 
listOfFullWaveFiles, streamFolder);
+                       stripAudioFirstPass(r, returnLog, listOfFullWaveFiles, 
streamFolder);
 
                        // Merge Wave to Full Length
                        String hashFileFullName = 
screenMetaData.getStreamName() + "_FINAL_WAVE.wav";
@@ -102,7 +97,7 @@ public class RecordingConverter extends
                                String outputWav = new 
File(getStreamsHibernateDir(), "one_second.wav").getCanonicalPath();
 
                                // Calculate delta at beginning
-                               double deltaPadding = 
diffSeconds(recording.getRecordEnd(), recording.getRecordStart());
+                               double deltaPadding = 
diffSeconds(r.getRecordEnd(), r.getRecordStart());
 
                                String[] argv_full_sox = new String[] { 
getPathToSoX(), outputWav, outputFullWav, "pad", "0", "" + deltaPadding };
 
@@ -122,8 +117,8 @@ public class RecordingConverter extends
                        // -i 
65318fb5c54b1bc1b1bca077b493a914_28_12_2009_23_38_17.flv
                        // final1.flv
 
-                       int flvWidth = recording.getWidth();
-                       int flvHeight = recording.getHeight();
+                       int flvWidth = r.getWidth();
+                       int flvHeight = r.getHeight();
 
                        log.debug("flvWidth -1- " + flvWidth);
                        log.debug("flvHeight -1- " + flvHeight);
@@ -134,50 +129,24 @@ public class RecordingConverter extends
                        log.debug("flvWidth -2- " + flvWidth);
                        log.debug("flvHeight -2- " + flvHeight);
 
-                       recording.setFlvWidth(flvWidth);
-                       recording.setFlvHeight(flvHeight);
+                       r.setFlvWidth(flvWidth);
+                       r.setFlvHeight(flvHeight);
+
+                       String mp4path = convertToMp4(r, Arrays.asList(
+                                       "-itsoffset", 
formatMillis(diff(screenMetaData.getRecordStart(), r.getRecordStart())),
+                                       "-i", inputScreenFullFlv, "-i", 
outputFullWav
+                                       ), returnLog);
+
+                       r.setHash(outputFullFlv.getName());
+
+                       convertToJpg(r, mp4path, returnLog);
 
-                       String[] argv_fullFLV = new String[] { 
getPathToFFMPEG(), "-y",//
-                                       "-itsoffset", 
formatMillis(diff(screenMetaData.getRecordStart(), recording.getRecordStart())),
-                                       "-i", inputScreenFullFlv, "-i", 
outputFullWav, "-ar", "22050", //
-                                       "-acodec", "libmp3lame", //
-                                       "-ab", "32k", //
-                                       "-s", flvWidth + "x" + flvHeight, //
-                                       "-vcodec", "flashsv", //
-                                       "-map", "0" + FFMPEG_MAP_PARAM + "0", //
-                                       "-map", "1" + FFMPEG_MAP_PARAM + "0", //
-                                       outputFullFlv.getCanonicalPath() };
-
-                       
returnLog.add(ProcessHelper.executeScript("generateFullFLV", argv_fullFLV));
-
-                       recording.setHash(outputFullFlv.getName());
-
-                       // Extract first Image for preview purpose
-                       // ffmpeg -i movie.flv -vcodec mjpeg -vframes 1 -an -f 
rawvideo -s
-                       // 320x240 movie.jpg
-
-                       File outPutJpeg = new File(getStreamsHibernateDir(), 
finalNamePrefix + ".jpg");
-
-                       recording.setPreviewImage(outPutJpeg.getName());
-
-                       String[] argv_previewFLV = new String[] { //
-                                       getPathToFFMPEG(), "-y",//
-                                       "-i", outputFullFlv.getCanonicalPath(), 
//
-                                       "-vcodec", "mjpeg", //
-                                       "-vframes", "1", "-an", //
-                                       "-f", "rawvideo", //
-                                       "-s", flvWidth + "x" + flvHeight, //
-                                       outPutJpeg.getCanonicalPath() };
-
-                       
returnLog.add(ProcessHelper.executeScript("previewFullFLV", argv_previewFLV));
-
-                       updateDuration(recording);
-                       convertToMp4(recording, returnLog);
-                       recording.setStatus(Recording.Status.PROCESSED);
+                       updateDuration(r);
+                       r.setStatus(Recording.Status.PROCESSED);
 
-                       logDao.deleteByRecordingId(recording.getId());
+                       logDao.deleteByRecordingId(r.getId());
                        for (ConverterProcessResult returnMap : returnLog) {
-                               logDao.add("generateFFMPEG", recording, 
returnMap);
+                               logDao.add("generateFFMPEG", r, returnMap);
                        }
 
                        // Delete Wave Files
@@ -190,8 +159,8 @@ public class RecordingConverter extends
 
                } catch (Exception err) {
                        log.error("[startConversion]", err);
-                       recording.setStatus(Recording.Status.ERROR);
+                       r.setStatus(Recording.Status.ERROR);
                }
-               recordingDao.update(recording);
+               recordingDao.update(r);
        }
 }

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/RecordingDao.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/RecordingDao.java?rev=1773416&r1=1773415&r2=1773416&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/RecordingDao.java
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/RecordingDao.java
 Fri Dec  9 15:36:52 2016
@@ -18,7 +18,6 @@
  */
 package org.apache.openmeetings.db.dao.record;
 
-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.OpenmeetingsVariables.webAppRootKey;
@@ -275,9 +274,6 @@ public class RecordingDao {
        private long getSize(Recording r) {
                long size = 0;
 
-               if (r.exists(EXTENSION_FLV)) {
-                       size += r.getFile(EXTENSION_FLV).length();
-               }
                if (r.exists(EXTENSION_JPG)) {
                        size += r.getFile(EXTENSION_JPG).length();
                }

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java?rev=1773416&r1=1773415&r2=1773416&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java
 Fri Dec  9 15:36:52 2016
@@ -19,6 +19,7 @@
 package org.apache.openmeetings.db.entity.record;
 
 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.getRecording;
 import static org.apache.openmeetings.util.OmFileHelper.recordingFileName;
@@ -297,8 +298,8 @@ public class Recording extends FileItem
                if (getId() != null && !isDeleted()) {
                        if (ext == null || EXTENSION_MP4.equals(ext)) {
                                f = getRecording(String.format("%s%s.%s.%s", 
recordingFileName, id, EXTENSION_FLV, EXTENSION_MP4));
-                       } else if (EXTENSION_FLV.equals(ext)) {
-                               f = getRecording(String.format("%s%s.%s", 
recordingFileName, id, EXTENSION_FLV));
+                       } else if (EXTENSION_JPG.equals(ext)) {
+                               f = getRecording(String.format("%s%s.%s", 
recordingFileName, id, EXTENSION_JPG));
                        }
                }
                return f;

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java?rev=1773416&r1=1773415&r2=1773416&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java
 Fri Dec  9 15:36:52 2016
@@ -321,9 +321,6 @@ public class ImportInitvalues {
                cfgDao.add("calendar.conference.rooms.default.size", "50", null,
                                "Default number of participants conference room 
created via calendar");
 
-               cfgDao.add("use.old.style.ffmpeg.map.option", "0", null,
-                               "specify a 1 if you would like to use old 
FFMPEG -map option with 0.0 instead of 0:0");
-
                // give exclusive audio key code
                cfgDao.add("exclusive.audio.keycode", "123", null,
                                "A hot key code for the 'give exclusive audio' 
functionality. Keycode 123 is F12");

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-server/src/site/site.xml
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-server/src/site/site.xml?rev=1773416&r1=1773415&r2=1773416&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-server/src/site/site.xml 
(original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-server/src/site/site.xml 
Fri Dec  9 15:36:52 2016
@@ -112,7 +112,6 @@
                        </item>
                        <item name="Converters" href="#convert">
                                <item name="OpenOffice Converter" 
href="/OpenOfficeConverter.html" />
-                               <item name="FFMPEG Version Switch" 
href="/FFMPEGVersionSwitch.html" />
                        </item>
                        <item name="Clustering" href="#cluster">
                                <item name="Clustering" href="/Clustering.html" 
/>

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-server/src/site/xdoc/GeneralConfiguration.xml
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-server/src/site/xdoc/GeneralConfiguration.xml?rev=1773416&r1=1773415&r2=1773416&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-server/src/site/xdoc/GeneralConfiguration.xml
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-server/src/site/xdoc/GeneralConfiguration.xml
 Fri Dec  9 15:36:52 2016
@@ -109,15 +109,6 @@
                                        <td> 1.8.x </td>
                                </tr>
                                <tr>
-                                       <td> use.old.style.ffmpeg.map.option 
</td>
-                                       <td> 0 </td>
-                                       <td> If the system should "." (old 
ffmpeg) instead of ":"
-                                               (new ffmpeg) for the -map 
option in FFMPEG
-                                       </td>
-                                       <td> 1.9.x </td>
-
-                               </tr>
-                               <tr>
                                        <td> smtp_server </td>
                                        <td> localhost </td>
                                        <td> this is the smtp server to send 
messages </td>

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/CleanupJob.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/CleanupJob.java?rev=1773416&r1=1773415&r2=1773416&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/CleanupJob.java
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/CleanupJob.java
 Fri Dec  9 15:36:52 2016
@@ -18,7 +18,6 @@
  */
 package org.apache.openmeetings.service.quartz.scheduler;
 
-import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_FLV;
 import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_MP4;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 
@@ -109,7 +108,6 @@ public class CleanupJob extends Abstract
                        if (days < 0) {
                                log.debug("cleanExpiredRecordings:: following 
recording will be deleted {}", rec);
                                rec.getFile(EXTENSION_MP4).delete();
-                               rec.getFile(EXTENSION_FLV).delete();
                                recordingDao.delete(rec);
                        }
                });

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java?rev=1773416&r1=1773415&r2=1773416&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java
 Fri Dec  9 15:36:52 2016
@@ -86,7 +86,6 @@ public class OmFileHelper {
        public static final String MP4_EXTENSION = "." + EXTENSION_MP4;
        public static final String JPG_EXTENSION = "." + EXTENSION_JPG;
        public static final String WB_VIDEO_FILE_PREFIX = "UPLOADFLV_";
-       public static final String FLV_MIME_TYPE = "video/" + EXTENSION_FLV;
        public static final String MP4_MIME_TYPE = "video/" + EXTENSION_MP4;
        public static final String JPG_MIME_TYPE = "image/jpeg";
        public static final String PNG_MIME_TYPE = "image/png";
@@ -229,7 +228,7 @@ public class OmFileHelper {
        }
 
        public static File getRecordingMetaData(Long roomId, String name) {
-               return new File(getStreamsSubDir(roomId), name + FLV_EXTENSION);
+               return new File(getStreamsSubDir(roomId), getName(name, 
EXTENSION_FLV));
        }
 
        public static File getLanguagesDir() {

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java?rev=1773416&r1=1773415&r2=1773416&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
 Fri Dec  9 15:36:52 2016
@@ -61,7 +61,6 @@ import org.apache.openmeetings.web.user.
 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.FlvRecordingResourceReference;
 import org.apache.openmeetings.web.user.record.JpgRecordingResourceReference;
 import org.apache.openmeetings.web.user.record.Mp4RecordingResourceReference;
 import org.apache.openmeetings.web.util.GroupLogoResourceReference;
@@ -147,7 +146,6 @@ public class Application extends Authent
                mountPage("activate", ActivatePage.class);
                mountPage("reset", ResetPage.class);
                mountPage("/hash", HashPage.class);
-               mountResource("/recordings/flv/${id}", new 
FlvRecordingResourceReference());
                mountResource("/recordings/mp4/${id}", new 
Mp4RecordingResourceReference());
                mountResource("/recordings/jpg/${id}", new 
JpgRecordingResourceReference()); //should be in sync with VideoPlayer
                mountResource("/profile/${id}", new 
ProfileImageResourceReference());

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java?rev=1773416&r1=1773415&r2=1773416&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java
 Fri Dec  9 15:36:52 2016
@@ -18,7 +18,6 @@
  */
 package org.apache.openmeetings.web.user.record;
 
-import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_FLV;
 import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_MP4;
 import static org.apache.openmeetings.util.OmFileHelper.getRecordingMetaData;
 import static org.apache.openmeetings.web.app.Application.getBean;
@@ -185,24 +184,6 @@ public class VideoInfo extends Panel {
                                download.setFileName(f.getName());
                                download.setResourceStream(new 
FileResourceStream(f));
                                download.initiate(target);
-                       }
-               });
-               //flv
-               list.add(new MenuItem(getString("883"), 
JQueryIcon.ARROWTHICKSTOP_1_S) {
-                       private static final long serialVersionUID = 1L;
-                       
-                       @Override
-                       public boolean isEnabled() {
-                               Recording r = VideoInfo.this.rm.getObject();
-                               return r != null && r.exists(EXTENSION_FLV);
-                       }
-                       
-                       @Override
-                       public void onClick(AjaxRequestTarget target) {
-                               File f = rm.getObject().getFile(EXTENSION_FLV);
-                               download.setFileName(f.getName());
-                               download.setResourceStream(new 
FileResourceStream(f));
-                               download.initiate(target);
                        }
                });
                return list;

Modified: 
openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java?rev=1773416&r1=1773415&r2=1773416&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java
 (original)
+++ 
openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java
 Fri Dec  9 15:36:52 2016
@@ -19,6 +19,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_JPG;
 import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_FLV;
 import static org.apache.openmeetings.util.OmFileHelper.getRecordingMetaData;
 import static org.apache.openmeetings.util.OmFileHelper.getStreamsSubDir;
@@ -27,6 +28,7 @@ import static org.apache.openmeetings.ut
 import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
 import java.util.concurrent.TimeUnit;
@@ -332,27 +334,51 @@ public abstract class BaseConverter {
                        log.error("[stripAudioFirstPass]", err);
                }
        }
-       
-       public void convertToMp4(Recording r, List<ConverterProcessResult> 
returnLog) throws IOException {
-               //TODO add faststart, move filepaths to helpers
-               if (!r.exists(EXTENSION_FLV)) {
-                       return;
-               }
-               File file = r.getFile(EXTENSION_FLV);
-               File mp4 = r.getFile();
-               String[] argv = new String[] {
-                               getPathToFFMPEG(), "-y",
-                               "-i", file.getCanonicalPath(),
+
+       protected String getDimensions(Recording r) {
+               return String.format("%sx%s", r.getFlvWidth(), 
r.getFlvHeight());
+       }
+
+       protected List<String> addMp4OutParams(Recording r, List<String> argv, 
String mp4path) throws IOException {
+               argv.addAll(Arrays.asList(
                                "-c:v", "libx264",
                                "-crf", "24",
                                "-pix_fmt", "yuv420p",
                                "-preset", "medium",
                                "-profile:v", "baseline",
                                "-c:a", "libfaac",
-                               "-c:a", "libfdk_aac", "-b:a", "32k", //FIXME 
add quality constants 
-                               "-s", r.getFlvWidth() + "x" + r.getFlvHeight(), 
//
-                               mp4.getCanonicalPath()
-                               };
-               returnLog.add(ProcessHelper.executeScript("generate MP4", 
argv));
+                               "-c:a", "libfdk_aac",
+                               "-ar", "22050",
+                               "-b:a", "32k", //FIXME add quality constants 
+                               "-s", getDimensions(r), //
+                               mp4path
+                               ));
+               return argv;
+       }
+
+       protected String convertToMp4(Recording r, List<String> _argv, 
List<ConverterProcessResult> returnLog) throws IOException {
+               //TODO add faststart, move filepaths to helpers
+               String mp4path = r.getFile().getCanonicalPath();
+               List<String> argv = new 
ArrayList<>(Arrays.asList(getPathToFFMPEG(), "-y"));
+               argv.addAll(_argv);
+               returnLog.add(ProcessHelper.executeScript("generate MP4", 
addMp4OutParams(r, argv, mp4path).toArray(new String[]{})));
+               return mp4path;
+       }
+
+       protected void convertToJpg(Recording r, String mp4path, 
List<ConverterProcessResult> returnLog) 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);
+               String[] argv = new String[] { //
+                               getPathToFFMPEG(), "-y", //
+                               "-i", mp4path, //
+                               "-vcodec", "mjpeg", //
+                               "-vframes", "100", "-an", //
+                               "-f", "rawvideo", //
+                               "-s", getDimensions(r), //
+                               jpg.getCanonicalPath() };
+
+               returnLog.add(ProcessHelper.executeScript("generate preview 
JPG", argv));
        }
 }

Modified: 
openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/InterviewConverter.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/InterviewConverter.java?rev=1773416&r1=1773415&r2=1773416&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/InterviewConverter.java
 (original)
+++ 
openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/InterviewConverter.java
 Fri Dec  9 15:36:52 2016
@@ -19,7 +19,6 @@
 package org.apache.openmeetings.core.converter;
 
 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.getRecordingMetaData;
 import static org.apache.openmeetings.util.OmFileHelper.getStreamsHibernateDir;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
@@ -154,7 +153,6 @@ public class InterviewConverter extends
 
                        final int flvWidth = 320;
                        final int flvHeight = 260;
-                       final int frameRate = 25;
                        // Merge Audio with Video / Calculate resulting FLV
 
                        String[] pods = new String[2];
@@ -223,8 +221,6 @@ public class InterviewConverter extends
                        }
                        boolean shortest = false;
                        List<String> args = new ArrayList<String>();
-                       args.add(getPathToFFMPEG());
-                       args.add("-y"); 
                        for (int i = 0; i < 2; ++i) {
                                /*
                                 * INSERT BLANK INSTEAD OF BAD PAD:
@@ -242,8 +238,6 @@ public class InterviewConverter extends
                                }
                        }
                        args.add("-i"); args.add(wav.getCanonicalPath());
-                       args.add("-ar"); args.add("22050");
-                       args.add("-ab"); args.add("32k");
                        args.add("-filter_complex");
                        
args.add(String.format("[0:v]scale=%1$d:%2$d,pad=2*%1$d:%2$d[left];[1:v]scale=%1$d:%2$d[right];[left][right]overlay=main_w/2:0%3$s"
                                        , flvWidth, flvHeight, shortest ? 
":shortest=1" : ""));
@@ -253,38 +247,18 @@ public class InterviewConverter extends
                        args.add("-map"); args.add("0:0");
                        args.add("-map"); args.add("1:0");
                        args.add("-map"); args.add("2:0");
-                       args.add("-r"); args.add("" + frameRate);
                        args.add("-qmax"); args.add("1");
                        args.add("-qmin"); args.add("1");
-                       args.add("-y");
-                       File flv = r.getFile(EXTENSION_FLV);
-                       args.add(flv.getCanonicalPath());
                        // TODO additional flag to 'quiet' output should be 
added
-                       
logs.add(ProcessHelper.executeScript("generateFullBySequenceFLV", 
args.toArray(new String[]{})));
 
                        r.setFlvWidth(2 * flvWidth);
                        r.setFlvHeight(flvHeight);
 
-                       // 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);
-                       deleteFileIfExists(jpg);
-
-                       String[] argv_previewFLV = new String[] { //
-                                       getPathToFFMPEG(), "-y", //
-                                       "-i", flv.getCanonicalPath(), //
-                                       "-vcodec", "mjpeg", //
-                                       "-vframes", "100", "-an", //
-                                       "-f", "rawvideo", //
-                                       "-s", (2 * flvWidth) + "x" + flvHeight, 
//
-                                       jpg.getCanonicalPath() };
+                       String mp4path = convertToMp4(r, args, logs);
 
-                       logs.add(ProcessHelper.executeScript("generateFullFLV", 
argv_previewFLV));
+                       convertToJpg(r, mp4path, logs);
 
                        updateDuration(r);
-                       convertToMp4(r, logs);
                        r.setStatus(Recording.Status.PROCESSED);
 
                        logDao.delete(r);

Modified: 
openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/RecordingConverter.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/RecordingConverter.java?rev=1773416&r1=1773415&r2=1773416&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/RecordingConverter.java
 (original)
+++ 
openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/RecordingConverter.java
 Fri Dec  9 15:36:52 2016
@@ -19,12 +19,12 @@
 package org.apache.openmeetings.core.converter;
 
 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.getStreamsHibernateDir;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 
 import java.io.File;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 import java.util.UUID;
 
@@ -53,8 +53,6 @@ public class RecordingConverter extends
        @Autowired
        private FileItemLogDao logDao;
 
-       private String FFMPEG_MAP_PARAM = ":";
-
        @Override
        public void startConversion(Long id) {
                Recording r = recordingDao.get(id);
@@ -63,10 +61,6 @@ public class RecordingConverter extends
                        return;
                }
                try {
-                       if (isUseOldStyleFfmpegMap()) {
-                               FFMPEG_MAP_PARAM = ".";
-                       }
-
                        log.debug("recording " + r.getId());
 
                        List<ConverterProcessResult> logs = new ArrayList<>();
@@ -119,8 +113,6 @@ public class RecordingConverter extends
 
                        String inputScreenFullFlv = new File(streamFolder, 
OmFileHelper.getName(screenMetaData.getStreamName(), 
EXTENSION_FLV)).getCanonicalPath();
 
-                       File flv = r.getFile(EXTENSION_FLV);
-
                        // ffmpeg -vcodec flv -qscale 9.5 -r 25 -ar 22050 -ab 
32k -s 320x240
                        // -i 
65318fb5c54b1bc1b1bca077b493a914_28_12_2009_23_38_17_FINAL_WAVE.wav
                        // -i 
65318fb5c54b1bc1b1bca077b493a914_28_12_2009_23_38_17.flv
@@ -141,38 +133,14 @@ public class RecordingConverter extends
                        r.setFlvWidth(flvWidth);
                        r.setFlvHeight(flvHeight);
 
-                       String[] cmdFlv = new String[] { getPathToFFMPEG(), 
"-y",//
+                       String mp4path = convertToMp4(r, Arrays.asList(
                                        "-itsoffset", 
formatMillis(diff(screenMetaData.getRecordStart(), r.getRecordStart())),
-                                       "-i", inputScreenFullFlv, "-i", 
wav.getCanonicalPath(), "-ar", "22050", //
-                                       "-acodec", "libmp3lame", //
-                                       "-ab", "32k", //
-                                       "-s", flvWidth + "x" + flvHeight, //
-                                       "-vcodec", "flashsv", //
-                                       "-map", "0" + FFMPEG_MAP_PARAM + "0", //
-                                       "-map", "1" + FFMPEG_MAP_PARAM + "0", //
-                                       flv.getCanonicalPath() };
-
-                       logs.add(ProcessHelper.executeScript("generateFullFLV", 
cmdFlv));
-
-                       // 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);
-
-                       String[] cmdJpg = new String[] { //
-                                       getPathToFFMPEG(), "-y",//
-                                       "-i", flv.getCanonicalPath(), //
-                                       "-vcodec", "mjpeg", //
-                                       "-vframes", "1", "-an", //
-                                       "-f", "rawvideo", //
-                                       "-s", flvWidth + "x" + flvHeight, //
-                                       jpg.getCanonicalPath() };
+                                       "-i", inputScreenFullFlv, "-i", 
wav.getCanonicalPath()
+                                       ), logs);
 
-                       logs.add(ProcessHelper.executeScript("previewFullFLV", 
cmdJpg));
+                       convertToJpg(r, mp4path, logs);
 
                        updateDuration(r);
-                       convertToMp4(r, logs);
                        r.setStatus(Recording.Status.PROCESSED);
 
                        logDao.delete(r);

Modified: 
openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/RecordingDao.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/RecordingDao.java?rev=1773416&r1=1773415&r2=1773416&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/RecordingDao.java
 (original)
+++ 
openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/RecordingDao.java
 Fri Dec  9 15:36:52 2016
@@ -18,7 +18,6 @@
  */
 package org.apache.openmeetings.db.dao.record;
 
-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.OpenmeetingsVariables.webAppRootKey;
@@ -275,9 +274,6 @@ public class RecordingDao {
        private long getSize(Recording r) {
                long size = 0;
 
-               if (r.exists(EXTENSION_FLV)) {
-                       size += r.getFile(EXTENSION_FLV).length();
-               }
                if (r.exists(EXTENSION_JPG)) {
                        size += r.getFile(EXTENSION_JPG).length();
                }

Modified: 
openmeetings/application/branches/3.2.x/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java?rev=1773416&r1=1773415&r2=1773416&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.2.x/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java
 (original)
+++ 
openmeetings/application/branches/3.2.x/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java
 Fri Dec  9 15:36:52 2016
@@ -553,8 +553,6 @@ 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_FLV), String.format("%s.%s", r.getHash(), EXTENSION_FLV));
-                                       fileMap.put(String.format("%s.%s.meta", 
name, EXTENSION_FLV), String.format("%s.%s.meta", r.getHash(), EXTENSION_FLV));
                                        fileMap.put(String.format("%s.%s", 
name, EXTENSION_JPG), String.format("%s.%s", r.getHash(), EXTENSION_JPG));
                                        fileMap.put(String.format("%s.%s.%s", 
name, EXTENSION_FLV, EXTENSION_MP4), String.format("%s.%s", r.getHash(), 
EXTENSION_MP4));
                                }

Modified: 
openmeetings/application/branches/3.2.x/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java?rev=1773416&r1=1773415&r2=1773416&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.2.x/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java
 (original)
+++ 
openmeetings/application/branches/3.2.x/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java
 Fri Dec  9 15:36:52 2016
@@ -323,9 +323,6 @@ public class ImportInitvalues {
                cfgDao.add("calendar.conference.rooms.default.size", "50", null,
                                "Default number of participants conference room 
created via calendar");
 
-               cfgDao.add("use.old.style.ffmpeg.map.option", "0", null,
-                               "specify a 1 if you would like to use old 
FFMPEG -map option with 0.0 instead of 0:0");
-
                // give exclusive audio key code
                cfgDao.add("exclusive.audio.keycode", "123", null,
                                "A hot key code for the 'give exclusive audio' 
functionality. Keycode 123 is F12");

Modified: 
openmeetings/application/branches/3.2.x/openmeetings-server/src/site/site.xml
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-server/src/site/site.xml?rev=1773416&r1=1773415&r2=1773416&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.2.x/openmeetings-server/src/site/site.xml 
(original)
+++ 
openmeetings/application/branches/3.2.x/openmeetings-server/src/site/site.xml 
Fri Dec  9 15:36:52 2016
@@ -112,7 +112,6 @@
                        </item>
                        <item name="Converters" href="#convert">
                                <item name="OpenOffice Converter" 
href="/OpenOfficeConverter.html" />
-                               <item name="FFMPEG Version Switch" 
href="/FFMPEGVersionSwitch.html" />
                        </item>
                        <item name="Clustering" href="#cluster">
                                <item name="Clustering" href="/Clustering.html" 
/>

Modified: 
openmeetings/application/branches/3.2.x/openmeetings-server/src/site/xdoc/GeneralConfiguration.xml
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-server/src/site/xdoc/GeneralConfiguration.xml?rev=1773416&r1=1773415&r2=1773416&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.2.x/openmeetings-server/src/site/xdoc/GeneralConfiguration.xml
 (original)
+++ 
openmeetings/application/branches/3.2.x/openmeetings-server/src/site/xdoc/GeneralConfiguration.xml
 Fri Dec  9 15:36:52 2016
@@ -109,15 +109,6 @@
                                        <td> 1.8.x </td>
                                </tr>
                                <tr>
-                                       <td> use.old.style.ffmpeg.map.option 
</td>
-                                       <td> 0 </td>
-                                       <td> If the system should "." (old 
ffmpeg) instead of ":"
-                                               (new ffmpeg) for the -map 
option in FFMPEG
-                                       </td>
-                                       <td> 1.9.x </td>
-
-                               </tr>
-                               <tr>
                                        <td> smtp_server </td>
                                        <td> localhost </td>
                                        <td> this is the smtp server to send 
messages </td>
@@ -311,4 +302,4 @@
 
        </body>
 
-</document>
\ No newline at end of file
+</document>

Modified: 
openmeetings/application/branches/3.2.x/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/CleanupJob.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/CleanupJob.java?rev=1773416&r1=1773415&r2=1773416&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.2.x/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/CleanupJob.java
 (original)
+++ 
openmeetings/application/branches/3.2.x/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/CleanupJob.java
 Fri Dec  9 15:36:52 2016
@@ -18,7 +18,6 @@
  */
 package org.apache.openmeetings.service.quartz.scheduler;
 
-import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_FLV;
 import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_MP4;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 
@@ -109,7 +108,6 @@ public class CleanupJob extends Abstract
                        if (days < 0) {
                                log.debug("cleanExpiredRecordings:: following 
recording will be deleted {}", rec);
                                rec.getFile(EXTENSION_MP4).delete();
-                               rec.getFile(EXTENSION_FLV).delete();
                                recordingDao.delete(rec);
                        }
                });

Modified: 
openmeetings/application/branches/3.2.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java?rev=1773416&r1=1773415&r2=1773416&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.2.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java
 (original)
+++ 
openmeetings/application/branches/3.2.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java
 Fri Dec  9 15:36:52 2016
@@ -67,7 +67,6 @@ public class OmFileHelper {
        public static final String EXTENSION_SWF = "swf";
        public static final String EXTENSION_PDF = "pdf";
        public static final String WB_VIDEO_FILE_PREFIX = "UPLOADFLV_";
-       public static final String FLV_MIME_TYPE = "video/" + EXTENSION_FLV;
        public static final String MP4_MIME_TYPE = "video/" + EXTENSION_MP4;
        public static final String JPG_MIME_TYPE = "image/jpeg";
        public static final String PNG_MIME_TYPE = "image/png";

Modified: 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java?rev=1773416&r1=1773415&r2=1773416&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
 (original)
+++ 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
 Fri Dec  9 15:36:52 2016
@@ -65,7 +65,6 @@ import org.apache.openmeetings.web.user.
 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.FlvRecordingResourceReference;
 import org.apache.openmeetings.web.user.record.JpgRecordingResourceReference;
 import org.apache.openmeetings.web.user.record.Mp4RecordingResourceReference;
 import org.apache.openmeetings.web.util.GroupLogoResourceReference;
@@ -149,7 +148,6 @@ public class Application extends Authent
                mountPage("install", InstallWizardPage.class);
                mountPage("activate", ActivatePage.class);
                mountPage("reset", ResetPage.class);
-               mountResource("/recordings/flv/${id}", new 
FlvRecordingResourceReference());
                mountResource("/recordings/mp4/${id}", new 
Mp4RecordingResourceReference());
                mountResource("/recordings/jpg/${id}", new 
JpgRecordingResourceReference()); //should be in sync with VideoPlayer
                mountResource("/room/file/${id}", new RoomResourceReference());

Modified: 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java?rev=1773416&r1=1773415&r2=1773416&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java
 (original)
+++ 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java
 Fri Dec  9 15:36:52 2016
@@ -18,7 +18,6 @@
  */
 package org.apache.openmeetings.web.user.record;
 
-import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_FLV;
 import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_MP4;
 import static org.apache.openmeetings.util.OmFileHelper.getRecordingMetaData;
 import static org.apache.openmeetings.web.app.Application.getBean;
@@ -185,24 +184,6 @@ public class VideoInfo extends Panel {
                                download.setFileName(f.getName());
                                download.setResourceStream(new 
FileResourceStream(f));
                                download.initiate(target);
-                       }
-               });
-               //flv
-               list.add(new MenuItem(getString("883"), 
JQueryIcon.ARROWTHICKSTOP_1_S) {
-                       private static final long serialVersionUID = 1L;
-                       
-                       @Override
-                       public boolean isEnabled() {
-                               Recording r = VideoInfo.this.rm.getObject();
-                               return r != null && r.exists(EXTENSION_FLV);
-                       }
-                       
-                       @Override
-                       public void onClick(AjaxRequestTarget target) {
-                               File f = rm.getObject().getFile(EXTENSION_FLV);
-                               download.setFileName(f.getName());
-                               download.setResourceStream(new 
FileResourceStream(f));
-                               download.initiate(target);
                        }
                });
                return list;

Modified: 
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java?rev=1773416&r1=1773415&r2=1773416&view=diff
==============================================================================
--- 
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java
 (original)
+++ 
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java
 Fri Dec  9 15:36:52 2016
@@ -19,6 +19,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_JPG;
 import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_FLV;
 import static org.apache.openmeetings.util.OmFileHelper.getRecordingMetaData;
 import static org.apache.openmeetings.util.OmFileHelper.getStreamsSubDir;
@@ -27,6 +28,7 @@ import static org.apache.openmeetings.ut
 import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
 import java.util.concurrent.TimeUnit;
@@ -332,27 +334,51 @@ public abstract class BaseConverter {
                        log.error("[stripAudioFirstPass]", err);
                }
        }
-       
-       public void convertToMp4(Recording r, List<ConverterProcessResult> 
returnLog) throws IOException {
-               //TODO add faststart, move filepaths to helpers
-               if (!r.exists(EXTENSION_FLV)) {
-                       return;
-               }
-               File file = r.getFile(EXTENSION_FLV);
-               File mp4 = r.getFile();
-               String[] argv = new String[] {
-                               getPathToFFMPEG(), "-y",
-                               "-i", file.getCanonicalPath(),
+
+       protected String getDimensions(Recording r) {
+               return String.format("%sx%s", r.getFlvWidth(), 
r.getFlvHeight());
+       }
+
+       protected List<String> addMp4OutParams(Recording r, List<String> argv, 
String mp4path) throws IOException {
+               argv.addAll(Arrays.asList(
                                "-c:v", "libx264",
                                "-crf", "24",
                                "-pix_fmt", "yuv420p",
                                "-preset", "medium",
                                "-profile:v", "baseline",
                                "-c:a", "libfaac",
-                               "-c:a", "libfdk_aac", "-b:a", "32k", //FIXME 
add quality constants 
-                               "-s", r.getFlvWidth() + "x" + r.getFlvHeight(), 
//
-                               mp4.getCanonicalPath()
-                               };
-               returnLog.add(ProcessHelper.executeScript("generate MP4", 
argv));
+                               "-c:a", "libfdk_aac",
+                               "-ar", "22050",
+                               "-b:a", "32k", //FIXME add quality constants 
+                               "-s", getDimensions(r), //
+                               mp4path
+                               ));
+               return argv;
+       }
+
+       protected String convertToMp4(Recording r, List<String> _argv, 
List<ConverterProcessResult> returnLog) throws IOException {
+               //TODO add faststart, move filepaths to helpers
+               String mp4path = r.getFile().getCanonicalPath();
+               List<String> argv = new 
ArrayList<>(Arrays.asList(getPathToFFMPEG(), "-y"));
+               argv.addAll(_argv);
+               returnLog.add(ProcessHelper.executeScript("generate MP4", 
addMp4OutParams(r, argv, mp4path).toArray(new String[]{})));
+               return mp4path;
+       }
+
+       protected void convertToJpg(Recording r, String mp4path, 
List<ConverterProcessResult> returnLog) 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);
+               String[] argv = new String[] { //
+                               getPathToFFMPEG(), "-y", //
+                               "-i", mp4path, //
+                               "-vcodec", "mjpeg", //
+                               "-vframes", "100", "-an", //
+                               "-f", "rawvideo", //
+                               "-s", getDimensions(r), //
+                               jpg.getCanonicalPath() };
+
+               returnLog.add(ProcessHelper.executeScript("generate preview 
JPG", argv));
        }
 }

Modified: 
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/InterviewConverter.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/InterviewConverter.java?rev=1773416&r1=1773415&r2=1773416&view=diff
==============================================================================
--- 
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/InterviewConverter.java
 (original)
+++ 
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/InterviewConverter.java
 Fri Dec  9 15:36:52 2016
@@ -19,7 +19,6 @@
 package org.apache.openmeetings.core.converter;
 
 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.getRecordingMetaData;
 import static org.apache.openmeetings.util.OmFileHelper.getStreamsHibernateDir;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
@@ -154,7 +153,6 @@ public class InterviewConverter extends
 
                        final int flvWidth = 320;
                        final int flvHeight = 260;
-                       final int frameRate = 25;
                        // Merge Audio with Video / Calculate resulting FLV
 
                        String[] pods = new String[2];
@@ -223,8 +221,6 @@ public class InterviewConverter extends
                        }
                        boolean shortest = false;
                        List<String> args = new ArrayList<String>();
-                       args.add(getPathToFFMPEG());
-                       args.add("-y"); 
                        for (int i = 0; i < 2; ++i) {
                                /*
                                 * INSERT BLANK INSTEAD OF BAD PAD:
@@ -242,8 +238,6 @@ public class InterviewConverter extends
                                }
                        }
                        args.add("-i"); args.add(wav.getCanonicalPath());
-                       args.add("-ar"); args.add("22050");
-                       args.add("-ab"); args.add("32k");
                        args.add("-filter_complex");
                        
args.add(String.format("[0:v]scale=%1$d:%2$d,pad=2*%1$d:%2$d[left];[1:v]scale=%1$d:%2$d[right];[left][right]overlay=main_w/2:0%3$s"
                                        , flvWidth, flvHeight, shortest ? 
":shortest=1" : ""));
@@ -253,38 +247,18 @@ public class InterviewConverter extends
                        args.add("-map"); args.add("0:0");
                        args.add("-map"); args.add("1:0");
                        args.add("-map"); args.add("2:0");
-                       args.add("-r"); args.add("" + frameRate);
                        args.add("-qmax"); args.add("1");
                        args.add("-qmin"); args.add("1");
-                       args.add("-y");
-                       File flv = r.getFile(EXTENSION_FLV);
-                       args.add(flv.getCanonicalPath());
                        // TODO additional flag to 'quiet' output should be 
added
-                       
logs.add(ProcessHelper.executeScript("generateFullBySequenceFLV", 
args.toArray(new String[]{})));
 
                        r.setFlvWidth(2 * flvWidth);
                        r.setFlvHeight(flvHeight);
 
-                       // 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);
-                       deleteFileIfExists(jpg);
-
-                       String[] argv_previewFLV = new String[] { //
-                                       getPathToFFMPEG(), "-y", //
-                                       "-i", flv.getCanonicalPath(), //
-                                       "-vcodec", "mjpeg", //
-                                       "-vframes", "100", "-an", //
-                                       "-f", "rawvideo", //
-                                       "-s", (2 * flvWidth) + "x" + flvHeight, 
//
-                                       jpg.getCanonicalPath() };
+                       String mp4path = convertToMp4(r, args, logs);
 
-                       logs.add(ProcessHelper.executeScript("generateFullFLV", 
argv_previewFLV));
+                       convertToJpg(r, mp4path, logs);
 
                        updateDuration(r);
-                       convertToMp4(r, logs);
                        r.setStatus(Recording.Status.PROCESSED);
 
                        logDao.delete(r);

Modified: 
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/RecordingConverter.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/RecordingConverter.java?rev=1773416&r1=1773415&r2=1773416&view=diff
==============================================================================
--- 
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/RecordingConverter.java
 (original)
+++ 
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/RecordingConverter.java
 Fri Dec  9 15:36:52 2016
@@ -19,12 +19,12 @@
 package org.apache.openmeetings.core.converter;
 
 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.getStreamsHibernateDir;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 
 import java.io.File;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 import java.util.UUID;
 
@@ -53,8 +53,6 @@ public class RecordingConverter extends
        @Autowired
        private FileItemLogDao logDao;
 
-       private String FFMPEG_MAP_PARAM = ":";
-
        @Override
        public void startConversion(Long id) {
                Recording r = recordingDao.get(id);
@@ -63,10 +61,6 @@ public class RecordingConverter extends
                        return;
                }
                try {
-                       if (isUseOldStyleFfmpegMap()) {
-                               FFMPEG_MAP_PARAM = ".";
-                       }
-
                        log.debug("recording " + r.getId());
 
                        List<ConverterProcessResult> logs = new ArrayList<>();
@@ -119,8 +113,6 @@ public class RecordingConverter extends
 
                        String inputScreenFullFlv = new File(streamFolder, 
OmFileHelper.getName(screenMetaData.getStreamName(), 
EXTENSION_FLV)).getCanonicalPath();
 
-                       File flv = r.getFile(EXTENSION_FLV);
-
                        // ffmpeg -vcodec flv -qscale 9.5 -r 25 -ar 22050 -ab 
32k -s 320x240
                        // -i 
65318fb5c54b1bc1b1bca077b493a914_28_12_2009_23_38_17_FINAL_WAVE.wav
                        // -i 
65318fb5c54b1bc1b1bca077b493a914_28_12_2009_23_38_17.flv
@@ -141,38 +133,14 @@ public class RecordingConverter extends
                        r.setFlvWidth(flvWidth);
                        r.setFlvHeight(flvHeight);
 
-                       String[] cmdFlv = new String[] { getPathToFFMPEG(), 
"-y",//
+                       String mp4path = convertToMp4(r, Arrays.asList(
                                        "-itsoffset", 
formatMillis(diff(screenMetaData.getRecordStart(), r.getRecordStart())),
-                                       "-i", inputScreenFullFlv, "-i", 
wav.getCanonicalPath(), "-ar", "22050", //
-                                       "-acodec", "libmp3lame", //
-                                       "-ab", "32k", //
-                                       "-s", flvWidth + "x" + flvHeight, //
-                                       "-vcodec", "flashsv", //
-                                       "-map", "0" + FFMPEG_MAP_PARAM + "0", //
-                                       "-map", "1" + FFMPEG_MAP_PARAM + "0", //
-                                       flv.getCanonicalPath() };
-
-                       logs.add(ProcessHelper.executeScript("generateFullFLV", 
cmdFlv));
-
-                       // 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);
-
-                       String[] cmdJpg = new String[] { //
-                                       getPathToFFMPEG(), "-y",//
-                                       "-i", flv.getCanonicalPath(), //
-                                       "-vcodec", "mjpeg", //
-                                       "-vframes", "1", "-an", //
-                                       "-f", "rawvideo", //
-                                       "-s", flvWidth + "x" + flvHeight, //
-                                       jpg.getCanonicalPath() };
+                                       "-i", inputScreenFullFlv, "-i", 
wav.getCanonicalPath()
+                                       ), logs);
 
-                       logs.add(ProcessHelper.executeScript("previewFullFLV", 
cmdJpg));
+                       convertToJpg(r, mp4path, logs);
 
                        updateDuration(r);
-                       convertToMp4(r, logs);
                        r.setStatus(Recording.Status.PROCESSED);
 
                        logDao.delete(r);

Modified: 
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/RecordingDao.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/RecordingDao.java?rev=1773416&r1=1773415&r2=1773416&view=diff
==============================================================================
--- 
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/RecordingDao.java
 (original)
+++ 
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/RecordingDao.java
 Fri Dec  9 15:36:52 2016
@@ -18,7 +18,6 @@
  */
 package org.apache.openmeetings.db.dao.record;
 
-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.OpenmeetingsVariables.webAppRootKey;
@@ -275,9 +274,6 @@ public class RecordingDao {
        private long getSize(Recording r) {
                long size = 0;
 
-               if (r.exists(EXTENSION_FLV)) {
-                       size += r.getFile(EXTENSION_FLV).length();
-               }
                if (r.exists(EXTENSION_JPG)) {
                        size += r.getFile(EXTENSION_JPG).length();
                }

Modified: 
openmeetings/application/trunk/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java?rev=1773416&r1=1773415&r2=1773416&view=diff
==============================================================================
--- 
openmeetings/application/trunk/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java
 (original)
+++ 
openmeetings/application/trunk/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java
 Fri Dec  9 15:36:52 2016
@@ -553,8 +553,6 @@ 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_FLV), String.format("%s.%s", r.getHash(), EXTENSION_FLV));
-                                       fileMap.put(String.format("%s.%s.meta", 
name, EXTENSION_FLV), String.format("%s.%s.meta", r.getHash(), EXTENSION_FLV));
                                        fileMap.put(String.format("%s.%s", 
name, EXTENSION_JPG), String.format("%s.%s", r.getHash(), EXTENSION_JPG));
                                        fileMap.put(String.format("%s.%s.%s", 
name, EXTENSION_FLV, EXTENSION_MP4), String.format("%s.%s", r.getHash(), 
EXTENSION_MP4));
                                }

Modified: 
openmeetings/application/trunk/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java?rev=1773416&r1=1773415&r2=1773416&view=diff
==============================================================================
--- 
openmeetings/application/trunk/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java
 (original)
+++ 
openmeetings/application/trunk/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java
 Fri Dec  9 15:36:52 2016
@@ -323,9 +323,6 @@ public class ImportInitvalues {
                cfgDao.add("calendar.conference.rooms.default.size", "50", null,
                                "Default number of participants conference room 
created via calendar");
 
-               cfgDao.add("use.old.style.ffmpeg.map.option", "0", null,
-                               "specify a 1 if you would like to use old 
FFMPEG -map option with 0.0 instead of 0:0");
-
                // give exclusive audio key code
                cfgDao.add("exclusive.audio.keycode", "123", null,
                                "A hot key code for the 'give exclusive audio' 
functionality. Keycode 123 is F12");

Modified: openmeetings/application/trunk/openmeetings-server/src/site/site.xml
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-server/src/site/site.xml?rev=1773416&r1=1773415&r2=1773416&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-server/src/site/site.xml 
(original)
+++ openmeetings/application/trunk/openmeetings-server/src/site/site.xml Fri 
Dec  9 15:36:52 2016
@@ -112,7 +112,6 @@
                        </item>
                        <item name="Converters" href="#convert">
                                <item name="OpenOffice Converter" 
href="/OpenOfficeConverter.html" />
-                               <item name="FFMPEG Version Switch" 
href="/FFMPEGVersionSwitch.html" />
                        </item>
                        <item name="Clustering" href="#cluster">
                                <item name="Clustering" href="/Clustering.html" 
/>

Modified: 
openmeetings/application/trunk/openmeetings-server/src/site/xdoc/GeneralConfiguration.xml
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-server/src/site/xdoc/GeneralConfiguration.xml?rev=1773416&r1=1773415&r2=1773416&view=diff
==============================================================================
--- 
openmeetings/application/trunk/openmeetings-server/src/site/xdoc/GeneralConfiguration.xml
 (original)
+++ 
openmeetings/application/trunk/openmeetings-server/src/site/xdoc/GeneralConfiguration.xml
 Fri Dec  9 15:36:52 2016
@@ -109,15 +109,6 @@
                                        <td> 1.8.x </td>
                                </tr>
                                <tr>
-                                       <td> use.old.style.ffmpeg.map.option 
</td>
-                                       <td> 0 </td>
-                                       <td> If the system should "." (old 
ffmpeg) instead of ":"
-                                               (new ffmpeg) for the -map 
option in FFMPEG
-                                       </td>
-                                       <td> 1.9.x </td>
-
-                               </tr>
-                               <tr>
                                        <td> smtp_server </td>
                                        <td> localhost </td>
                                        <td> this is the smtp server to send 
messages </td>
@@ -311,4 +302,4 @@
 
        </body>
 
-</document>
\ No newline at end of file
+</document>

Modified: 
openmeetings/application/trunk/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/CleanupJob.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/CleanupJob.java?rev=1773416&r1=1773415&r2=1773416&view=diff
==============================================================================
--- 
openmeetings/application/trunk/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/CleanupJob.java
 (original)
+++ 
openmeetings/application/trunk/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/CleanupJob.java
 Fri Dec  9 15:36:52 2016
@@ -18,7 +18,6 @@
  */
 package org.apache.openmeetings.service.quartz.scheduler;
 
-import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_FLV;
 import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_MP4;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 
@@ -109,7 +108,6 @@ public class CleanupJob extends Abstract
                        if (days < 0) {
                                log.debug("cleanExpiredRecordings:: following 
recording will be deleted {}", rec);
                                rec.getFile(EXTENSION_MP4).delete();
-                               rec.getFile(EXTENSION_FLV).delete();
                                recordingDao.delete(rec);
                        }
                });

Modified: 
openmeetings/application/trunk/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java?rev=1773416&r1=1773415&r2=1773416&view=diff
==============================================================================
--- 
openmeetings/application/trunk/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java
 (original)
+++ 
openmeetings/application/trunk/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java
 Fri Dec  9 15:36:52 2016
@@ -67,7 +67,6 @@ public class OmFileHelper {
        public static final String EXTENSION_SWF = "swf";
        public static final String EXTENSION_PDF = "pdf";
        public static final String WB_VIDEO_FILE_PREFIX = "UPLOADFLV_";
-       public static final String FLV_MIME_TYPE = "video/" + EXTENSION_FLV;
        public static final String MP4_MIME_TYPE = "video/" + EXTENSION_MP4;
        public static final String JPG_MIME_TYPE = "image/jpeg";
        public static final String PNG_MIME_TYPE = "image/png";

Modified: 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java?rev=1773416&r1=1773415&r2=1773416&view=diff
==============================================================================
--- 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java
 (original)
+++ 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java
 Fri Dec  9 15:36:52 2016
@@ -18,7 +18,6 @@
  */
 package org.apache.openmeetings.web.user.record;
 
-import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_FLV;
 import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_MP4;
 import static org.apache.openmeetings.util.OmFileHelper.getRecordingMetaData;
 import static org.apache.openmeetings.web.app.Application.getBean;
@@ -185,24 +184,6 @@ public class VideoInfo extends Panel {
                                download.setFileName(f.getName());
                                download.setResourceStream(new 
FileResourceStream(f));
                                download.initiate(target);
-                       }
-               });
-               //flv
-               list.add(new MenuItem(getString("883"), 
JQueryIcon.ARROWTHICKSTOP_1_S) {
-                       private static final long serialVersionUID = 1L;
-                       
-                       @Override
-                       public boolean isEnabled() {
-                               Recording r = VideoInfo.this.rm.getObject();
-                               return r != null && r.exists(EXTENSION_FLV);
-                       }
-                       
-                       @Override
-                       public void onClick(AjaxRequestTarget target) {
-                               File f = rm.getObject().getFile(EXTENSION_FLV);
-                               download.setFileName(f.getName());
-                               download.setResourceStream(new 
FileResourceStream(f));
-                               download.initiate(target);
                        }
                });
                return list;


Reply via email to