Author: sebawagner
Date: Sat Feb 18 17:59:45 2012
New Revision: 1290832
URL: http://svn.apache.org/viewvc?rev=1290832&view=rev
Log:
OPENMEETINGS-54 fix recorder to use new audio/video components and fix
recording itself to reference correct streams => Fix exception in stop
recording method. Basically recording should not throw NullPointers anymore,
however there seems to be sound cut off at the recordings, with
SoundCodec.SPEEX ffmpeg is not able to correctly strip the audio from the flv,
nellymoser seems to be fine
Modified:
incubator/openmeetings/trunk/singlewebapp/WebContent/swf10/video/editRecordStreamSWF10.lzx
incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/data/flvrecord/converter/FlvRecorderConverter.java
incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/persistence/beans/recording/RoomClient.java
incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/remote/FLVRecorderService.java
incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/remote/red5/ScopeApplicationAdapter.java
Modified:
incubator/openmeetings/trunk/singlewebapp/WebContent/swf10/video/editRecordStreamSWF10.lzx
URL:
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/WebContent/swf10/video/editRecordStreamSWF10.lzx?rev=1290832&r1=1290831&r2=1290832&view=diff
==============================================================================
---
incubator/openmeetings/trunk/singlewebapp/WebContent/swf10/video/editRecordStreamSWF10.lzx
(original)
+++
incubator/openmeetings/trunk/singlewebapp/WebContent/swf10/video/editRecordStreamSWF10.lzx
Sat Feb 18 17:59:45 2012
@@ -186,8 +186,8 @@
if (valMic != null) {
_micro = Microphone.getMicrophone(valMic);
if (_micro != null) {
- _micro.codec = SoundCodec.SPEEX;
- _micro.framesPerPacket = 1;
+ _micro.codec = SoundCodec.NELLYMOSER;
+ //_micro.framesPerPacket = 1;
_micro.setSilenceLevel(0, 2000);
_micro.gain = 50;
// this has no effect if enhanced
microphone is obtained
Modified:
incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/data/flvrecord/converter/FlvRecorderConverter.java
URL:
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/data/flvrecord/converter/FlvRecorderConverter.java?rev=1290832&r1=1290831&r2=1290832&view=diff
==============================================================================
---
incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/data/flvrecord/converter/FlvRecorderConverter.java
(original)
+++
incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/data/flvrecord/converter/FlvRecorderConverter.java
Sat Feb 18 17:59:45 2012
@@ -270,6 +270,7 @@ public class FlvRecorderConverter extend
"generateFFMPEG", flvRecording,
returnMap);
}
+ if (true) return;
// Delete Wave Files
for (String fileName : listOfFullWaveFiles) {
File audio = new File(fileName);
Modified:
incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/persistence/beans/recording/RoomClient.java
URL:
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/persistence/beans/recording/RoomClient.java?rev=1290832&r1=1290831&r2=1290832&view=diff
==============================================================================
---
incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/persistence/beans/recording/RoomClient.java
(original)
+++
incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/persistence/beans/recording/RoomClient.java
Sat Feb 18 17:59:45 2012
@@ -35,7 +35,7 @@ import javax.persistence.Transient;
@Entity
@Table(name = "roomclient")
public class RoomClient implements Serializable {
-
+
private static final long serialVersionUID = 1831858089607111565L;
@Id
@@ -692,6 +692,9 @@ public class RoomClient implements Seria
+ " screenPublishStarted: " +
this.isScreenPublishStarted() //
+ " flvRecordingMetaDataId: " +
this.getFlvRecordingMetaDataId() //
+ " isRecording: " + this.getIsRecording() //
+ + " isAVClient: " + this.getIsAVClient() //
+ + " broadCastID: " + this.getBroadCastID() //
+ + " avsettings: " + this.getAvsettings() //
;
}
Modified:
incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/remote/FLVRecorderService.java
URL:
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/remote/FLVRecorderService.java?rev=1290832&r1=1290831&r2=1290832&view=diff
==============================================================================
---
incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/remote/FLVRecorderService.java
(original)
+++
incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/remote/FLVRecorderService.java
Sat Feb 18 17:59:45 2012
@@ -237,9 +237,10 @@ public class FLVRecorderService implemen
// if the user does
publish av, a, v
// But we only record
av or a, video only is not
// interesting
-
(rcl.getAvsettings().equals("av")
+ (rcl.getIsAVClient() &&
+
(rcl.getAvsettings().equals("av")
||
rcl.getAvsettings().equals("a")
- ||
rcl.getAvsettings().equals("v")) {
+ ||
rcl.getAvsettings().equals("v"))) {
String
streamName = generateFileName(
flvRecordingId,
@@ -357,7 +358,7 @@ public class FLVRecorderService implemen
* @param broadcastId
*/
@Deprecated
- public void _stopRecordingShow(IConnection conn, String broadcastId) {
+ public void _stopRecordingShowASD(IConnection conn, String broadcastId)
{
try {
log.debug("** stopRecordingShow: " + conn);
@@ -388,6 +389,12 @@ public class FLVRecorderService implemen
public void stopRecordingShow(IConnection conn, String broadcastId,
Long flvRecordingMetaDataId) {
try {
+
+ if (flvRecordingMetaDataId == null) {
+ //this should be fixed, can be useful for
debugging, after all this is an error
+ //but we don't want the application to
completely stop the process
+ log.error("flvRecordingMetaDataId is null");
+ }
log.debug("** stopRecordingShow: " + conn);
log.debug("### Stop recording show for broadcastId: " +
broadcastId
@@ -402,6 +409,7 @@ public class FLVRecorderService implemen
ClientBroadcastStream stream = (ClientBroadcastStream)
streamToClose;
+ //Iterate through all stream listeners and stop the
appropriate
if (stream.getStreamListeners() != null) {
for (Iterator<IStreamListener> iter = stream
@@ -462,7 +470,7 @@ public class FLVRecorderService implemen
// currentClient },
this);
// }
- log.debug("is this
users still alive? :" + rcl);
+ log.debug("is this
users still alive? stop it :" + rcl);
if
(rcl.getIsScreenClient()) {
@@ -481,9 +489,10 @@ public class FLVRecorderService implemen
new Date());
}
- } else if
(rcl.getAvsettings().equals("av")
+ } else if
(rcl.getIsAVClient()
+ &&
(rcl.getAvsettings().equals("av")
||
rcl.getAvsettings().equals("a")
- ||
rcl.getAvsettings().equals("v")) {
+ ||
rcl.getAvsettings().equals("v"))) {
stopRecordingShow(conn,
String.valueOf(rcl.getBroadCastID())
@@ -593,8 +602,7 @@ public class FLVRecorderService implemen
// the same type of event.
// StreamService.addRoomClientEnterEventFunc(rcl,
roomrecordingName,
// rcl.getUserip(), false);
- log.error("### stopRecordingShowForClient: " +
rcl.getIsRecording()
- + "," + rcl.getUsername() + "," +
rcl.getUserip());
+ log.debug("### stopRecordingShowForClient: " + rcl);
if (rcl.getIsScreenClient()) {
@@ -614,13 +622,13 @@ public class FLVRecorderService implemen
rcl.getFlvRecordingMetaDataId(), new Date());
}
- } else if ((rcl.getAvsettings().equals("a")
- || rcl.getAvsettings().equals("v") ||
rcl.getAvsettings()
- .equals("av"))) {
+ } else if (rcl.getIsAVClient() &&
+ (rcl.getAvsettings().equals("a")
+ || rcl.getAvsettings().equals("v")
+ || rcl.getAvsettings().equals("av"))) {
// FIXME: Is there really a need to stop it
manually if the user
- // just
- // stops the stream?
+ // just stops the stream?
stopRecordingShow(conn,
String.valueOf(rcl.getBroadCastID())
.toString(),
rcl.getFlvRecordingMetaDataId());
@@ -680,9 +688,10 @@ public class FLVRecorderService implemen
} else if
// if the user does publish av, a, v
// But we only record av or a, video only is not
interesting
- (rcl.getAvsettings().equals("av")
+ (rcl.getIsAVClient() &&
+ (rcl.getAvsettings().equals("av")
|| rcl.getAvsettings().equals("a")
- || rcl.getAvsettings().equals("v")) {
+ || rcl.getAvsettings().equals("v"))) {
String streamName =
generateFileName(flvRecordingId, String
.valueOf(rcl.getBroadCastID()).toString());
Modified:
incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/remote/red5/ScopeApplicationAdapter.java
URL:
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/remote/red5/ScopeApplicationAdapter.java?rev=1290832&r1=1290831&r2=1290832&view=diff
==============================================================================
---
incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/remote/red5/ScopeApplicationAdapter.java
(original)
+++
incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/remote/red5/ScopeApplicationAdapter.java
Sat Feb 18 17:59:45 2012
@@ -843,7 +843,7 @@ public class ScopeApplicationAdapter ext
.getClient().getId());
if
(clientFunction.equals("closeStream")
&& rcl.getIsRecording()) {
-
log.debug("*** sendClientBroadcastNotifications Any Client is Recording - stop
that");
+
log.debug("*** stopRecordingShowForClient Any Client is Recording - stop that");
// StreamService.stopRecordingShowForClient(conn,
// currentClient,
// rcl.getRoomRecordingName(), false);