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 2015/01/28 18:50:11 UTC
svn commit: r1655407 - in /openmeetings:
branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/record/
branches/3.0.x/src/db/java/org/apache/openmeetings/db/entity/record/
branches/3.0.x/src/main/java/org/apache/openmeetings/converter/
branches/3.0...
Author: solomax
Date: Wed Jan 28 17:50:11 2015
New Revision: 1655407
URL: http://svn.apache.org/r1655407
Log:
[OPENMEETINGS-998] audio/video sync is improved
Modified:
openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/record/FlvRecordingMetaDataDao.java
openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/entity/record/FlvRecordingMetaData.java
openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/entity/record/FlvRecordingMetaDelta.java
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/converter/BaseConverter.java
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/converter/FlvInterviewConverter.java
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/converter/FlvRecorderConverter.java
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/data/flvrecord/listener/async/StreamAudioWriter.java
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/FlvInterviewConverter.java
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/FlvRecorderConverter.java
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/flvrecord/listener/async/StreamAudioWriter.java
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/FlvRecordingMetaDataDao.java
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/FlvRecordingMetaData.java
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/FlvRecordingMetaDelta.java
Modified: openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/record/FlvRecordingMetaDataDao.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/record/FlvRecordingMetaDataDao.java?rev=1655407&r1=1655406&r2=1655407&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/record/FlvRecordingMetaDataDao.java (original)
+++ openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/record/FlvRecordingMetaDataDao.java Wed Jan 28 17:50:11 2015
@@ -62,15 +62,7 @@ public class FlvRecordingMetaDataDao {
}
public List<FlvRecordingMetaData> getByRecording(Long recordingId) {
- try {
- TypedQuery<FlvRecordingMetaData> query = em.createNamedQuery("getMetaByRecording", FlvRecordingMetaData.class);
- query.setParameter("recordingId", recordingId);
-
- return query.getResultList();
- } catch (Exception ex2) {
- log.error("[getByRecording]: ", ex2);
- }
- return null;
+ return em.createNamedQuery("getMetaByRecording", FlvRecordingMetaData.class).setParameter("recordingId", recordingId).getResultList();
}
public List<FlvRecordingMetaData> getAudioMetaDataByRecording(Long flvRecordingId) {
@@ -116,8 +108,8 @@ public class FlvRecordingMetaDataDao {
flvRecordingMetaData.setRecordStart(recordStart);
- flvRecordingMetaData.setIsAudioOnly(isAudioOnly);
- flvRecordingMetaData.setIsVideoOnly(isVideoOnly);
+ flvRecordingMetaData.setAudioOnly(isAudioOnly);
+ flvRecordingMetaData.setVideoOnly(isVideoOnly);
flvRecordingMetaData.setScreenData(isScreenData);
flvRecordingMetaData.setStreamName(streamName);
Modified: openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/entity/record/FlvRecordingMetaData.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/entity/record/FlvRecordingMetaData.java?rev=1655407&r1=1655406&r2=1655407&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/entity/record/FlvRecordingMetaData.java (original)
+++ openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/entity/record/FlvRecordingMetaData.java Wed Jan 28 17:50:11 2015
@@ -53,7 +53,7 @@ import org.simpleframework.xml.Root;
@NamedQuery(name = "getMetaById", query = "SELECT c FROM FlvRecordingMetaData c WHERE c.flvRecordingMetaDataId = :id")
, @NamedQuery(name = "getMetaByRecording", query = "SELECT c FROM FlvRecordingMetaData c WHERE c.flvRecording.flvRecordingId = :recordingId AND c.deleted = false")
, @NamedQuery(name = "getAudioMetaByRecording", query = "SELECT c FROM FlvRecordingMetaData c WHERE c.flvRecording.flvRecordingId = :recordingId "
- + "AND c.screenData = false AND c.streamStatus <> :none AND (c.isAudioOnly = true OR (c.isAudioOnly = false AND c.isVideoOnly = false))")
+ + "AND c.screenData = false AND c.streamStatus <> :none AND (c.audioOnly = true OR (c.audioOnly = false AND c.videoOnly = false))")
, @NamedQuery(name = "getScreenMetaByRecording", query = "SELECT c FROM FlvRecordingMetaData c WHERE c.flvRecording.flvRecordingId = :recordingId"
+ " AND c.screenData = true")
})
@@ -71,7 +71,7 @@ public class FlvRecordingMetaData implem
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
- @Element(data = true, required = false)
+ @Element(name = "flvRecordingMetaDataId", data = true, required = false)
private long flvRecordingMetaDataId;
@ManyToOne(fetch = FetchType.EAGER)
@@ -96,15 +96,15 @@ public class FlvRecordingMetaData implem
private String freeTextUserName;
@Column(name = "is_audio_only")
- @Element(data = true)
- private Boolean isAudioOnly;
+ @Element(name = "isAudioOnly", data = true)
+ private boolean audioOnly;
@Column(name = "is_video_only")
- @Element(data = true)
- private Boolean isVideoOnly;
+ @Element(name = "isVideoOnly", data = true)
+ private boolean videoOnly;
@Column(name = "is_screen_data")
- @Element(data = true, name = "isScreenData")
+ @Element(name = "isScreenData", data = true)
private boolean screenData;
@Column(name = "inserted_by")
@@ -131,8 +131,8 @@ public class FlvRecordingMetaData implem
private String fullWavAudioData;
@Column(name = "audio_is_valid")
- @Element(data = true, required = false)
- private Boolean audioIsValid;
+ @Element(name="audioIsValid", data = true, required = false)
+ private boolean audioValid;
@Column(name = "interiew_pod_id")
@Element(data = true, required = false)
@@ -186,20 +186,20 @@ public class FlvRecordingMetaData implem
this.freeTextUserName = freeTextUserName;
}
- public Boolean getIsAudioOnly() {
- return isAudioOnly;
+ public boolean isAudioOnly() {
+ return audioOnly;
}
- public void setIsAudioOnly(Boolean isAudioOnly) {
- this.isAudioOnly = isAudioOnly;
+ public void setAudioOnly(boolean audioOnly) {
+ this.audioOnly = audioOnly;
}
- public Boolean getIsVideoOnly() {
- return isVideoOnly;
+ public boolean isVideoOnly() {
+ return videoOnly;
}
- public void setIsVideoOnly(Boolean isVideoOnly) {
- this.isVideoOnly = isVideoOnly;
+ public void setVideoOnly(boolean videoOnly) {
+ this.videoOnly = videoOnly;
}
public Long getInsertedBy() {
@@ -266,12 +266,12 @@ public class FlvRecordingMetaData implem
this.fullWavAudioData = fullWavAudioData;
}
- public Boolean getAudioIsValid() {
- return audioIsValid;
+ public boolean isAudioValid() {
+ return audioValid;
}
- public void setAudioIsValid(Boolean audioIsValid) {
- this.audioIsValid = audioIsValid;
+ public void setAudioValid(boolean audioValid) {
+ this.audioValid = audioValid;
}
public Integer getInteriewPodId() {
Modified: openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/entity/record/FlvRecordingMetaDelta.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/entity/record/FlvRecordingMetaDelta.java?rev=1655407&r1=1655406&r2=1655407&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/entity/record/FlvRecordingMetaDelta.java (original)
+++ openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/entity/record/FlvRecordingMetaDelta.java Wed Jan 28 17:50:11 2015
@@ -34,7 +34,7 @@ import javax.persistence.Table;
@Entity
@Table(name = "flvrecording_meta_delta")
public class FlvRecordingMetaDelta implements Serializable {
- private static final long serialVersionUID = -733483974696234137L;
+ private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="id")
@@ -83,10 +83,10 @@ public class FlvRecordingMetaDelta imple
private Long receivedAudioDataLength;
@Column(name="is_end_padding")
- private Boolean isEndPadding;
+ private boolean endPadding;
@Column(name="is_start_padding")
- private Boolean isStartPadding;
+ private boolean startPadding;
@Column(name="debug_status")
private String debugStatus;
@@ -175,18 +175,18 @@ public class FlvRecordingMetaDelta imple
this.currentTime = currentTime;
}
- public Boolean getIsEndPadding() {
- return isEndPadding;
+ public boolean isEndPadding() {
+ return endPadding;
}
- public void setIsEndPadding(Boolean isEndPadding) {
- this.isEndPadding = isEndPadding;
+ public void setEndPadding(boolean endPadding) {
+ this.endPadding = endPadding;
}
- public Boolean getIsStartPadding() {
- return isStartPadding;
+ public boolean isStartPadding() {
+ return startPadding;
}
- public void setIsStartPadding(Boolean isStartPadding) {
- this.isStartPadding = isStartPadding;
+ public void setStartPadding(boolean startPadding) {
+ this.startPadding = startPadding;
}
public String getDebugStatus() {
Modified: openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/converter/BaseConverter.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/converter/BaseConverter.java?rev=1655407&r1=1655406&r2=1655407&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/converter/BaseConverter.java (original)
+++ openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/converter/BaseConverter.java Wed Jan 28 17:50:11 2015
@@ -91,6 +91,14 @@ public abstract class BaseConverter {
return from.getTime() - to.getTime();
}
+ protected double diffSeconds(Date from, Date to) {
+ return diffSeconds(diff(from, to));
+ }
+
+ protected double diffSeconds(long val) {
+ return ((double)val) / 1000;
+ }
+
protected String formatMillis(long millis) {
long hours = TimeUnit.MILLISECONDS.toHours(millis);
millis -= TimeUnit.HOURS.toMillis(hours);
@@ -133,7 +141,7 @@ public abstract class BaseConverter {
, metaDataDao.getAudioMetaDataByRecording(flvRecording.getFlvRecordingId()));
}
- private String[] addSoxPad(List<ConverterProcessResult> returnLog, String job, double length, double position, String inFile, String outFile) {
+ private String[] addSoxPad(List<ConverterProcessResult> returnLog, String job, double length, double position, File inFile, File outFile) throws IOException {
//FIXME need to check this
if (length < 0 || position < 0) {
log.debug("::addSoxPad " + job + " Invalid parameters: "
@@ -142,7 +150,7 @@ public abstract class BaseConverter {
length = length < 0 ? 0 : length;
position = position < 0 ? 0 : position;
- String[] argv = new String[] { getPathToSoX(), inFile, outFile, "pad", "" + length, "" + position };
+ String[] argv = new String[] { getPathToSoX(), inFile.getCanonicalPath(), outFile.getCanonicalPath(), "pad", "" + length, "" + position };
returnLog.add(ProcessHelper.executeScript(job, argv));
return argv;
@@ -239,32 +247,27 @@ public abstract class BaseConverter {
File inputFlvFile = new File(streamFolder, metaData.getStreamName() + ".flv");
- String hashFileName = metaData.getStreamName() + "_WAVE.wav";
- String outputWav = new File(streamFolder, hashFileName).getCanonicalPath(); //FIXME
+ File outputWav = new File(streamFolder, metaData.getStreamName() + "_WAVE.wav");
- metaData.setWavAudioData(hashFileName);
+ metaData.setWavAudioData(outputWav.getName());
log.debug("FLV File Name: {} Length: {} ", inputFlvFile.getName(), inputFlvFile.length());
- metaData.setAudioIsValid(false);
if (inputFlvFile.exists()) {
- String[] argv = new String[] {getPathToFFMPEG(), "-y", "-i", inputFlvFile.getCanonicalPath()
- , "-af", "aresample=32k", outputWav};
+ String[] argv = new String[] {
+ getPathToFFMPEG(), "-y"
+ , "-i", inputFlvFile.getCanonicalPath()
+ , "-af", "aresample=min_comp=0.001:min_hard_comp=0.100000"
+ , outputWav.getCanonicalPath()};
returnLog.add(ProcessHelper.executeScript("stripAudioFromFLVs", argv));
-
- // check if the resulting Audio is valid
- File output_wav = new File(outputWav);
-
- if (output_wav.exists() && output_wav.length() != 0) {
- metaData.setAudioIsValid(true);
- }
}
- if (metaData.getAudioIsValid()) {
+ if (outputWav.exists() && outputWav.length() != 0) {
+ metaData.setAudioValid(true);
// Strip Wave to Full Length
- String outputGapFullWav = outputWav;
+ File outputGapFullWav = outputWav;
// Fix Start/End in Audio
List<FlvRecordingMetaDelta> flvRecordingMetaDeltas = metaDeltaDao.getFlvRecordingMetaDeltaByMetaId(metaId);
@@ -272,22 +275,21 @@ public abstract class BaseConverter {
int counter = 0;
for (FlvRecordingMetaDelta metaDelta : flvRecordingMetaDeltas) {
- String inputFile = outputGapFullWav;
+ File inputFile = outputGapFullWav;
// Strip Wave to Full Length
String hashFileGapsFullName = metaData.getStreamName() + "_GAP_FULL_WAVE_" + counter + ".wav";
- outputGapFullWav = new File(streamFolder, hashFileGapsFullName).getCanonicalPath();
+ outputGapFullWav = new File(streamFolder, hashFileGapsFullName);
metaDelta.setWaveOutPutName(hashFileGapsFullName);
String[] argv_sox = null;
if (metaDelta.getDeltaTime() != null) {
- if (metaDelta.getIsStartPadding() != null && metaDelta.getIsStartPadding()) {
- double gapSeconds = ((double)metaDelta.getDeltaTime()) / 1000;
+ double gapSeconds = diffSeconds(metaDelta.getDeltaTime());
+ if (metaDelta.isStartPadding()) {
argv_sox = addSoxPad(returnLog, "fillGap", gapSeconds, 0, inputFile, outputGapFullWav);
- } else if (metaDelta.getIsEndPadding() != null && metaDelta.getIsEndPadding()) {
- double gapSeconds = ((double)metaDelta.getDeltaTime()) / 1000;
+ } else if (metaDelta.isEndPadding()) {
argv_sox = addSoxPad(returnLog, "fillGap", 0, gapSeconds, inputFile, outputGapFullWav);
}
}
@@ -304,33 +306,28 @@ public abstract class BaseConverter {
// Strip Wave to Full Length
String hashFileFullName = metaData.getStreamName() + "_FULL_WAVE.wav";
- String outputFullWav = new File(streamFolder, hashFileFullName).getCanonicalPath();
+ File outputFullWav = new File(streamFolder, hashFileFullName);
// Calculate delta at beginning
- long deltaTimeStartMilliSeconds = metaData.getRecordStart().getTime() - flvRecording.getRecordStart().getTime();
-
- double length = ((double)deltaTimeStartMilliSeconds) / 1000;
+ double startPad = diffSeconds(metaData.getRecordStart(), flvRecording.getRecordStart());
// Calculate delta at ending
- long deltaTimeEndMilliSeconds = flvRecording.getRecordEnd().getTime() - metaData.getRecordEnd().getTime();
-
- double endPadding = ((double)deltaTimeEndMilliSeconds) / 1000;
+ double endPad = diffSeconds(flvRecording.getRecordEnd(), metaData.getRecordEnd());
- addSoxPad(returnLog, "addStartEndToAudio", length, endPadding, outputGapFullWav, outputFullWav);
+ addSoxPad(returnLog, "addStartEndToAudio", startPad, endPad, outputGapFullWav, outputFullWav);
// Fix for Audio Length - Invalid Audio Length in Recorded Files
// Audio must match 100% the Video
log.debug("############################################");
log.debug("Trim Audio to Full Length -- Start");
- File aFile = new File(outputFullWav);
- if (!aFile.exists()) {
+ if (!outputFullWav.exists()) {
throw new Exception("Audio File does not exist , could not extract the Audio correctly");
}
metaData.setFullWavAudioData(hashFileFullName);
// Finally add it to the row!
- listOfFullWaveFiles.add(outputFullWav);
+ listOfFullWaveFiles.add(outputFullWav.getCanonicalPath());
}
metaDataDao.update(metaData);
Modified: openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/converter/FlvInterviewConverter.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/converter/FlvInterviewConverter.java?rev=1655407&r1=1655406&r2=1655407&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/converter/FlvInterviewConverter.java (original)
+++ openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/converter/FlvInterviewConverter.java Wed Jan 28 17:50:11 2015
@@ -134,10 +134,9 @@ public class FlvInterviewConverter exten
File outputWav = new File(streamFolderGeneral, "one_second.wav");
// Calculate delta at beginning
- Long deltaTimeMilliSeconds = flvRecording.getRecordEnd().getTime() - flvRecording.getRecordStart().getTime();
- Float deltaPadding = (Float.parseFloat(deltaTimeMilliSeconds.toString()) / 1000) - 1;
+ double deltaPadding = diffSeconds(flvRecording.getRecordEnd(), flvRecording.getRecordStart());
- String[] argv_full_sox = new String[] { getPathToSoX(), outputWav.getCanonicalPath(), outputFullWav, "pad", "0", deltaPadding.toString() };
+ String[] argv_full_sox = new String[] { getPathToSoX(), outputWav.getCanonicalPath(), outputFullWav, "pad", "0", "" + deltaPadding };
returnLog.add(ProcessHelper.executeScript("generateSampleAudio", argv_full_sox));
}
Modified: openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/converter/FlvRecorderConverter.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/converter/FlvRecorderConverter.java?rev=1655407&r1=1655406&r2=1655407&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/converter/FlvRecorderConverter.java (original)
+++ openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/converter/FlvRecorderConverter.java Wed Jan 28 17:50:11 2015
@@ -23,7 +23,6 @@ import static org.apache.openmeetings.ut
import java.io.File;
import java.util.ArrayList;
-import java.util.LinkedList;
import java.util.List;
import org.apache.openmeetings.db.dao.record.FlvRecordingDao;
@@ -39,7 +38,6 @@ import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
public class FlvRecorderConverter extends BaseConverter implements IRecordingConverter {
-
private static final Logger log = Red5LoggerFactory.getLogger(FlvRecorderConverter.class, webAppRootKey);
// Spring loaded Beans
@@ -59,11 +57,12 @@ public class FlvRecorderConverter extend
FFMPEG_MAP_PARAM = ".";
}
+ String finalNamePrefix = "flvRecording_" + flvRecordingId;
flvRecording = recordingDao.get(flvRecordingId);
log.debug("flvRecording " + flvRecording.getFlvRecordingId());
List<ConverterProcessResult> returnLog = new ArrayList<ConverterProcessResult>();
- List<String> listOfFullWaveFiles = new LinkedList<String>();
+ List<String> listOfFullWaveFiles = new ArrayList<String>();
File streamFolder = getStreamFolder(flvRecording);
FlvRecordingMetaData screenMetaData = metaDataDao.getScreenMetaDataByRecording(flvRecording.getFlvRecordingId());
@@ -81,8 +80,6 @@ public class FlvRecorderConverter extend
stripAudioFirstPass(flvRecording, returnLog, listOfFullWaveFiles, streamFolder);
// Merge Wave to Full Length
- String streamFolderGeneralName = getStreamsHibernateDir().getCanonicalPath() + File.separator; // FIXME
-
String hashFileFullName = screenMetaData.getStreamName() + "_FINAL_WAVE.wav";
String outputFullWav = new File(streamFolder, hashFileFullName).getCanonicalPath();
@@ -94,13 +91,12 @@ public class FlvRecorderConverter extend
returnLog.add(ProcessHelper.executeScript("mergeAudioToWaves", argv_full_sox));
} else {
// create default Audio to merge it. strip to content length
- String outputWav = streamFolderGeneralName + "one_second.wav";
+ String outputWav = new File(getStreamsHibernateDir(), "one_second.wav").getCanonicalPath();
// Calculate delta at beginning
- Long deltaTimeMilliSeconds = flvRecording.getRecordEnd().getTime() - flvRecording.getRecordStart().getTime();
- Float deltaPadding = (Float.parseFloat(deltaTimeMilliSeconds.toString()) / 1000) - 1;
+ double deltaPadding = diffSeconds(flvRecording.getRecordEnd(), flvRecording.getRecordStart());
- String[] argv_full_sox = new String[] { getPathToSoX(), outputWav, outputFullWav, "pad", "0", deltaPadding.toString() };
+ String[] argv_full_sox = new String[] { getPathToSoX(), outputWav, outputFullWav, "pad", "0", "" + deltaPadding };
returnLog.add(ProcessHelper.executeScript("generateSampleAudio", argv_full_sox));
}
@@ -109,11 +105,9 @@ public class FlvRecorderConverter extend
// Merge Audio with Video / Calculate resulting FLV
- String inputScreenFullFlv = new File(streamFolder, screenMetaData.getStreamName() + ".flv")
- .getCanonicalPath();
+ String inputScreenFullFlv = new File(streamFolder, screenMetaData.getStreamName() + ".flv").getCanonicalPath();
- String hashFileFullNameFlv = "flvRecording_" + flvRecording.getFlvRecordingId() + ".flv";
- String outputFullFlv = streamFolderGeneralName + hashFileFullNameFlv;
+ File outputFullFlv = new File(getStreamsHibernateDir(), finalNamePrefix + ".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
@@ -136,7 +130,7 @@ public class FlvRecorderConverter extend
flvRecording.setFlvHeight(flvHeight);
String[] argv_fullFLV = new String[] { getPathToFFMPEG(), "-y",//
- "-itsoffset", formatMillis(diff(screenMetaData.getRecordStart(), screenMetaData.getFlvRecording().getRecordStart())),
+ "-itsoffset", formatMillis(diff(screenMetaData.getRecordStart(), flvRecording.getRecordStart())),
"-i", inputScreenFullFlv, "-i", outputFullWav, "-ar", "22050", //
"-acodec", "libmp3lame", //
"-ab", "32k", //
@@ -144,41 +138,39 @@ public class FlvRecorderConverter extend
"-vcodec", "flashsv", //
"-map", "0" + FFMPEG_MAP_PARAM + "0", //
"-map", "1" + FFMPEG_MAP_PARAM + "0", //
- outputFullFlv };
+ outputFullFlv.getCanonicalPath() };
returnLog.add(ProcessHelper.executeScript("generateFullFLV", argv_fullFLV));
- flvRecording.setFileHash(hashFileFullNameFlv);
+ flvRecording.setFileHash(outputFullFlv.getName());
// Extract first Image for preview purpose
// ffmpeg -i movie.flv -vcodec mjpeg -vframes 1 -an -f rawvideo -s
// 320x240 movie.jpg
- String hashFileFullNameJPEG = "flvRecording_" + flvRecording.getFlvRecordingId() + ".jpg";
- String outPutJpeg = streamFolderGeneralName + hashFileFullNameJPEG;
+ File outPutJpeg = new File(getStreamsHibernateDir(), finalNamePrefix + ".jpg");
- flvRecording.setPreviewImage(hashFileFullNameJPEG);
+ flvRecording.setPreviewImage(outPutJpeg.getName());
String[] argv_previewFLV = new String[] { //
getPathToFFMPEG(), "-y",//
- "-i", outputFullFlv, //
+ "-i", outputFullFlv.getCanonicalPath(), //
"-vcodec", "mjpeg", //
"-vframes", "1", "-an", //
"-f", "rawvideo", //
"-s", flvWidth + "x" + flvHeight, //
- outPutJpeg };
+ outPutJpeg.getCanonicalPath() };
returnLog.add(ProcessHelper.executeScript("previewFullFLV", argv_previewFLV));
- String alternateDownloadName = "flvRecording_" + flvRecording.getFlvRecordingId() + ".avi";
- String alternateDownloadFullName = streamFolderGeneralName + alternateDownloadName;
+ File alternateDownload = new File(getStreamsHibernateDir(), finalNamePrefix + ".avi");
- String[] argv_alternateDownload = new String[] { getPathToFFMPEG(), "-y", "-i", outputFullFlv, "-vcodec",
- "copy", alternateDownloadFullName };
+ String[] argv_alternateDownload = new String[] { getPathToFFMPEG(), "-y", "-i", outputFullFlv.getCanonicalPath(), "-vcodec",
+ "copy", alternateDownload.getCanonicalPath() };
returnLog.add(ProcessHelper.executeScript("alternateDownload", argv_alternateDownload));
- flvRecording.setAlternateDownload(alternateDownloadName);
+ flvRecording.setAlternateDownload(alternateDownload.getName());
updateDuration(flvRecording);
convertToMp4(flvRecording, returnLog);
Modified: openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/data/flvrecord/listener/async/StreamAudioWriter.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/data/flvrecord/listener/async/StreamAudioWriter.java?rev=1655407&r1=1655406&r2=1655407&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/data/flvrecord/listener/async/StreamAudioWriter.java (original)
+++ openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/data/flvrecord/listener/async/StreamAudioWriter.java Wed Jan 28 17:50:11 2015
@@ -98,8 +98,8 @@ public class StreamAudioWriter extends B
metaDelta.setFlvRecordingMetaDataId(metaDataId);
metaDelta.setTimeStamp(0);
metaDelta.setDebugStatus("INIT AUDIO");
- metaDelta.setIsStartPadding(true);
- metaDelta.setIsEndPadding(false);
+ metaDelta.setStartPadding(true);
+ metaDelta.setEndPadding(false);
metaDelta.setDataLengthPacket(data.limit());
metaDelta.setReceivedAudioDataLength(byteCount);
metaDelta.setStartTime(startedSessionTimeDate);
@@ -145,9 +145,9 @@ public class StreamAudioWriter extends B
metaDelta.setFlvRecordingMetaDataId(metaDataId);
metaDelta.setTimeStamp(timeStamp);
metaDelta.setDebugStatus("RUN AUDIO");
- metaDelta.setIsStartPadding(false);
+ metaDelta.setStartPadding(false);
metaDelta.setLastTimeStamp(preLastTimeStamp);
- metaDelta.setIsEndPadding(false);
+ metaDelta.setEndPadding(false);
metaDelta.setDataLengthPacket(data.limit());
metaDelta.setReceivedAudioDataLength(byteCount);
metaDelta.setStartTime(startedSessionTimeDate);
@@ -213,8 +213,8 @@ public class StreamAudioWriter extends B
metaDelta.setFlvRecordingMetaDataId(metaDataId);
metaDelta.setTimeStamp(lastTimeStamp);
metaDelta.setDebugStatus("END AUDIO");
- metaDelta.setIsStartPadding(false);
- metaDelta.setIsEndPadding(true);
+ metaDelta.setStartPadding(false);
+ metaDelta.setEndPadding(true);
metaDelta.setDataLengthPacket(null);
metaDelta.setReceivedAudioDataLength(byteCount);
metaDelta.setStartTime(startedSessionTimeDate);
Modified: openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java?rev=1655407&r1=1655406&r2=1655407&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java Wed Jan 28 17:50:11 2015
@@ -86,11 +86,19 @@ public abstract class BaseConverter {
protected File getStreamFolder(FlvRecording flvRecording) {
return getStreamsSubDir(flvRecording.getRoomId());
}
-
+
protected long diff(Date from, Date to) {
return from.getTime() - to.getTime();
}
+ protected double diffSeconds(Date from, Date to) {
+ return diffSeconds(diff(from, to));
+ }
+
+ protected double diffSeconds(long val) {
+ return ((double)val) / 1000;
+ }
+
protected String formatMillis(long millis) {
long hours = TimeUnit.MILLISECONDS.toHours(millis);
millis -= TimeUnit.HOURS.toMillis(hours);
@@ -133,7 +141,7 @@ public abstract class BaseConverter {
, metaDataDao.getAudioMetaDataByRecording(flvRecording.getId()));
}
- private String[] addSoxPad(List<ConverterProcessResult> returnLog, String job, double length, double position, String inFile, String outFile) {
+ private String[] addSoxPad(List<ConverterProcessResult> returnLog, String job, double length, double position, File inFile, File outFile) throws IOException {
//FIXME need to check this
if (length < 0 || position < 0) {
log.debug("::addSoxPad " + job + " Invalid parameters: "
@@ -142,7 +150,7 @@ public abstract class BaseConverter {
length = length < 0 ? 0 : length;
position = position < 0 ? 0 : position;
- String[] argv = new String[] { getPathToSoX(), inFile, outFile, "pad", "" + length, "" + position };
+ String[] argv = new String[] { getPathToSoX(), inFile.getCanonicalPath(), outFile.getCanonicalPath(), "pad", "" + length, "" + position };
returnLog.add(ProcessHelper.executeScript(job, argv));
return argv;
@@ -239,32 +247,27 @@ public abstract class BaseConverter {
File inputFlvFile = new File(streamFolder, metaData.getStreamName() + ".flv");
- String hashFileName = metaData.getStreamName() + "_WAVE.wav";
- String outputWav = new File(streamFolder, hashFileName).getCanonicalPath(); //FIXME
+ File outputWav = new File(streamFolder, metaData.getStreamName() + "_WAVE.wav");
- metaData.setWavAudioData(hashFileName);
+ metaData.setWavAudioData(outputWav.getName());
log.debug("FLV File Name: {} Length: {} ", inputFlvFile.getName(), inputFlvFile.length());
- metaData.setAudioIsValid(false);
if (inputFlvFile.exists()) {
- String[] argv = new String[] {getPathToFFMPEG(), "-y", "-i", inputFlvFile.getCanonicalPath()
- , "-af", "aresample=32k", outputWav};
+ String[] argv = new String[] {
+ getPathToFFMPEG(), "-y"
+ , "-i", inputFlvFile.getCanonicalPath()
+ , "-af", "aresample=min_comp=0.001:min_hard_comp=0.100000"
+ , outputWav.getCanonicalPath()};
returnLog.add(ProcessHelper.executeScript("stripAudioFromFLVs", argv));
-
- // check if the resulting Audio is valid
- File output_wav = new File(outputWav);
-
- if (output_wav.exists() && output_wav.length() != 0) {
- metaData.setAudioIsValid(true);
- }
}
- if (metaData.getAudioIsValid()) {
+ if (outputWav.exists() && outputWav.length() != 0) {
+ metaData.setAudioValid(true);
// Strip Wave to Full Length
- String outputGapFullWav = outputWav;
+ File outputGapFullWav = outputWav;
// Fix Start/End in Audio
List<FlvRecordingMetaDelta> flvRecordingMetaDeltas = metaDeltaDao.getFlvRecordingMetaDeltaByMetaId(metaId);
@@ -272,22 +275,21 @@ public abstract class BaseConverter {
int counter = 0;
for (FlvRecordingMetaDelta metaDelta : flvRecordingMetaDeltas) {
- String inputFile = outputGapFullWav;
+ File inputFile = outputGapFullWav;
// Strip Wave to Full Length
String hashFileGapsFullName = metaData.getStreamName() + "_GAP_FULL_WAVE_" + counter + ".wav";
- outputGapFullWav = new File(streamFolder, hashFileGapsFullName).getCanonicalPath();
+ outputGapFullWav = new File(streamFolder, hashFileGapsFullName);
metaDelta.setWaveOutPutName(hashFileGapsFullName);
String[] argv_sox = null;
if (metaDelta.getDeltaTime() != null) {
- if (metaDelta.getIsStartPadding() != null && metaDelta.getIsStartPadding()) {
- double gapSeconds = ((double)metaDelta.getDeltaTime()) / 1000;
+ double gapSeconds = diffSeconds(metaDelta.getDeltaTime());
+ if (metaDelta.isStartPadding()) {
argv_sox = addSoxPad(returnLog, "fillGap", gapSeconds, 0, inputFile, outputGapFullWav);
- } else if (metaDelta.getIsEndPadding() != null && metaDelta.getIsEndPadding()) {
- double gapSeconds = ((double)metaDelta.getDeltaTime()) / 1000;
+ } else if (metaDelta.isEndPadding()) {
argv_sox = addSoxPad(returnLog, "fillGap", 0, gapSeconds, inputFile, outputGapFullWav);
}
}
@@ -304,33 +306,28 @@ public abstract class BaseConverter {
// Strip Wave to Full Length
String hashFileFullName = metaData.getStreamName() + "_FULL_WAVE.wav";
- String outputFullWav = new File(streamFolder, hashFileFullName).getCanonicalPath();
+ File outputFullWav = new File(streamFolder, hashFileFullName);
// Calculate delta at beginning
- long deltaTimeStartMilliSeconds = metaData.getRecordStart().getTime() - flvRecording.getRecordStart().getTime();
-
- double length = ((double)deltaTimeStartMilliSeconds) / 1000;
+ double startPad = diffSeconds(metaData.getRecordStart(), flvRecording.getRecordStart());
// Calculate delta at ending
- long deltaTimeEndMilliSeconds = flvRecording.getRecordEnd().getTime() - metaData.getRecordEnd().getTime();
-
- double endPadding = ((double)deltaTimeEndMilliSeconds) / 1000;
+ double endPad = diffSeconds(flvRecording.getRecordEnd(), metaData.getRecordEnd());
- addSoxPad(returnLog, "addStartEndToAudio", length, endPadding, outputGapFullWav, outputFullWav);
+ addSoxPad(returnLog, "addStartEndToAudio", startPad, endPad, outputGapFullWav, outputFullWav);
// Fix for Audio Length - Invalid Audio Length in Recorded Files
// Audio must match 100% the Video
log.debug("############################################");
log.debug("Trim Audio to Full Length -- Start");
- File aFile = new File(outputFullWav);
- if (!aFile.exists()) {
+ if (!outputFullWav.exists()) {
throw new Exception("Audio File does not exist , could not extract the Audio correctly");
}
metaData.setFullWavAudioData(hashFileFullName);
// Finally add it to the row!
- listOfFullWaveFiles.add(outputFullWav);
+ listOfFullWaveFiles.add(outputFullWav.getCanonicalPath());
}
metaDataDao.update(metaData);
Modified: openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/FlvInterviewConverter.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/FlvInterviewConverter.java?rev=1655407&r1=1655406&r2=1655407&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/FlvInterviewConverter.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/FlvInterviewConverter.java Wed Jan 28 17:50:11 2015
@@ -134,10 +134,9 @@ public class FlvInterviewConverter exten
File outputWav = new File(streamFolderGeneral, "one_second.wav");
// Calculate delta at beginning
- Long deltaTimeMilliSeconds = flvRecording.getRecordEnd().getTime() - flvRecording.getRecordStart().getTime();
- Float deltaPadding = (Float.parseFloat(deltaTimeMilliSeconds.toString()) / 1000) - 1;
+ double deltaPadding = diffSeconds(flvRecording.getRecordEnd(), flvRecording.getRecordStart());
- String[] argv_full_sox = new String[] { getPathToSoX(), outputWav.getCanonicalPath(), outputFullWav, "pad", "0", deltaPadding.toString() };
+ String[] argv_full_sox = new String[] { getPathToSoX(), outputWav.getCanonicalPath(), outputFullWav, "pad", "0", "" + deltaPadding };
returnLog.add(ProcessHelper.executeScript("generateSampleAudio", argv_full_sox));
}
@@ -189,7 +188,7 @@ public class FlvInterviewConverter exten
, "-pix_fmt", "yuv420p" //
, podPB };
returnLog.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");
String podP = podF.getCanonicalPath();
@@ -200,7 +199,7 @@ public class FlvInterviewConverter exten
, "-map", "[v]" //
, podP };
returnLog.add(ProcessHelper.executeScript("shiftedFlvPod_" + pod , argsPod));
-
+
pods[pod - 1] = podP;
} else {
pods[pod - 1] = path;
Modified: openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/FlvRecorderConverter.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/FlvRecorderConverter.java?rev=1655407&r1=1655406&r2=1655407&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/FlvRecorderConverter.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/FlvRecorderConverter.java Wed Jan 28 17:50:11 2015
@@ -23,7 +23,6 @@ import static org.apache.openmeetings.ut
import java.io.File;
import java.util.ArrayList;
-import java.util.LinkedList;
import java.util.List;
import org.apache.openmeetings.db.dao.record.FlvRecordingDao;
@@ -39,7 +38,6 @@ import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
public class FlvRecorderConverter extends BaseConverter implements IRecordingConverter {
-
private static final Logger log = Red5LoggerFactory.getLogger(FlvRecorderConverter.class, webAppRootKey);
// Spring loaded Beans
@@ -59,11 +57,12 @@ public class FlvRecorderConverter extend
FFMPEG_MAP_PARAM = ".";
}
+ String finalNamePrefix = "flvRecording_" + flvRecordingId;
flvRecording = recordingDao.get(flvRecordingId);
log.debug("flvRecording " + flvRecording.getId());
List<ConverterProcessResult> returnLog = new ArrayList<ConverterProcessResult>();
- List<String> listOfFullWaveFiles = new LinkedList<String>();
+ List<String> listOfFullWaveFiles = new ArrayList<String>();
File streamFolder = getStreamFolder(flvRecording);
FlvRecordingMetaData screenMetaData = metaDataDao.getScreenMetaDataByRecording(flvRecording.getId());
@@ -81,8 +80,6 @@ public class FlvRecorderConverter extend
stripAudioFirstPass(flvRecording, returnLog, listOfFullWaveFiles, streamFolder);
// Merge Wave to Full Length
- String streamFolderGeneralName = getStreamsHibernateDir().getCanonicalPath() + File.separator; // FIXME
-
String hashFileFullName = screenMetaData.getStreamName() + "_FINAL_WAVE.wav";
String outputFullWav = new File(streamFolder, hashFileFullName).getCanonicalPath();
@@ -94,13 +91,12 @@ public class FlvRecorderConverter extend
returnLog.add(ProcessHelper.executeScript("mergeAudioToWaves", argv_full_sox));
} else {
// create default Audio to merge it. strip to content length
- String outputWav = streamFolderGeneralName + "one_second.wav";
+ String outputWav = new File(getStreamsHibernateDir(), "one_second.wav").getCanonicalPath();
// Calculate delta at beginning
- Long deltaTimeMilliSeconds = flvRecording.getRecordEnd().getTime() - flvRecording.getRecordStart().getTime();
- Float deltaPadding = (Float.parseFloat(deltaTimeMilliSeconds.toString()) / 1000) - 1;
+ double deltaPadding = diffSeconds(flvRecording.getRecordEnd(), flvRecording.getRecordStart());
- String[] argv_full_sox = new String[] { getPathToSoX(), outputWav, outputFullWav, "pad", "0", deltaPadding.toString() };
+ String[] argv_full_sox = new String[] { getPathToSoX(), outputWav, outputFullWav, "pad", "0", "" + deltaPadding };
returnLog.add(ProcessHelper.executeScript("generateSampleAudio", argv_full_sox));
}
@@ -109,11 +105,9 @@ public class FlvRecorderConverter extend
// Merge Audio with Video / Calculate resulting FLV
- String inputScreenFullFlv = new File(streamFolder, screenMetaData.getStreamName() + ".flv")
- .getCanonicalPath();
+ String inputScreenFullFlv = new File(streamFolder, screenMetaData.getStreamName() + ".flv").getCanonicalPath();
- String hashFileFullNameFlv = "flvRecording_" + flvRecording.getId() + ".flv";
- String outputFullFlv = streamFolderGeneralName + hashFileFullNameFlv;
+ File outputFullFlv = new File(getStreamsHibernateDir(), finalNamePrefix + ".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
@@ -136,7 +130,7 @@ public class FlvRecorderConverter extend
flvRecording.setFlvHeight(flvHeight);
String[] argv_fullFLV = new String[] { getPathToFFMPEG(), "-y",//
- "-itsoffset", formatMillis(diff(screenMetaData.getRecordStart(), screenMetaData.getFlvRecording().getRecordStart())),
+ "-itsoffset", formatMillis(diff(screenMetaData.getRecordStart(), flvRecording.getRecordStart())),
"-i", inputScreenFullFlv, "-i", outputFullWav, "-ar", "22050", //
"-acodec", "libmp3lame", //
"-ab", "32k", //
@@ -144,41 +138,39 @@ public class FlvRecorderConverter extend
"-vcodec", "flashsv", //
"-map", "0" + FFMPEG_MAP_PARAM + "0", //
"-map", "1" + FFMPEG_MAP_PARAM + "0", //
- outputFullFlv };
+ outputFullFlv.getCanonicalPath() };
returnLog.add(ProcessHelper.executeScript("generateFullFLV", argv_fullFLV));
- flvRecording.setFileHash(hashFileFullNameFlv);
+ flvRecording.setFileHash(outputFullFlv.getName());
// Extract first Image for preview purpose
// ffmpeg -i movie.flv -vcodec mjpeg -vframes 1 -an -f rawvideo -s
// 320x240 movie.jpg
- String hashFileFullNameJPEG = "flvRecording_" + flvRecording.getId() + ".jpg";
- String outPutJpeg = streamFolderGeneralName + hashFileFullNameJPEG;
+ File outPutJpeg = new File(getStreamsHibernateDir(), finalNamePrefix + ".jpg");
- flvRecording.setPreviewImage(hashFileFullNameJPEG);
+ flvRecording.setPreviewImage(outPutJpeg.getName());
String[] argv_previewFLV = new String[] { //
getPathToFFMPEG(), "-y",//
- "-i", outputFullFlv, //
+ "-i", outputFullFlv.getCanonicalPath(), //
"-vcodec", "mjpeg", //
"-vframes", "1", "-an", //
"-f", "rawvideo", //
"-s", flvWidth + "x" + flvHeight, //
- outPutJpeg };
+ outPutJpeg.getCanonicalPath() };
returnLog.add(ProcessHelper.executeScript("previewFullFLV", argv_previewFLV));
- String alternateDownloadName = "flvRecording_" + flvRecording.getId() + ".avi";
- String alternateDownloadFullName = streamFolderGeneralName + alternateDownloadName;
+ File alternateDownload = new File(getStreamsHibernateDir(), finalNamePrefix + ".avi");
- String[] argv_alternateDownload = new String[] { getPathToFFMPEG(), "-y", "-i", outputFullFlv, "-vcodec",
- "copy", alternateDownloadFullName };
+ String[] argv_alternateDownload = new String[] { getPathToFFMPEG(), "-y", "-i", outputFullFlv.getCanonicalPath(), "-vcodec",
+ "copy", alternateDownload.getCanonicalPath() };
returnLog.add(ProcessHelper.executeScript("alternateDownload", argv_alternateDownload));
- flvRecording.setAlternateDownload(alternateDownloadName);
+ flvRecording.setAlternateDownload(alternateDownload.getName());
updateDuration(flvRecording);
convertToMp4(flvRecording, returnLog);
Modified: openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/flvrecord/listener/async/StreamAudioWriter.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/flvrecord/listener/async/StreamAudioWriter.java?rev=1655407&r1=1655406&r2=1655407&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/flvrecord/listener/async/StreamAudioWriter.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/flvrecord/listener/async/StreamAudioWriter.java Wed Jan 28 17:50:11 2015
@@ -98,8 +98,8 @@ public class StreamAudioWriter extends B
metaDelta.setFlvRecordingMetaDataId(metaDataId);
metaDelta.setTimeStamp(0);
metaDelta.setDebugStatus("INIT AUDIO");
- metaDelta.setIsStartPadding(true);
- metaDelta.setIsEndPadding(false);
+ metaDelta.setStartPadding(true);
+ metaDelta.setEndPadding(false);
metaDelta.setDataLengthPacket(data.limit());
metaDelta.setReceivedAudioDataLength(byteCount);
metaDelta.setStartTime(startedSessionTimeDate);
@@ -145,9 +145,9 @@ public class StreamAudioWriter extends B
metaDelta.setFlvRecordingMetaDataId(metaDataId);
metaDelta.setTimeStamp(timeStamp);
metaDelta.setDebugStatus("RUN AUDIO");
- metaDelta.setIsStartPadding(false);
+ metaDelta.setStartPadding(false);
metaDelta.setLastTimeStamp(preLastTimeStamp);
- metaDelta.setIsEndPadding(false);
+ metaDelta.setEndPadding(false);
metaDelta.setDataLengthPacket(data.limit());
metaDelta.setReceivedAudioDataLength(byteCount);
metaDelta.setStartTime(startedSessionTimeDate);
@@ -213,8 +213,8 @@ public class StreamAudioWriter extends B
metaDelta.setFlvRecordingMetaDataId(metaDataId);
metaDelta.setTimeStamp(lastTimeStamp);
metaDelta.setDebugStatus("END AUDIO");
- metaDelta.setIsStartPadding(false);
- metaDelta.setIsEndPadding(true);
+ metaDelta.setStartPadding(false);
+ metaDelta.setEndPadding(true);
metaDelta.setDataLengthPacket(null);
metaDelta.setReceivedAudioDataLength(byteCount);
metaDelta.setStartTime(startedSessionTimeDate);
Modified: openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/FlvRecordingMetaDataDao.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/FlvRecordingMetaDataDao.java?rev=1655407&r1=1655406&r2=1655407&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/FlvRecordingMetaDataDao.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/FlvRecordingMetaDataDao.java Wed Jan 28 17:50:11 2015
@@ -62,15 +62,7 @@ public class FlvRecordingMetaDataDao {
}
public List<FlvRecordingMetaData> getByRecording(Long recordingId) {
- try {
- TypedQuery<FlvRecordingMetaData> query = em.createNamedQuery("getMetaByRecording", FlvRecordingMetaData.class);
- query.setParameter("recordingId", recordingId);
-
- return query.getResultList();
- } catch (Exception ex2) {
- log.error("[getByRecording]: ", ex2);
- }
- return null;
+ return em.createNamedQuery("getMetaByRecording", FlvRecordingMetaData.class).setParameter("recordingId", recordingId).getResultList();
}
public List<FlvRecordingMetaData> getAudioMetaDataByRecording(Long recordingId) {
@@ -117,7 +109,7 @@ public class FlvRecordingMetaDataDao {
flvRecordingMetaData.setRecordStart(recordStart);
flvRecordingMetaData.setAudioOnly(isAudioOnly);
- flvRecordingMetaData.setIsVideoOnly(isVideoOnly);
+ flvRecordingMetaData.setVideoOnly(isVideoOnly);
flvRecordingMetaData.setScreenData(isScreenData);
flvRecordingMetaData.setStreamName(streamName);
Modified: openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/FlvRecordingMetaData.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/FlvRecordingMetaData.java?rev=1655407&r1=1655406&r2=1655407&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/FlvRecordingMetaData.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/FlvRecordingMetaData.java Wed Jan 28 17:50:11 2015
@@ -54,9 +54,9 @@ import org.simpleframework.xml.Root;
@NamedQuery(name = "getMetaById", query = "SELECT c FROM FlvRecordingMetaData c WHERE c.id = :id")
, @NamedQuery(name = "getMetaByRecording", query = "SELECT c FROM FlvRecordingMetaData c WHERE c.flvRecording.id = :recordingId AND c.deleted = false")
, @NamedQuery(name = "getAudioMetaByRecording", query = "SELECT c FROM FlvRecordingMetaData c WHERE c.flvRecording.id = :recordingId "
- + "AND c.screenData = false AND c.streamStatus <> :none AND (c.isAudioOnly = true OR (c.isAudioOnly = false AND c.isVideoOnly = false))")
- , @NamedQuery(name = "getScreenMetaByRecording", query = "SELECT c FROM FlvRecordingMetaData c WHERE c.flvRecording.id = :recordingId "
- + "AND c.screenData = true")
+ + "AND c.screenData = false AND c.streamStatus <> :none AND (c.audioOnly = true OR (c.audioOnly = false AND c.videoOnly = false))")
+ , @NamedQuery(name = "getScreenMetaByRecording", query = "SELECT c FROM FlvRecordingMetaData c WHERE c.flvRecording.id = :recordingId"
+ + " AND c.screenData = true")
})
@Table(name = "flvrecording_metadata")
@Root(name = "flvrecordingmetadata")
@@ -73,7 +73,7 @@ public class FlvRecordingMetaData implem
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
- @Element(data = true, required = false, name = "flvRecordingMetaDataId")
+ @Element(name = "flvRecordingMetaDataId", data = true, required = false)
private Long id;
@ManyToOne(fetch = FetchType.EAGER)
@@ -102,8 +102,8 @@ public class FlvRecordingMetaData implem
private boolean audioOnly;
@Column(name = "is_video_only")
- @Element(data = true)
- private Boolean isVideoOnly;
+ @Element(name = "isVideoOnly", data = true)
+ private boolean videoOnly;
@Column(name = "is_screen_data")
@Element(name = "isScreenData", data = true)
@@ -133,8 +133,8 @@ public class FlvRecordingMetaData implem
private String fullWavAudioData;
@Column(name = "audio_is_valid")
- @Element(data = true, required = false)
- private Boolean audioIsValid;
+ @Element(name="audioIsValid", data = true, required = false)
+ private boolean audioValid;
@Column(name = "interiew_pod_id")
@Element(data = true, required = false)
@@ -196,12 +196,12 @@ public class FlvRecordingMetaData implem
this.audioOnly = audioOnly;
}
- public Boolean getIsVideoOnly() {
- return isVideoOnly;
+ public boolean isVideoOnly() {
+ return videoOnly;
}
- public void setIsVideoOnly(Boolean isVideoOnly) {
- this.isVideoOnly = isVideoOnly;
+ public void setVideoOnly(boolean videoOnly) {
+ this.videoOnly = videoOnly;
}
public Long getInsertedBy() {
@@ -268,12 +268,12 @@ public class FlvRecordingMetaData implem
this.fullWavAudioData = fullWavAudioData;
}
- public Boolean getAudioIsValid() {
- return audioIsValid;
+ public boolean isAudioValid() {
+ return audioValid;
}
- public void setAudioIsValid(Boolean audioIsValid) {
- this.audioIsValid = audioIsValid;
+ public void setAudioValid(boolean audioValid) {
+ this.audioValid = audioValid;
}
public Integer getInteriewPodId() {
Modified: openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/FlvRecordingMetaDelta.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/FlvRecordingMetaDelta.java?rev=1655407&r1=1655406&r2=1655407&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/FlvRecordingMetaDelta.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/FlvRecordingMetaDelta.java Wed Jan 28 17:50:11 2015
@@ -84,10 +84,10 @@ public class FlvRecordingMetaDelta imple
private Long receivedAudioDataLength;
@Column(name="is_end_padding")
- private Boolean isEndPadding;
+ private boolean endPadding;
@Column(name="is_start_padding")
- private Boolean isStartPadding;
+ private boolean startPadding;
@Column(name="debug_status")
private String debugStatus;
@@ -176,18 +176,18 @@ public class FlvRecordingMetaDelta imple
this.currentTime = currentTime;
}
- public Boolean getIsEndPadding() {
- return isEndPadding;
+ public boolean isEndPadding() {
+ return endPadding;
}
- public void setIsEndPadding(Boolean isEndPadding) {
- this.isEndPadding = isEndPadding;
+ public void setEndPadding(boolean endPadding) {
+ this.endPadding = endPadding;
}
- public Boolean getIsStartPadding() {
- return isStartPadding;
+ public boolean isStartPadding() {
+ return startPadding;
}
- public void setIsStartPadding(Boolean isStartPadding) {
- this.isStartPadding = isStartPadding;
+ public void setStartPadding(boolean startPadding) {
+ this.startPadding = startPadding;
}
public String getDebugStatus() {