Author: solomax
Date: Wed Aug 6 17:24:26 2014
New Revision: 1616290
URL: http://svn.apache.org/r1616290
Log:
[OPENMEETINGS-998] audio-video synchronization 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/main/java/org/apache/openmeetings/converter/BaseConverter.java
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/data/flvrecord/listener/async/StreamAudioWriter.java
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/data/flvrecord/listener/async/StreamVideoWriter.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/data/flvrecord/listener/async/StreamAudioWriter.java
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/flvrecord/listener/async/StreamVideoWriter.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
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=1616290&r1=1616289&r2=1616290&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 Aug 6 17:24:26 2014
@@ -45,10 +45,8 @@ public class FlvRecordingMetaDataDao {
public FlvRecordingMetaData get(Long flvRecordingMetaDataId) {
try {
- String hql = "SELECT c FROM FlvRecordingMetaData c
WHERE c.flvRecordingMetaDataId = :flvRecordingMetaDataId";
-
- TypedQuery<FlvRecordingMetaData> query =
em.createQuery(hql, FlvRecordingMetaData.class);
- query.setParameter("flvRecordingMetaDataId",
flvRecordingMetaDataId);
+ TypedQuery<FlvRecordingMetaData> query =
em.createNamedQuery("getMetaById", FlvRecordingMetaData.class);
+ query.setParameter("id", flvRecordingMetaDataId);
FlvRecordingMetaData flvRecordingMetaData = null;
try {
@@ -58,43 +56,30 @@ public class FlvRecordingMetaDataDao {
return flvRecordingMetaData;
} catch (Exception ex2) {
- log.error("[getFlvRecordingMetaDataById]: ", ex2);
+ log.error("[get]: ", ex2);
}
return null;
}
- public List<FlvRecordingMetaData> getByRecording(Long flvRecordingId) {
+ public List<FlvRecordingMetaData> getByRecording(Long recordingId) {
try {
+ TypedQuery<FlvRecordingMetaData> query =
em.createNamedQuery("getMetaByRecording", FlvRecordingMetaData.class);
+ query.setParameter("recordingId", recordingId);
- String hql = "SELECT c FROM FlvRecordingMetaData c
WHERE c.flvRecording.flvRecordingId = :flvRecordingId "
- + "AND c.deleted = false ";
-
- TypedQuery<FlvRecordingMetaData> query =
em.createQuery(hql, FlvRecordingMetaData.class);
- query.setParameter("flvRecordingId", flvRecordingId);
-
- List<FlvRecordingMetaData> flvRecordingMetaDatas =
query.getResultList();
-
- return flvRecordingMetaDatas;
-
+ return query.getResultList();
} catch (Exception ex2) {
- log.error("[getFlvRecordingMetaDataByRecording]: ",
ex2);
+ log.error("[getByRecording]: ", ex2);
}
return null;
}
public List<FlvRecordingMetaData> getAudioMetaDataByRecording(Long
flvRecordingId) {
try {
- String hql = "SELECT c FROM FlvRecordingMetaData c
WHERE c.flvRecording.flvRecordingId = :flvRecordingId "
- + "AND c.screenData = false AND
c.streamStatus <> :none "
- + "AND (c.isAudioOnly = true OR
(c.isAudioOnly = false AND c.isVideoOnly = false))";
-
- TypedQuery<FlvRecordingMetaData> query =
em.createQuery(hql, FlvRecordingMetaData.class);
- query.setParameter("flvRecordingId", flvRecordingId);
+ TypedQuery<FlvRecordingMetaData> query =
em.createNamedQuery("getAudioMetaByRecording", FlvRecordingMetaData.class);
+ query.setParameter("recordingId", flvRecordingId);
query.setParameter("none", Status.NONE);
- List<FlvRecordingMetaData> flvRecordingMetaDatas =
query.getResultList();
-
- return flvRecordingMetaDatas;
+ return query.getResultList();
} catch (Exception ex2) {
log.error("[getAudioMetaDataByRecording]: ", ex2);
}
@@ -103,18 +88,14 @@ public class FlvRecordingMetaDataDao {
public FlvRecordingMetaData getScreenMetaDataByRecording(Long
flvRecordingId) {
try {
- String hql = "SELECT c FROM FlvRecordingMetaData c
WHERE c.flvRecording.flvRecordingId = :flvRecordingId "
- + "AND c.screenData = true";
-
- TypedQuery<FlvRecordingMetaData> query =
em.createQuery(hql, FlvRecordingMetaData.class);
- query.setParameter("flvRecordingId", flvRecordingId);
+ TypedQuery<FlvRecordingMetaData> query =
em.createNamedQuery("getScreenMetaByRecording", FlvRecordingMetaData.class);
+ query.setParameter("recordingId", flvRecordingId);
List<FlvRecordingMetaData> flvRecordingMetaDatas =
query.getResultList();
if (flvRecordingMetaDatas.size() > 0) {
return flvRecordingMetaDatas.get(0);
}
-
} catch (Exception ex2) {
log.error("[getScreenMetaDataByRecording]: ", ex2);
}
@@ -154,45 +135,18 @@ public class FlvRecordingMetaDataDao {
return null;
}
- public Long addFlvRecordingMetaDataObj(FlvRecordingMetaData
flvRecordingMetaData) {
+ public Long updateFlvRecordingMetaDataEndDate(Long metaId, Date
recordEnd) {
try {
+ FlvRecordingMetaData meta = get(metaId);
- flvRecordingMetaData = em.merge(flvRecordingMetaData);
- Long flvRecordingMetaDataId =
flvRecordingMetaData.getFlvRecordingMetaDataId();
-
- return flvRecordingMetaDataId;
-
- } catch (Exception ex2) {
- log.error("[addFlvRecordingMetaDataObj]: ", ex2);
- }
- return null;
- }
-
- public Long updateFlvRecordingMetaDataEndDate(Long
flvRecordingMetaDataId, Date recordEnd) {
- try {
- FlvRecordingMetaData flvRecordingMetaData =
get(flvRecordingMetaDataId);
-
- flvRecordingMetaData.setRecordEnd(recordEnd);
+ meta.setRecordEnd(recordEnd);
- log.debug("updateFlvRecordingMetaDataEndDate :: Start
Date :"+flvRecordingMetaData.getRecordStart());
- log.debug("updateFlvRecordingMetaDataEndDate :: End
Date :"+flvRecordingMetaData.getRecordEnd());
+ log.debug("updateFlvRecordingMetaDataEndDate :: Start
Date :" + meta.getRecordStart());
+ log.debug("updateFlvRecordingMetaDataEndDate :: End
Date :" + meta.getRecordEnd());
- this.update(flvRecordingMetaData);
+ update(meta);
- return flvRecordingMetaDataId;
- } catch (Exception ex2) {
- log.error("[updateFlvRecordingMetaDataEndDate]: ", ex2);
- }
- return null;
- }
-
- public Long updateFlvRecordingMetaDataInitialGap(Long
flvRecordingMetaDataId, long initalGap) {
- try {
- FlvRecordingMetaData flvRecordingMetaData =
get(flvRecordingMetaDataId);
-
-
flvRecordingMetaData.setInitialGapSeconds(Long.valueOf(initalGap).intValue());
- this.update(flvRecordingMetaData);
- return flvRecordingMetaDataId;
+ return metaId;
} catch (Exception ex2) {
log.error("[updateFlvRecordingMetaDataEndDate]: ", ex2);
}
@@ -209,7 +163,7 @@ public class FlvRecordingMetaDataDao {
}
}
} catch (Exception ex2) {
- log.error("[updateFlvRecordingMetaData]: ", ex2);
+ log.error("[update]: ", ex2);
}
return null;
}
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=1616290&r1=1616289&r2=1616290&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 Aug 6 17:24:26 2014
@@ -31,6 +31,8 @@ import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
import javax.persistence.Table;
import org.apache.openjpa.persistence.jdbc.ForeignKey;
@@ -47,6 +49,14 @@ import org.simpleframework.xml.Root;
* @author sebawagner
*/
@Entity
+@NamedQueries({
+ @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))")
+ , @NamedQuery(name = "getScreenMetaByRecording", query = "SELECT c FROM
FlvRecordingMetaData c WHERE c.flvRecording.flvRecordingId = :recordingId"
+ + " AND c.screenData = true")
+})
@Table(name = "flvrecording_metadata")
@Root(name = "flvrecordingmetadata")
public class FlvRecordingMetaData implements Serializable {
@@ -128,10 +138,6 @@ public class FlvRecordingMetaData implem
@Element(data = true, required = false)
private Integer interiewPodId;
- @Column(name = "initial_gap_seconds")
- @Element(data = true, required = false)
- private Integer initialGapSeconds;
-
/**
* this is only STOPPED when the asynchronous stream writer's have
completed to write packets to the file.
* @see BaseStreamWriter#closeStream()
@@ -276,14 +282,6 @@ public class FlvRecordingMetaData implem
this.interiewPodId = interiewPodId;
}
- public Integer getInitialGapSeconds() {
- return initialGapSeconds;
- }
-
- public void setInitialGapSeconds(Integer initialGapSeconds) {
- this.initialGapSeconds = initialGapSeconds;
- }
-
public Status getStreamStatus() {
return streamStatus;
}
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=1616290&r1=1616289&r2=1616290&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 Aug 6 17:24:26 2014
@@ -250,7 +250,8 @@ public abstract class BaseConverter {
metaData.setAudioIsValid(false);
if (inputFlvFile.exists()) {
- String[] argv = new String[]
{getPathToFFMPEG(), "-y", "-async", "1", "-i", inputFlvFile.getCanonicalPath(),
outputWav};
+ String[] argv = new String[]
{getPathToFFMPEG(), "-y", "-i", inputFlvFile.getCanonicalPath()
+ , "-af",
"aresample=32k", outputWav};
returnLog.add(ProcessHelper.executeScript("stripAudioFromFLVs", argv));
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=1616290&r1=1616289&r2=1616290&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 Aug 6 17:24:26 2014
@@ -27,6 +27,7 @@ import java.util.Date;
import org.apache.mina.core.buffer.IoBuffer;
import org.apache.openmeetings.db.dao.record.FlvRecordingMetaDataDao;
import org.apache.openmeetings.db.dao.record.FlvRecordingMetaDeltaDao;
+import org.apache.openmeetings.db.entity.record.FlvRecordingMetaData;
import org.apache.openmeetings.db.entity.record.FlvRecordingMetaDelta;
import org.red5.io.ITag;
import org.red5.io.flv.impl.Tag;
@@ -120,6 +121,10 @@ public class StreamAudioWriter extends B
// That will be not bigger then long
value
startTimeStamp =
streampacket.getTimestamp();
+
+ FlvRecordingMetaData metaData =
metaDataDao.get(metaDataId);
+ metaData.setRecordStart(virtualTime);
+ metaDataDao.update(metaData);
}
lastStreamPacketTimeStamp =
streampacket.getTimestamp();
Modified:
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/data/flvrecord/listener/async/StreamVideoWriter.java
URL:
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/data/flvrecord/listener/async/StreamVideoWriter.java?rev=1616290&r1=1616289&r2=1616290&view=diff
==============================================================================
---
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/data/flvrecord/listener/async/StreamVideoWriter.java
(original)
+++
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/data/flvrecord/listener/async/StreamVideoWriter.java
Wed Aug 6 17:24:26 2014
@@ -65,12 +65,10 @@ public class StreamVideoWriter extends B
if (startedSessionScreenTimeDate == null) {
startedSessionScreenTimeDate = virtualTime;
- // Calculate the delta between the initial
start and the first packet data
- initialDelta =
startedSessionScreenTimeDate.getTime() - startedSessionTimeDate.getTime();
- // This is important for the Interview Post
Processing to get the time between starting the stream and
- // the actual Access to the webcam by the Flash
Security Dialog
-
metaDataDao.updateFlvRecordingMetaDataInitialGap(metaDataId, initialDelta);
+ FlvRecordingMetaData metaData =
metaDataDao.get(metaDataId);
+ metaData.setRecordStart(virtualTime);
+ metaDataDao.update(metaData);
}
if (startTimeStamp == -1) {
@@ -96,14 +94,5 @@ public class StreamVideoWriter extends B
@Override
protected void internalCloseStream() {
- try {
- // Add Delta in the beginning, this Delta is the Gap
between the device chosen and when the User hits the
- // button in the Flash Security Warning
- FlvRecordingMetaData metaData =
metaDataDao.get(metaDataId);
- metaData.setRecordStart(new
Date(metaData.getRecordStart().getTime() + initialDelta));
- metaDataDao.update(metaData);
- } catch (Exception err) {
- log.error("[internalCloseStream]", err);
- }
}
}
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=1616290&r1=1616289&r2=1616290&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 Aug 6 17:24:26 2014
@@ -250,7 +250,8 @@ public abstract class BaseConverter {
metaData.setAudioIsValid(false);
if (inputFlvFile.exists()) {
- String[] argv = new String[]
{getPathToFFMPEG(), "-y", "-async", "1", "-i", inputFlvFile.getCanonicalPath(),
outputWav};
+ String[] argv = new String[]
{getPathToFFMPEG(), "-y", "-i", inputFlvFile.getCanonicalPath()
+ , "-af",
"aresample=32k", outputWav};
returnLog.add(ProcessHelper.executeScript("stripAudioFromFLVs", argv));
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=1616290&r1=1616289&r2=1616290&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 Aug 6 17:24:26 2014
@@ -27,6 +27,7 @@ import java.util.Date;
import org.apache.mina.core.buffer.IoBuffer;
import org.apache.openmeetings.db.dao.record.FlvRecordingMetaDataDao;
import org.apache.openmeetings.db.dao.record.FlvRecordingMetaDeltaDao;
+import org.apache.openmeetings.db.entity.record.FlvRecordingMetaData;
import org.apache.openmeetings.db.entity.record.FlvRecordingMetaDelta;
import org.red5.io.ITag;
import org.red5.io.flv.impl.Tag;
@@ -120,6 +121,10 @@ public class StreamAudioWriter extends B
// That will be not bigger then long
value
startTimeStamp =
streampacket.getTimestamp();
+
+ FlvRecordingMetaData metaData =
metaDataDao.get(metaDataId);
+ metaData.setRecordStart(virtualTime);
+ metaDataDao.update(metaData);
}
lastStreamPacketTimeStamp =
streampacket.getTimestamp();
Modified:
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/flvrecord/listener/async/StreamVideoWriter.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/flvrecord/listener/async/StreamVideoWriter.java?rev=1616290&r1=1616289&r2=1616290&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/flvrecord/listener/async/StreamVideoWriter.java
(original)
+++
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/flvrecord/listener/async/StreamVideoWriter.java
Wed Aug 6 17:24:26 2014
@@ -65,12 +65,10 @@ public class StreamVideoWriter extends B
if (startedSessionScreenTimeDate == null) {
startedSessionScreenTimeDate = virtualTime;
- // Calculate the delta between the initial
start and the first packet data
- initialDelta =
startedSessionScreenTimeDate.getTime() - startedSessionTimeDate.getTime();
- // This is important for the Interview Post
Processing to get the time between starting the stream and
- // the actual Access to the webcam by the Flash
Security Dialog
-
metaDataDao.updateFlvRecordingMetaDataInitialGap(metaDataId, initialDelta);
+ FlvRecordingMetaData metaData =
metaDataDao.get(metaDataId);
+ metaData.setRecordStart(virtualTime);
+ metaDataDao.update(metaData);
}
if (startTimeStamp == -1) {
@@ -96,14 +94,5 @@ public class StreamVideoWriter extends B
@Override
protected void internalCloseStream() {
- try {
- // Add Delta in the beginning, this Delta is the Gap
between the device chosen and when the User hits the
- // button in the Flash Security Warning
- FlvRecordingMetaData metaData =
metaDataDao.get(metaDataId);
- metaData.setRecordStart(new
Date(metaData.getRecordStart().getTime() + initialDelta));
- metaDataDao.update(metaData);
- } catch (Exception err) {
- log.error("[internalCloseStream]", err);
- }
}
}
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=1616290&r1=1616289&r2=1616290&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 Aug 6 17:24:26 2014
@@ -43,12 +43,10 @@ public class FlvRecordingMetaDataDao {
@Autowired
private FlvRecordingDao flvRecordingDao;
- public FlvRecordingMetaData get(Long flvRecordingMetaDataId) {
+ public FlvRecordingMetaData get(Long id) {
try {
- String hql = "SELECT c FROM FlvRecordingMetaData c
WHERE c.flvRecordingMetaDataId = :flvRecordingMetaDataId";
-
- TypedQuery<FlvRecordingMetaData> query =
em.createQuery(hql, FlvRecordingMetaData.class);
- query.setParameter("flvRecordingMetaDataId",
flvRecordingMetaDataId);
+ TypedQuery<FlvRecordingMetaData> query =
em.createNamedQuery("getMetaById", FlvRecordingMetaData.class);
+ query.setParameter("id", id);
FlvRecordingMetaData flvRecordingMetaData = null;
try {
@@ -58,43 +56,30 @@ public class FlvRecordingMetaDataDao {
return flvRecordingMetaData;
} catch (Exception ex2) {
- log.error("[getFlvRecordingMetaDataById]: ", ex2);
+ log.error("[get]: ", ex2);
}
return null;
}
- public List<FlvRecordingMetaData> getByRecording(Long flvRecordingId) {
+ public List<FlvRecordingMetaData> getByRecording(Long recordingId) {
try {
+ TypedQuery<FlvRecordingMetaData> query =
em.createNamedQuery("getMetaByRecording", FlvRecordingMetaData.class);
+ query.setParameter("recordingId", recordingId);
- String hql = "SELECT c FROM FlvRecordingMetaData c
WHERE c.flvRecording.flvRecordingId = :flvRecordingId "
- + "AND c.deleted = false ";
-
- TypedQuery<FlvRecordingMetaData> query =
em.createQuery(hql, FlvRecordingMetaData.class);
- query.setParameter("flvRecordingId", flvRecordingId);
-
- List<FlvRecordingMetaData> flvRecordingMetaDatas =
query.getResultList();
-
- return flvRecordingMetaDatas;
-
+ return query.getResultList();
} catch (Exception ex2) {
- log.error("[getFlvRecordingMetaDataByRecording]: ",
ex2);
+ log.error("[getByRecording]: ", ex2);
}
return null;
}
- public List<FlvRecordingMetaData> getAudioMetaDataByRecording(Long
flvRecordingId) {
+ public List<FlvRecordingMetaData> getAudioMetaDataByRecording(Long
recordingId) {
try {
- String hql = "SELECT c FROM FlvRecordingMetaData c
WHERE c.flvRecording.flvRecordingId = :flvRecordingId "
- + "AND c.screenData = false AND
c.streamStatus <> :none "
- + "AND (c.isAudioOnly = true OR
(c.isAudioOnly = false AND c.isVideoOnly = false))";
-
- TypedQuery<FlvRecordingMetaData> query =
em.createQuery(hql, FlvRecordingMetaData.class);
- query.setParameter("flvRecordingId", flvRecordingId);
+ TypedQuery<FlvRecordingMetaData> query =
em.createNamedQuery("getAudioMetaByRecording", FlvRecordingMetaData.class);
+ query.setParameter("recordingId", recordingId);
query.setParameter("none", Status.NONE);
- List<FlvRecordingMetaData> flvRecordingMetaDatas =
query.getResultList();
-
- return flvRecordingMetaDatas;
+ return query.getResultList();
} catch (Exception ex2) {
log.error("[getAudioMetaDataByRecording]: ", ex2);
}
@@ -103,10 +88,7 @@ public class FlvRecordingMetaDataDao {
public FlvRecordingMetaData getScreenMetaDataByRecording(Long
flvRecordingId) {
try {
- String hql = "SELECT c FROM FlvRecordingMetaData c
WHERE c.flvRecording.flvRecordingId = :flvRecordingId "
- + "AND c.screenData = true";
-
- TypedQuery<FlvRecordingMetaData> query =
em.createQuery(hql, FlvRecordingMetaData.class);
+ TypedQuery<FlvRecordingMetaData> query =
em.createNamedQuery("getScreenMetaByRecording", FlvRecordingMetaData.class);
query.setParameter("flvRecordingId", flvRecordingId);
List<FlvRecordingMetaData> flvRecordingMetaDatas =
query.getResultList();
@@ -114,7 +96,6 @@ public class FlvRecordingMetaDataDao {
if (flvRecordingMetaDatas.size() > 0) {
return flvRecordingMetaDatas.get(0);
}
-
} catch (Exception ex2) {
log.error("[getScreenMetaDataByRecording]: ", ex2);
}
@@ -154,45 +135,18 @@ public class FlvRecordingMetaDataDao {
return null;
}
- public Long addFlvRecordingMetaDataObj(FlvRecordingMetaData
flvRecordingMetaData) {
+ public Long updateFlvRecordingMetaDataEndDate(Long metaId, Date
recordEnd) {
try {
+ FlvRecordingMetaData meta = get(metaId);
- flvRecordingMetaData = em.merge(flvRecordingMetaData);
- Long flvRecordingMetaDataId =
flvRecordingMetaData.getId();
-
- return flvRecordingMetaDataId;
-
- } catch (Exception ex2) {
- log.error("[addFlvRecordingMetaDataObj]: ", ex2);
- }
- return null;
- }
-
- public Long updateFlvRecordingMetaDataEndDate(Long
flvRecordingMetaDataId, Date recordEnd) {
- try {
- FlvRecordingMetaData flvRecordingMetaData =
get(flvRecordingMetaDataId);
-
- flvRecordingMetaData.setRecordEnd(recordEnd);
+ meta.setRecordEnd(recordEnd);
- log.debug("updateFlvRecordingMetaDataEndDate :: Start
Date :"+flvRecordingMetaData.getRecordStart());
- log.debug("updateFlvRecordingMetaDataEndDate :: End
Date :"+flvRecordingMetaData.getRecordEnd());
+ log.debug("updateFlvRecordingMetaDataEndDate :: Start
Date :" + meta.getRecordStart());
+ log.debug("updateFlvRecordingMetaDataEndDate :: End
Date :" + meta.getRecordEnd());
- this.update(flvRecordingMetaData);
+ update(meta);
- return flvRecordingMetaDataId;
- } catch (Exception ex2) {
- log.error("[updateFlvRecordingMetaDataEndDate]: ", ex2);
- }
- return null;
- }
-
- public Long updateFlvRecordingMetaDataInitialGap(Long
flvRecordingMetaDataId, long initalGap) {
- try {
- FlvRecordingMetaData flvRecordingMetaData =
get(flvRecordingMetaDataId);
-
-
flvRecordingMetaData.setInitialGapSeconds(Long.valueOf(initalGap).intValue());
- this.update(flvRecordingMetaData);
- return flvRecordingMetaDataId;
+ return metaId;
} catch (Exception ex2) {
log.error("[updateFlvRecordingMetaDataEndDate]: ", ex2);
}
@@ -209,7 +163,7 @@ public class FlvRecordingMetaDataDao {
}
}
} catch (Exception ex2) {
- log.error("[updateFlvRecordingMetaData]: ", ex2);
+ log.error("[update]: ", ex2);
}
return null;
}
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=1616290&r1=1616289&r2=1616290&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 Aug 6 17:24:26 2014
@@ -30,6 +30,8 @@ import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.xml.bind.annotation.XmlType;
@@ -48,6 +50,14 @@ import org.simpleframework.xml.Root;
* @author sebawagner
*/
@Entity
+@NamedQueries({
+ @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")
+})
@Table(name = "flvrecording_metadata")
@Root(name = "flvrecordingmetadata")
public class FlvRecordingMetaData implements IDataProviderEntity {
@@ -130,10 +140,6 @@ public class FlvRecordingMetaData implem
@Element(data = true, required = false)
private Integer interiewPodId;
- @Column(name = "initial_gap_seconds")
- @Element(data = true, required = false)
- private Integer initialGapSeconds;
-
/**
* this is only STOPPED when the asynchronous stream writer's have
completed to write packets to the file.
* @see BaseStreamWriter#closeStream()
@@ -278,14 +284,6 @@ public class FlvRecordingMetaData implem
this.interiewPodId = interiewPodId;
}
- public Integer getInitialGapSeconds() {
- return initialGapSeconds;
- }
-
- public void setInitialGapSeconds(Integer initialGapSeconds) {
- this.initialGapSeconds = initialGapSeconds;
- }
-
public Status getStreamStatus() {
return streamStatus;
}