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 2014/06/08 10:51:11 UTC

svn commit: r1601201 - in /openmeetings: branches/3.0.x/src/main/java/org/apache/openmeetings/converter/ branches/3.0.x/src/main/java/org/apache/openmeetings/remote/ trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/conver...

Author: solomax
Date: Sun Jun  8 08:51:10 2014
New Revision: 1601201

URL: http://svn.apache.org/r1601201
Log:
Additional logging is added to track possible issues with recordings in interview room

Modified:
    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/FlvExplorerConverter.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/remote/FLVRecorderService.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/FlvExplorerConverter.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/remote/FLVRecorderService.java

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=1601201&r1=1601200&r2=1601201&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 Sun Jun  8 08:51:10 2014
@@ -142,6 +142,17 @@ public abstract class BaseConverter {
 		return argv;
 	}
 	
+	public static void printMetaInfo(FlvRecordingMetaData metaData, String prefix) {
+		if (log.isDebugEnabled()) {
+			log.debug(String.format("### %s:: stream with id %s; current status: %s ", prefix, metaData.getFlvRecordingMetaDataId(), metaData.getStreamStatus()));
+			File metaDir = getStreamsSubDir(metaData.getFlvRecording().getRoom_id());
+			File metaFlv = new File(metaDir, metaData.getStreamName() + ".flv");
+			File metaSer = new File(metaDir, metaData.getStreamName() + ".flv.ser");
+			log.debug(String.format("### %:: Flv file [%s] exists ? %s; size: %s, lastModified: %s ", prefix, metaFlv.getPath(), metaFlv.exists(), metaFlv.length(), metaFlv.lastModified()));
+			log.debug(String.format("### %:: Ser file [%s] exists ? %s; size: %s, lastModified: %s ", prefix, metaSer.getPath(), metaSer.exists(), metaSer.length(), metaSer.lastModified()));
+		}
+	}
+	
 	protected FlvRecordingMetaData waitForTheStream(long metaId) throws InterruptedException {
 		FlvRecordingMetaData metaData = metaDataDao.get(metaId);
 		if (metaData.getStreamStatus() != Status.STOPPED) {
@@ -154,15 +165,11 @@ public abstract class BaseConverter {
 				metaData = metaDataDao.get(metaId);
 				
 				if (metaData.getStreamStatus() == Status.STOPPED) {
-					log.debug("### Stream now written Thread continue - " );
+					printMetaInfo(metaData, "Stream now written");
+					log.debug("### Thread continue ... " );
 					doWait = false;
 				} else if (++counter % 1000 == 0) {
-					log.debug(String.format("### Still waiting for the stream with id %s; current status: %s ", metaId, metaData.getStreamStatus()));
-					File metaDir = getStreamsSubDir(metaData.getFlvRecording().getRoom_id());
-					File metaFlv = new File(metaDir, metaData.getStreamName() + ".flv");
-					File metaSer = new File(metaDir, metaData.getStreamName() + ".flv.ser");
-					log.debug(String.format("### Still waiting:: Flv file [%s] exists ? %s; size: %s, lastModified: %s ", metaFlv.getPath(), metaFlv.exists(), metaFlv.length(), metaFlv.lastModified()));
-					log.debug(String.format("### Still waiting:: Ser file [%s] exists ? %s; size: %s, lastModified: %s ", metaSer.getPath(), metaSer.exists(), metaSer.length(), metaSer.lastModified()));
+					printMetaInfo(metaData, "Still waiting");
 				}
 				
 				Thread.sleep(100L);
@@ -202,7 +209,7 @@ public abstract class BaseConverter {
 	
 				metaData.setAudioIsValid(false);
 				if (inputFlvFile.exists()) {
-					String[] argv = new String[] {getPathToFFMPEG(), "-async", "1", "-i", inputFlvFile.getCanonicalPath(), outputWav};
+					String[] argv = new String[] {getPathToFFMPEG(), "-y", "-async", "1", "-i", inputFlvFile.getCanonicalPath(), outputWav};
 	
 					returnLog.add(ProcessHelper.executeScript("stripAudioFromFLVs", argv));
 	
@@ -301,7 +308,7 @@ public abstract class BaseConverter {
 		String path = file.getCanonicalPath();
 		String mp4path = path + MP4_EXTENSION;
 		String[] argv = new String[] {
-				getPathToFFMPEG(), //
+				getPathToFFMPEG(), "-y",
 				"-i", path,
 				"-c:v", "libx264",
 				"-crf", "24",
@@ -316,7 +323,7 @@ public abstract class BaseConverter {
 		returnLog.add(ProcessHelper.executeScript("generate MP4", argv));
 		
 		argv = new String[] {
-				getPathToFFMPEG(), //
+				getPathToFFMPEG(), "-y",
 				"-i", mp4path,
 				"-vcodec", "libtheora",
 				"-acodec", "libvorbis",

Modified: openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/converter/FlvExplorerConverter.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/converter/FlvExplorerConverter.java?rev=1601201&r1=1601200&r2=1601201&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/converter/FlvExplorerConverter.java (original)
+++ openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/converter/FlvExplorerConverter.java Sun Jun  8 08:51:10 2014
@@ -85,7 +85,7 @@ public class FlvExplorerConverter extend
 
 			fileExplorerItem.setIsVideo(true);
 
-			String[] argv_fullFLV = new String[] { getPathToFFMPEG(), "-i", moviePath,
+			String[] argv_fullFLV = new String[] { getPathToFFMPEG(), "-y", "-i", moviePath,
 					"-ar", "22050", "-acodec", "libmp3lame", "-ab", "32k",
 					"-vcodec", "flv",
 					outputFullFlv.getCanonicalPath() };
@@ -110,7 +110,7 @@ public class FlvExplorerConverter extend
 
 			fileExplorerItem.setPreviewImage(hashFileFullNameJPEG);
 
-			String[] argv_previewFLV = new String[] { getPathToFFMPEG(), "-i",
+			String[] argv_previewFLV = new String[] { getPathToFFMPEG(), "-y", "-i",
 					outputFullFlv.getCanonicalPath(), "-vcodec", "mjpeg", "-vframes", "1", "-an",
 					"-f", "rawvideo", "-s", flvWidth + "x" + flvHeight,
 					outPutJpeg.getCanonicalPath() };

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=1601201&r1=1601200&r2=1601201&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 Sun Jun  8 08:51:10 2014
@@ -182,7 +182,7 @@ public class FlvInterviewConverter exten
 					 * CHECK FILE:
 					 * ffmpeg -i rec_316_stream_567_2013_08_28_11_51_45.flv -v error -f null file.null
 					 */ 
-					String[] args = new String[] {getPathToFFMPEG()
+					String[] args = new String[] {getPathToFFMPEG(), "-y"
 							, "-i", path
 							, "-an" // only input files with video will be treated as video sources
 							, "-v", "error"
@@ -206,6 +206,7 @@ public class FlvInterviewConverter exten
 			boolean shortest = false;
 			List<String> args = new ArrayList<String>();
 			args.add(getPathToFFMPEG());
+			args.add("-y"); 
 			for (int i = 0; i < 2; ++i) {
 				/*
 				 * INSERT BLANK INSTEAD OF BAD PAD:
@@ -260,7 +261,7 @@ public class FlvInterviewConverter exten
 			flvRecording.setPreviewImage(hashFileFullNameJPEG);
 
 			String[] argv_previewFLV = new String[] { //
-					getPathToFFMPEG(), //
+					getPathToFFMPEG(), "-y", //
 					"-i", outputFullFlv, //
 					"-vcodec", "mjpeg", //
 					"-vframes", "100", "-an", //
@@ -274,7 +275,7 @@ public class FlvInterviewConverter exten
 			String alternateDownloadFullName = new File(streamFolderGeneral, alternateDownloadName).getCanonicalPath();
 			deleteFileIfExists(alternateDownloadFullName);
 
-			String[] argv_alternateDownload = new String[] { getPathToFFMPEG(), "-i", outputFullFlv, alternateDownloadFullName };
+			String[] argv_alternateDownload = new String[] { getPathToFFMPEG(), "-y", "-i", outputFullFlv, alternateDownloadFullName };
 
 			returnLog.add(ProcessHelper.executeScript("alternateDownload", argv_alternateDownload));
 

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=1601201&r1=1601200&r2=1601201&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 Sun Jun  8 08:51:10 2014
@@ -135,7 +135,7 @@ public class FlvRecorderConverter extend
 			flvRecording.setFlvWidth(flvWidth);
 			flvRecording.setFlvHeight(flvHeight);
 
-			String[] argv_fullFLV = new String[] { getPathToFFMPEG(), //
+			String[] argv_fullFLV = new String[] { getPathToFFMPEG(), "-y",//
 					"-itsoffset", getDifference(screenMetaData.getRecordStart(), screenMetaData.getFlvRecording().getRecordStart()),
 					"-i", inputScreenFullFlv, "-i", outputFullWav, "-ar", "22050", //
 					"-acodec", "libmp3lame", //
@@ -160,7 +160,7 @@ public class FlvRecorderConverter extend
 			flvRecording.setPreviewImage(hashFileFullNameJPEG);
 
 			String[] argv_previewFLV = new String[] { //
-					getPathToFFMPEG(), //
+					getPathToFFMPEG(), "-y",//
 					"-i", outputFullFlv, //
 					"-vcodec", "mjpeg", //
 					"-vframes", "1", "-an", //
@@ -173,7 +173,7 @@ public class FlvRecorderConverter extend
 			String alternateDownloadName = "flvRecording_" + flvRecording.getFlvRecordingId() + ".avi";
 			String alternateDownloadFullName = streamFolderGeneralName + alternateDownloadName;
 
-			String[] argv_alternateDownload = new String[] { getPathToFFMPEG(), "-i", outputFullFlv, "-vcodec",
+			String[] argv_alternateDownload = new String[] { getPathToFFMPEG(), "-y", "-i", outputFullFlv, "-vcodec",
 					"copy", alternateDownloadFullName };
 
 			returnLog.add(ProcessHelper.executeScript("alternateDownload", argv_alternateDownload));

Modified: openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/FLVRecorderService.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/FLVRecorderService.java?rev=1601201&r1=1601200&r2=1601201&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/FLVRecorderService.java (original)
+++ openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/FLVRecorderService.java Sun Jun  8 08:51:10 2014
@@ -25,6 +25,7 @@ import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 
+import org.apache.openmeetings.converter.BaseConverter;
 import org.apache.openmeetings.data.flvrecord.converter.FlvInterviewConverterTask;
 import org.apache.openmeetings.data.flvrecord.converter.FlvInterviewReConverterTask;
 import org.apache.openmeetings.data.flvrecord.converter.FlvRecorderConverterTask;
@@ -317,6 +318,13 @@ public class FLVRecorderService implemen
 				}
 			}
 
+			FlvRecordingMetaData metaData = metaDataDao.get(flvRecordingMetaDataId);
+			BaseConverter.printMetaInfo(metaData, "Stopping the stream");
+			// Manually call finish on the stream so that there is no endless loop waiting in the FlvRecorderConverter waiting for the stream to finish
+			// this would normally happen in the Listener
+			metaData.setStreamStatus(listenerAdapter == null && metaData.getStreamStatus() == Status.STARTED ? Status.STOPPED : Status.STOPPING);
+			log.debug("Stopping the stream :: New status == " + metaData.getStreamStatus());
+			metaDataDao.update(metaData);
 			if (listenerAdapter == null) {
 				log.debug("Stream Not Found :: " + flvRecordingMetaDataId);
 				log.debug("Available Streams :: " + streamListeners.size());
@@ -324,20 +332,7 @@ public class FLVRecorderService implemen
 				for (Long entryKey : streamListeners.keySet()) {
 					log.debug("Stored flvRecordingMetaDataId in Map: " + entryKey);
 				}
-
-				// Manually call finish on the stream so that there is no endless loop waiting
-				// in the FlvRecorderConverter waiting for the stream to finish
-				// this would normally happen in the Listener
-				FlvRecordingMetaData metaData = metaDataDao.get(flvRecordingMetaDataId);
-				if (metaData.getStreamStatus() == Status.STARTED) {
-					metaData.setStreamStatus(Status.STOPPED);
-					metaDataDao.update(metaData);
-				}
 				throw new IllegalStateException("Could not find Listener to stop! flvRecordingMetaDataId " + flvRecordingMetaDataId);
-			} else {
-				FlvRecordingMetaData metaData = metaDataDao.get(flvRecordingMetaDataId);
-				metaData.setStreamStatus(Status.STOPPING);
-				metaDataDao.update(metaData);
 			}
 
 			listenerAdapter.closeStream();

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=1601201&r1=1601200&r2=1601201&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 Sun Jun  8 08:51:10 2014
@@ -142,6 +142,17 @@ public abstract class BaseConverter {
 		return argv;
 	}
 	
+	public static void printMetaInfo(FlvRecordingMetaData metaData, String prefix) {
+		if (log.isDebugEnabled()) {
+			log.debug(String.format("### %s:: stream with id %s; current status: %s ", prefix, metaData.getFlvRecordingMetaDataId(), metaData.getStreamStatus()));
+			File metaDir = getStreamsSubDir(metaData.getFlvRecording().getRoom_id());
+			File metaFlv = new File(metaDir, metaData.getStreamName() + ".flv");
+			File metaSer = new File(metaDir, metaData.getStreamName() + ".flv.ser");
+			log.debug(String.format("### %:: Flv file [%s] exists ? %s; size: %s, lastModified: %s ", prefix, metaFlv.getPath(), metaFlv.exists(), metaFlv.length(), metaFlv.lastModified()));
+			log.debug(String.format("### %:: Ser file [%s] exists ? %s; size: %s, lastModified: %s ", prefix, metaSer.getPath(), metaSer.exists(), metaSer.length(), metaSer.lastModified()));
+		}
+	}
+	
 	protected FlvRecordingMetaData waitForTheStream(long metaId) throws InterruptedException {
 		FlvRecordingMetaData metaData = metaDataDao.get(metaId);
 		if (metaData.getStreamStatus() != Status.STOPPED) {
@@ -154,15 +165,11 @@ public abstract class BaseConverter {
 				metaData = metaDataDao.get(metaId);
 				
 				if (metaData.getStreamStatus() == Status.STOPPED) {
-					log.debug("### Stream now written Thread continue - " );
+					printMetaInfo(metaData, "Stream now written");
+					log.debug("### Thread continue ... " );
 					doWait = false;
 				} else if (++counter % 1000 == 0) {
-					log.debug(String.format("### Still waiting for the stream with id %s; current status: %s ", metaId, metaData.getStreamStatus()));
-					File metaDir = getStreamsSubDir(metaData.getFlvRecording().getRoom_id());
-					File metaFlv = new File(metaDir, metaData.getStreamName() + ".flv");
-					File metaSer = new File(metaDir, metaData.getStreamName() + ".flv.ser");
-					log.debug(String.format("### Still waiting:: Flv file [%s] exists ? %s; size: %s, lastModified: %s ", metaFlv.getPath(), metaFlv.exists(), metaFlv.length(), metaFlv.lastModified()));
-					log.debug(String.format("### Still waiting:: Ser file [%s] exists ? %s; size: %s, lastModified: %s ", metaSer.getPath(), metaSer.exists(), metaSer.length(), metaSer.lastModified()));
+					printMetaInfo(metaData, "Still waiting");
 				}
 				
 				Thread.sleep(100L);
@@ -202,7 +209,7 @@ public abstract class BaseConverter {
 	
 				metaData.setAudioIsValid(false);
 				if (inputFlvFile.exists()) {
-					String[] argv = new String[] {getPathToFFMPEG(), "-async", "1", "-i", inputFlvFile.getCanonicalPath(), outputWav};
+					String[] argv = new String[] {getPathToFFMPEG(), "-y", "-async", "1", "-i", inputFlvFile.getCanonicalPath(), outputWav};
 	
 					returnLog.add(ProcessHelper.executeScript("stripAudioFromFLVs", argv));
 	
@@ -301,7 +308,7 @@ public abstract class BaseConverter {
 		String path = file.getCanonicalPath();
 		String mp4path = path + MP4_EXTENSION;
 		String[] argv = new String[] {
-				getPathToFFMPEG(), //
+				getPathToFFMPEG(), "-y",
 				"-i", path,
 				"-c:v", "libx264",
 				"-crf", "24",
@@ -316,7 +323,7 @@ public abstract class BaseConverter {
 		returnLog.add(ProcessHelper.executeScript("generate MP4", argv));
 		
 		argv = new String[] {
-				getPathToFFMPEG(), //
+				getPathToFFMPEG(), "-y",
 				"-i", mp4path,
 				"-vcodec", "libtheora",
 				"-acodec", "libvorbis",

Modified: openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/FlvExplorerConverter.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/FlvExplorerConverter.java?rev=1601201&r1=1601200&r2=1601201&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/FlvExplorerConverter.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/FlvExplorerConverter.java Sun Jun  8 08:51:10 2014
@@ -85,7 +85,7 @@ public class FlvExplorerConverter extend
 
 			fileExplorerItem.setIsVideo(true);
 
-			String[] argv_fullFLV = new String[] { getPathToFFMPEG(), "-i", moviePath,
+			String[] argv_fullFLV = new String[] { getPathToFFMPEG(), "-y", "-i", moviePath,
 					"-ar", "22050", "-acodec", "libmp3lame", "-ab", "32k",
 					"-vcodec", "flv",
 					outputFullFlv.getCanonicalPath() };
@@ -110,7 +110,7 @@ public class FlvExplorerConverter extend
 
 			fileExplorerItem.setPreviewImage(hashFileFullNameJPEG);
 
-			String[] argv_previewFLV = new String[] { getPathToFFMPEG(), "-i",
+			String[] argv_previewFLV = new String[] { getPathToFFMPEG(), "-y", "-i",
 					outputFullFlv.getCanonicalPath(), "-vcodec", "mjpeg", "-vframes", "1", "-an",
 					"-f", "rawvideo", "-s", flvWidth + "x" + flvHeight,
 					outPutJpeg.getCanonicalPath() };

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=1601201&r1=1601200&r2=1601201&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 Sun Jun  8 08:51:10 2014
@@ -182,7 +182,7 @@ public class FlvInterviewConverter exten
 					 * CHECK FILE:
 					 * ffmpeg -i rec_316_stream_567_2013_08_28_11_51_45.flv -v error -f null file.null
 					 */ 
-					String[] args = new String[] {getPathToFFMPEG()
+					String[] args = new String[] {getPathToFFMPEG(), "-y"
 							, "-i", path
 							, "-an" // only input files with video will be treated as video sources
 							, "-v", "error"
@@ -206,6 +206,7 @@ public class FlvInterviewConverter exten
 			boolean shortest = false;
 			List<String> args = new ArrayList<String>();
 			args.add(getPathToFFMPEG());
+			args.add("-y"); 
 			for (int i = 0; i < 2; ++i) {
 				/*
 				 * INSERT BLANK INSTEAD OF BAD PAD:
@@ -260,7 +261,7 @@ public class FlvInterviewConverter exten
 			flvRecording.setPreviewImage(hashFileFullNameJPEG);
 
 			String[] argv_previewFLV = new String[] { //
-					getPathToFFMPEG(), //
+					getPathToFFMPEG(), "-y", //
 					"-i", outputFullFlv, //
 					"-vcodec", "mjpeg", //
 					"-vframes", "100", "-an", //
@@ -274,7 +275,7 @@ public class FlvInterviewConverter exten
 			String alternateDownloadFullName = new File(streamFolderGeneral, alternateDownloadName).getCanonicalPath();
 			deleteFileIfExists(alternateDownloadFullName);
 
-			String[] argv_alternateDownload = new String[] { getPathToFFMPEG(), "-i", outputFullFlv, alternateDownloadFullName };
+			String[] argv_alternateDownload = new String[] { getPathToFFMPEG(), "-y", "-i", outputFullFlv, alternateDownloadFullName };
 
 			returnLog.add(ProcessHelper.executeScript("alternateDownload", argv_alternateDownload));
 

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=1601201&r1=1601200&r2=1601201&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 Sun Jun  8 08:51:10 2014
@@ -135,7 +135,7 @@ public class FlvRecorderConverter extend
 			flvRecording.setFlvWidth(flvWidth);
 			flvRecording.setFlvHeight(flvHeight);
 
-			String[] argv_fullFLV = new String[] { getPathToFFMPEG(), //
+			String[] argv_fullFLV = new String[] { getPathToFFMPEG(), "-y",//
 					"-itsoffset", getDifference(screenMetaData.getRecordStart(), screenMetaData.getFlvRecording().getRecordStart()),
 					"-i", inputScreenFullFlv, "-i", outputFullWav, "-ar", "22050", //
 					"-acodec", "libmp3lame", //
@@ -160,7 +160,7 @@ public class FlvRecorderConverter extend
 			flvRecording.setPreviewImage(hashFileFullNameJPEG);
 
 			String[] argv_previewFLV = new String[] { //
-					getPathToFFMPEG(), //
+					getPathToFFMPEG(), "-y",//
 					"-i", outputFullFlv, //
 					"-vcodec", "mjpeg", //
 					"-vframes", "1", "-an", //
@@ -173,7 +173,7 @@ public class FlvRecorderConverter extend
 			String alternateDownloadName = "flvRecording_" + flvRecording.getFlvRecordingId() + ".avi";
 			String alternateDownloadFullName = streamFolderGeneralName + alternateDownloadName;
 
-			String[] argv_alternateDownload = new String[] { getPathToFFMPEG(), "-i", outputFullFlv, "-vcodec",
+			String[] argv_alternateDownload = new String[] { getPathToFFMPEG(), "-y", "-i", outputFullFlv, "-vcodec",
 					"copy", alternateDownloadFullName };
 
 			returnLog.add(ProcessHelper.executeScript("alternateDownload", argv_alternateDownload));

Modified: openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/FLVRecorderService.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/FLVRecorderService.java?rev=1601201&r1=1601200&r2=1601201&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/FLVRecorderService.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/FLVRecorderService.java Sun Jun  8 08:51:10 2014
@@ -24,6 +24,7 @@ import java.util.Date;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
+import org.apache.openmeetings.core.converter.BaseConverter;
 import org.apache.openmeetings.core.data.flvrecord.converter.FlvInterviewConverterTask;
 import org.apache.openmeetings.core.data.flvrecord.converter.FlvInterviewReConverterTask;
 import org.apache.openmeetings.core.data.flvrecord.converter.FlvRecorderConverterTask;
@@ -314,6 +315,13 @@ public class FLVRecorderService implemen
 				}
 			}
 
+			FlvRecordingMetaData metaData = metaDataDao.get(flvRecordingMetaDataId);
+			BaseConverter.printMetaInfo(metaData, "Stopping the stream");
+			// Manually call finish on the stream so that there is no endless loop waiting in the FlvRecorderConverter waiting for the stream to finish
+			// this would normally happen in the Listener
+			metaData.setStreamStatus(listenerAdapter == null && metaData.getStreamStatus() == Status.STARTED ? Status.STOPPED : Status.STOPPING);
+			log.debug("Stopping the stream :: New status == " + metaData.getStreamStatus());
+			metaDataDao.update(metaData);
 			if (listenerAdapter == null) {
 				log.debug("Stream Not Found :: " + flvRecordingMetaDataId);
 				log.debug("Available Streams :: " + streamListeners.size());
@@ -321,20 +329,7 @@ public class FLVRecorderService implemen
 				for (Long entryKey : streamListeners.keySet()) {
 					log.debug("Stored flvRecordingMetaDataId in Map: " + entryKey);
 				}
-
-				// Manually call finish on the stream so that there is no endless loop waiting
-				// in the FlvRecorderConverter waiting for the stream to finish
-				// this would normally happen in the Listener
-				FlvRecordingMetaData metaData = metaDataDao.get(flvRecordingMetaDataId);
-				if (metaData.getStreamStatus() == Status.STARTED) {
-					metaData.setStreamStatus(Status.STOPPED);
-					metaDataDao.update(metaData);
-				}
 				throw new IllegalStateException("Could not find Listener to stop! flvRecordingMetaDataId " + flvRecordingMetaDataId);
-			} else {
-				FlvRecordingMetaData metaData = metaDataDao.get(flvRecordingMetaDataId);
-				metaData.setStreamStatus(Status.STOPPING);
-				metaDataDao.update(metaData);
 			}
 
 			listenerAdapter.closeStream();