Skip to content
Snippets Groups Projects
Commit 21735aae authored by gnaegi's avatar gnaegi
Browse files

OO-2379 harden video manager and admin code

parent c9569b1f
No related branches found
No related tags found
No related merge requests found
...@@ -138,6 +138,7 @@ public class VideoModule extends AbstractSpringModule { ...@@ -138,6 +138,7 @@ public class VideoModule extends AbstractSpringModule {
log.info("video.coursenode.enabled=" + isCoursenodeEnabled()); log.info("video.coursenode.enabled=" + isCoursenodeEnabled());
log.info("video.transcoding.enabled=" + isTranscodingEnabled()); log.info("video.transcoding.enabled=" + isTranscodingEnabled());
log.info("video.transcoding.resolutions=" + Arrays.toString(getTranscodingResolutions())); log.info("video.transcoding.resolutions=" + Arrays.toString(getTranscodingResolutions()));
log.info("video.transcoding.resolution.preferred=" + getPreferredDefaultResolution());
log.info("video.transcoding.taskset.cpuconfig=" + getTranscodingTasksetConfig()); log.info("video.transcoding.taskset.cpuconfig=" + getTranscodingTasksetConfig());
log.info("video.transcoding.local=" + isTranscodingLocal()); log.info("video.transcoding.local=" + isTranscodingLocal());
......
...@@ -258,7 +258,7 @@ public class VideoManagerImpl implements VideoManager { ...@@ -258,7 +258,7 @@ public class VideoManagerImpl implements VideoManager {
ch.close(); ch.close();
return true; return true;
} catch (Exception e) { } catch (Exception | AssertionError e) {
log.error("Could not get frame::" + frameNumber + " for video::" + videoFile.getAbsolutePath(), e); log.error("Could not get frame::" + frameNumber + " for video::" + videoFile.getAbsolutePath(), e);
return false; return false;
} }
...@@ -309,7 +309,16 @@ public class VideoManagerImpl implements VideoManager { ...@@ -309,7 +309,16 @@ public class VideoManagerImpl implements VideoManager {
public VideoMetadata readVideoMetadataFile(OLATResource videoResource){ public VideoMetadata readVideoMetadataFile(OLATResource videoResource){
VFSContainer baseContainer= FileResourceManager.getInstance().getFileResourceRootImpl(videoResource); VFSContainer baseContainer= FileResourceManager.getInstance().getFileResourceRootImpl(videoResource);
VFSLeaf metaDataFile = VFSManager.resolveOrCreateLeafFromPath(baseContainer, FILENAME_VIDEO_METADATA_XML); VFSLeaf metaDataFile = VFSManager.resolveOrCreateLeafFromPath(baseContainer, FILENAME_VIDEO_METADATA_XML);
return (VideoMetadata) XStreamHelper.readObject(XStreamHelper.createXStreamInstance(), metaDataFile); try {
return (VideoMetadata) XStreamHelper.readObject(XStreamHelper.createXStreamInstance(), metaDataFile);
} catch (Exception e) {
log.error("Error while parsing XStream file for videoResource::" + videoResource, e);
// return an empty, so at least it displays something and not an error
VideoMetadata meta = new VideoMetadataImpl();
meta.setWidth(800);
meta.setHeight(600);
return meta;
}
} }
@Override @Override
...@@ -524,8 +533,8 @@ public class VideoManagerImpl implements VideoManager { ...@@ -524,8 +533,8 @@ public class VideoManagerImpl implements VideoManager {
metaData.setWidth(videoSize.getWidth()); metaData.setWidth(videoSize.getWidth());
metaData.setHeight(videoSize.getHeight()); metaData.setHeight(videoSize.getHeight());
} else { } else {
metaData.setWidth(600); metaData.setHeight(600);
metaData.setHeight(800); metaData.setWidth(800);
} }
// calculate video duration // calculate video duration
long duration = movieService.getDuration(targetFile, FILETYPE_MP4); long duration = movieService.getDuration(targetFile, FILETYPE_MP4);
......
...@@ -105,18 +105,22 @@ public class VideoAdminTranscodingController extends FormBasicController { ...@@ -105,18 +105,22 @@ public class VideoAdminTranscodingController extends FormBasicController {
} }
private boolean mayTranscode(int resolution){ private boolean mayTranscode(int resolution){
if (!videoModule.isTranscodingEnabled()) {
return false;
}
int[] transcodingRes = videoModule.getTranscodingResolutions(); int[] transcodingRes = videoModule.getTranscodingResolutions();
for (int i = 0; i < transcodingRes.length; i++) { for (int i = 0; i < transcodingRes.length; i++) {
if (resolution == transcodingRes[i] && videoModule.isTranscodingEnabled()){ if (resolution == transcodingRes[i]){
return Boolean.TRUE; return true;
} }
} }
return Boolean.FALSE; return false;
} }
private void loadTable(){ private void loadTable(){
//Hardcoded same as VideoAdminSetController //Hardcoded same as VideoAdminSetController
int[] resolution = {2160, 1080, 720, 480, 360, 240}; int[] resolution = {2160, 1080, 720, 480, 360, 240};
//FIXME:FK fetch using one single SQL query
for (int i = 0; i < resolution.length; i++) { for (int i = 0; i < resolution.length; i++) {
int sizeOfTranscodings = availableTranscodings.get(resolution[i]).size(); int sizeOfTranscodings = availableTranscodings.get(resolution[i]).size();
int counter = 0; int counter = 0;
...@@ -162,6 +166,7 @@ public class VideoAdminTranscodingController extends FormBasicController { ...@@ -162,6 +166,7 @@ public class VideoAdminTranscodingController extends FormBasicController {
} }
private void generateStatusOfTranscodings() { private void generateStatusOfTranscodings() {
//FIXME:FK fetch using one single SQL query
availableTranscodings = new HashMap<>(); availableTranscodings = new HashMap<>();
availableTranscodings.put(240, new HashSet<OLATResource>()); availableTranscodings.put(240, new HashSet<OLATResource>());
availableTranscodings.put(360, new HashSet<OLATResource>()); availableTranscodings.put(360, new HashSet<OLATResource>());
......
...@@ -72,7 +72,7 @@ public class VideoPosterSelectionForm extends BasicController { ...@@ -72,7 +72,7 @@ public class VideoPosterSelectionForm extends BasicController {
tmp.mkdirs(); tmp.mkdirs();
tmpContainer = new LocalFolderImpl(tmp); tmpContainer = new LocalFolderImpl(tmp);
long duration =1000; long duration = 1000;
File videoFile = videoManager.getVideoFile(videoResource); File videoFile = videoManager.getVideoFile(videoResource);
RandomAccessFile accessFile; RandomAccessFile accessFile;
...@@ -82,7 +82,7 @@ public class VideoPosterSelectionForm extends BasicController { ...@@ -82,7 +82,7 @@ public class VideoPosterSelectionForm extends BasicController {
FileChannelWrapper in = new FileChannelWrapper(ch); FileChannelWrapper in = new FileChannelWrapper(ch);
MP4Demuxer demuxer1 = new MP4Demuxer(in); MP4Demuxer demuxer1 = new MP4Demuxer(in);
duration = demuxer1.getVideoTrack().getFrameCount(); duration = demuxer1.getVideoTrack().getFrameCount();
} catch (Exception e) { } catch (Exception | AssertionError e) {
logError("Error while accessing master video::" + videoFile.getAbsolutePath(), e); logError("Error while accessing master video::" + videoFile.getAbsolutePath(), e);
} }
...@@ -103,7 +103,7 @@ public class VideoPosterSelectionForm extends BasicController { ...@@ -103,7 +103,7 @@ public class VideoPosterSelectionForm extends BasicController {
button.setUserObject(fileName); button.setUserObject(fileName);
generatedPosters.put(mediaUrl + "/" + fileName, String.valueOf(x)); generatedPosters.put(mediaUrl + "/" + fileName, String.valueOf(x));
} catch (Exception e) { } catch (Exception | AssertionError e) {
logError("Error while creating poster images for video::" + videoFile.getAbsolutePath(), e); logError("Error while creating poster images for video::" + videoFile.getAbsolutePath(), e);
} }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment