You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2016/12/09 15:36:52 UTC

svn commit: r1773416 - in /openmeetings/application: branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/ branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/ branches/3.1.x/openmeetings-...

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;