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;