mirror of https://github.com/OpenVidu/openvidu.git
openvidu-server: recording stop process fix
parent
dd29173785
commit
a00c90423b
|
@ -378,15 +378,18 @@ public class ComposedRecordingService extends RecordingService {
|
||||||
|
|
||||||
// TODO: DOWNLOAD FILE IF SCALABILITY MODE
|
// TODO: DOWNLOAD FILE IF SCALABILITY MODE
|
||||||
final Recording[] finalRecordingArray = new Recording[1];
|
final Recording[] finalRecordingArray = new Recording[1];
|
||||||
|
finalRecordingArray[0] = recording;
|
||||||
try {
|
try {
|
||||||
this.recordingDownloader.downloadRecording(recording, null, () -> {
|
this.recordingDownloader.downloadRecording(finalRecordingArray[0], null, () -> {
|
||||||
String filesPath = this.openviduConfig.getOpenViduRecordingPath() + recording.getId() + "/";
|
String filesPath = this.openviduConfig.getOpenViduRecordingPath() + finalRecordingArray[0].getId()
|
||||||
File videoFile = new File(filesPath + recording.getName() + ".webm");
|
+ "/";
|
||||||
|
File videoFile = new File(filesPath + finalRecordingArray[0].getName() + ".webm");
|
||||||
long finalSize = videoFile.length();
|
long finalSize = videoFile.length();
|
||||||
double finalDuration = (double) compositeWrapper.getDuration() / 1000;
|
double finalDuration = (double) compositeWrapper.getDuration() / 1000;
|
||||||
this.updateFilePermissions(filesPath);
|
this.updateFilePermissions(filesPath);
|
||||||
finalRecordingArray[0] = this.sealRecordingMetadataFileAsReady(recording, finalSize, finalDuration,
|
finalRecordingArray[0] = this.sealRecordingMetadataFileAsReady(finalRecordingArray[0], finalSize,
|
||||||
filesPath + RecordingManager.RECORDING_ENTITY_FILE + recording.getId());
|
finalDuration,
|
||||||
|
filesPath + RecordingManager.RECORDING_ENTITY_FILE + finalRecordingArray[0].getId());
|
||||||
|
|
||||||
final long timestamp = System.currentTimeMillis();
|
final long timestamp = System.currentTimeMillis();
|
||||||
cdr.recordRecordingStopped(finalRecordingArray[0], reason, timestamp);
|
cdr.recordRecordingStopped(finalRecordingArray[0], reason, timestamp);
|
||||||
|
@ -394,15 +397,15 @@ public class ComposedRecordingService extends RecordingService {
|
||||||
finalRecordingArray[0].getStatus());
|
finalRecordingArray[0].getStatus());
|
||||||
});
|
});
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
log.error("Error while downloading recording {}: {}", recording.getName(), e.getMessage());
|
log.error("Error while downloading recording {}: {}", finalRecordingArray[0].getName(), e.getMessage());
|
||||||
}
|
}
|
||||||
Recording finalRecording = finalRecordingArray[0] != null ? finalRecordingArray[0] : recording;
|
|
||||||
|
|
||||||
if (reason != null && session != null) {
|
if (reason != null && session != null) {
|
||||||
this.recordingManager.sessionHandler.sendRecordingStoppedNotification(session, finalRecording, reason);
|
this.recordingManager.sessionHandler.sendRecordingStoppedNotification(session, finalRecordingArray[0],
|
||||||
|
reason);
|
||||||
}
|
}
|
||||||
|
|
||||||
return finalRecording;
|
return finalRecordingArray[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
private void waitForVideoFileNotEmpty(Recording recording) throws OpenViduException {
|
private void waitForVideoFileNotEmpty(Recording recording) throws OpenViduException {
|
||||||
|
|
|
@ -115,9 +115,10 @@ public abstract class RecordingService {
|
||||||
recording.setStatus(status);
|
recording.setStatus(status);
|
||||||
recording.setSize(size); // Size in bytes
|
recording.setSize(size); // Size in bytes
|
||||||
recording.setDuration(duration > 0 ? duration : 0); // Duration in seconds
|
recording.setDuration(duration > 0 ? duration : 0); // Duration in seconds
|
||||||
this.fileWriter.overwriteFile(metadataFilePath, recording.toJson().toString());
|
|
||||||
|
|
||||||
|
if (this.fileWriter.overwriteFile(metadataFilePath, recording.toJson().toString())) {
|
||||||
log.info("Sealed recording metadata file at {} with status [{}]", metadataFilePath, status.name());
|
log.info("Sealed recording metadata file at {} with status [{}]", metadataFilePath, status.name());
|
||||||
|
}
|
||||||
|
|
||||||
return recording;
|
return recording;
|
||||||
}
|
}
|
||||||
|
|
|
@ -162,15 +162,16 @@ public class SingleStreamRecordingService extends RecordingService {
|
||||||
|
|
||||||
// TODO: DOWNLOAD FILES IF SCALABILITY MODE
|
// TODO: DOWNLOAD FILES IF SCALABILITY MODE
|
||||||
final Recording[] finalRecordingArray = new Recording[1];
|
final Recording[] finalRecordingArray = new Recording[1];
|
||||||
|
finalRecordingArray[0] = recording;
|
||||||
try {
|
try {
|
||||||
this.recordingDownloader.downloadRecording(recording, wrappers.keySet(), () -> {
|
this.recordingDownloader.downloadRecording(finalRecordingArray[0], wrappers.keySet(), () -> {
|
||||||
// Update recording entity files with final file size
|
// Update recording entity files with final file size
|
||||||
for (RecorderEndpointWrapper wrapper : wrappers.values()) {
|
for (RecorderEndpointWrapper wrapper : wrappers.values()) {
|
||||||
if (wrapper.getSize() == 0) {
|
if (wrapper.getSize() == 0) {
|
||||||
updateIndividualMetadataFile(wrapper);
|
updateIndividualMetadataFile(wrapper);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
finalRecordingArray[0] = this.sealMetadataFiles(recording);
|
finalRecordingArray[0] = this.sealMetadataFiles(finalRecordingArray[0]);
|
||||||
|
|
||||||
final long timestamp = System.currentTimeMillis();
|
final long timestamp = System.currentTimeMillis();
|
||||||
cdr.recordRecordingStopped(finalRecordingArray[0], reason, timestamp);
|
cdr.recordRecordingStopped(finalRecordingArray[0], reason, timestamp);
|
||||||
|
@ -178,15 +179,15 @@ public class SingleStreamRecordingService extends RecordingService {
|
||||||
finalRecordingArray[0].getStatus());
|
finalRecordingArray[0].getStatus());
|
||||||
});
|
});
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
log.error("Error while downloading recording {}", recording.getName());
|
log.error("Error while downloading recording {}", finalRecordingArray[0].getName());
|
||||||
}
|
}
|
||||||
Recording finalRecording = finalRecordingArray[0] != null ? finalRecordingArray[0] : recording;
|
|
||||||
|
|
||||||
if (reason != null && session != null) {
|
if (reason != null && session != null) {
|
||||||
this.recordingManager.sessionHandler.sendRecordingStoppedNotification(session, finalRecording, reason);
|
this.recordingManager.sessionHandler.sendRecordingStoppedNotification(session, finalRecordingArray[0],
|
||||||
|
reason);
|
||||||
}
|
}
|
||||||
|
|
||||||
return finalRecording;
|
return finalRecordingArray[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
public void startRecorderEndpointForPublisherEndpoint(Session session, String recordingId,
|
public void startRecorderEndpointForPublisherEndpoint(Session session, String recordingId,
|
||||||
|
|
Loading…
Reference in New Issue