Author: solomax
Date: Sat Jan 4 07:04:19 2014
New Revision: 1555326
URL: http://svn.apache.org/r1555326
Log:
[OPENMEETINGS-337] Audio-only recording creation is improved;
Logs are improved
Modified:
openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/converter/FlvInterviewConverter.java
Modified:
openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/converter/FlvInterviewConverter.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/converter/FlvInterviewConverter.java?rev=1555326&r1=1555325&r2=1555326&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/converter/FlvInterviewConverter.java
(original)
+++
openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/converter/FlvInterviewConverter.java
Sat Jan 4 07:04:19 2014
@@ -173,11 +173,11 @@ public class FlvInterviewConverter exten
final int flvWidth = 640;
final int flvHeight = 260;
+ final int frameRate = 25;
// Merge Audio with Video / Calculate resulting FLV
- int frameRate = 25;
-
String[] pods = new String[2];
+ boolean found = false;
for (FlvRecordingMetaData meta : metaDataList) {
File flv = new File(streamFolder,
meta.getStreamName() + ".flv");
@@ -190,6 +190,7 @@ public class FlvInterviewConverter exten
*/
String[] args = new String[]
{getPathToFFMPEG()
, "-i", path
+ , "-an" // only input
files with video will be treated as video sources
, "-v", "error"
, "-f", "null"
, "file.null"};
@@ -198,9 +199,10 @@ public class FlvInterviewConverter exten
if ("".equals(r.getError())) {
pods[pod - 1] = path;
}
+ found = true;
}
}
- if (pods[0] == null && pods[1] == null) {
+ if (!found) {
ConverterProcessResult r = new
ConverterProcessResult();
r.setProcess("CheckFlvFilesExists");
r.setError("No valid pods found");
@@ -220,41 +222,34 @@ public class FlvInterviewConverter exten
*/
if (pods[i] == null) {
shortest = true;
- args.add("-loop");
- args.add("1");
- args.add("-i");
-
args.add(defaultInterviewImageFile.getCanonicalPath());
+ args.add("-loop"); args.add("1");
+ args.add("-i");
args.add(defaultInterviewImageFile.getCanonicalPath());
} else {
- args.add("-i");
- args.add(pods[i]);
+ args.add("-i"); args.add(pods[i]);
}
}
+ 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",
flvWidth, flvHeight));
if (shortest) {
args.add("-shortest");
}
+ args.add("-vcodec"); args.add("flv");
+ args.add("-r"); args.add("" + frameRate);
+ args.add("-qmax"); args.add("1");
+ args.add("-qmin"); args.add("1");
args.add("-y");
- String inputScreenFullFlv = new File(streamFolder
- , "COMPLETE_INTERVIEW_" +
flvRecording.getFlvRecordingId() + ".flv").getCanonicalPath();
- args.add(inputScreenFullFlv);
+ String hashFileFullNameFlv = "flvRecording_" +
flvRecording.getFlvRecordingId() + ".flv";
+ String outputFullFlv = new File(streamFolderGeneral,
hashFileFullNameFlv).getCanonicalPath();
+ args.add(outputFullFlv);
// TODO additional flag to 'quiet' output should be
added
returnLog.add(ProcessHelper.executeScript("generateFullBySequenceFLV",
args.toArray(new String[]{})));
flvRecording.setFlvWidth(flvWidth);
flvRecording.setFlvHeight(flvHeight);
- String hashFileFullNameFlv = "flvRecording_" +
flvRecording.getFlvRecordingId() + ".flv";
- String outputFullFlv = new File(streamFolderGeneral,
hashFileFullNameFlv).getCanonicalPath();
- String[] argv_fullFLV = new String[] {
getPathToFFMPEG(), //
- "-i", inputScreenFullFlv, "-i",
outputFullWav, "-ar", "22050", //
- "-ab", "32k", //
- "-s", flvWidth + "x" + flvHeight, //
- "-vcodec", "flv", //
- "-r", "" + frameRate, "-qmax", "1",
"-qmin", "1", "-y", outputFullFlv};
-
-
returnLog.add(ProcessHelper.executeScript("generateFullFLV", argv_fullFLV));
-
flvRecording.setFileHash(hashFileFullNameFlv);
// Extract first Image for preview purpose
@@ -276,15 +271,6 @@ public class FlvInterviewConverter exten
"-s", flvWidth + "x" + flvHeight, //
outPutJpeg };
- log.debug("START previewFullFLV ################# ");
- log.debug(argv_previewFLV.toString());
- String kString = "";
- for (int i = 0; i < argv_previewFLV.length; i++) {
- kString += argv_previewFLV[i] + " ";
- }
- log.debug(kString);
- log.debug("END previewFullFLV ################# ");
-
returnLog.add(ProcessHelper.executeScript("generateFullFLV", argv_previewFLV));
String alternateDownloadName = "flvRecording_" +
flvRecording.getFlvRecordingId() + ".avi";
@@ -294,15 +280,6 @@ public class FlvInterviewConverter exten
String[] argv_alternateDownload = new String[] {
getPathToFFMPEG(), "-i", outputFullFlv,
alternateDownloadFullName };
- log.debug("START alternateDownLoad ################# ");
- log.debug(argv_previewFLV.toString());
- String sString = "";
- for (int i = 0; i < argv_alternateDownload.length; i++)
{
- sString += argv_alternateDownload[i] + " ";
- }
- log.debug(sString);
- log.debug("END alternateDownLoad ################# ");
-
returnLog.add(ProcessHelper.executeScript("alternateDownload",
argv_alternateDownload));
flvRecording.setAlternateDownload(alternateDownloadName);