mirror of
https://github.com/overcuriousity/autopsy-flatpak.git
synced 2025-07-17 10:17:41 +00:00
Merge pull request #5726 from wschaeferB/6133-ChangeDefaultVideoThumb
6133 change default video thumb
This commit is contained in:
commit
b63c48905e
@ -23,7 +23,6 @@ import com.google.common.cache.CacheBuilder;
|
||||
import com.google.common.io.Files;
|
||||
import java.awt.Image;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.awt.image.RenderedImage;
|
||||
import java.io.IOException;
|
||||
import java.io.Reader;
|
||||
import java.nio.file.Paths;
|
||||
@ -95,6 +94,7 @@ class FileSearch {
|
||||
.build();
|
||||
private static final int PREVIEW_SIZE = 256;
|
||||
private static volatile TextSummarizer summarizerToUse = null;
|
||||
private static final BufferedImage VIDEO_DEFAULT_IMAGE = getDefaultVideoThumbnail();
|
||||
|
||||
/**
|
||||
* Run the file search and returns the SearchResults object for debugging.
|
||||
@ -456,6 +456,20 @@ class FileSearch {
|
||||
+ "AND blackboard_artifacts.obj_id IN (" + objIdList + ") "; // NON-NLS
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the default image to display when a thumbnail is not available.
|
||||
*
|
||||
* @return The default video thumbnail.
|
||||
*/
|
||||
private static BufferedImage getDefaultVideoThumbnail() {
|
||||
try {
|
||||
return ImageIO.read(ImageUtils.class.getResourceAsStream("/org/sleuthkit/autopsy/images/failedToCreateVideoThumb.png"));//NON-NLS
|
||||
} catch (IOException ex) {
|
||||
logger.log(Level.SEVERE, "Failed to load 'failed to create video' placeholder.", ex); //NON-NLS
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the video thumbnails for a file which exists in a
|
||||
* VideoThumbnailsWrapper and update the VideoThumbnailsWrapper to include
|
||||
@ -476,7 +490,6 @@ class FileSearch {
|
||||
cacheDirectory = null;
|
||||
logger.log(Level.WARNING, "Unable to get cache directory, video thumbnails will not be saved", ex);
|
||||
}
|
||||
|
||||
if (cacheDirectory == null || file.getMd5Hash() == null || !Paths.get(cacheDirectory, VIDEO_THUMBNAIL_DIR, file.getMd5Hash()).toFile().exists()) {
|
||||
java.io.File tempFile;
|
||||
try {
|
||||
@ -488,7 +501,7 @@ class FileSearch {
|
||||
0,
|
||||
0,
|
||||
0};
|
||||
thumbnailWrapper.setThumbnails(createDefaultThumbnailList(), framePositions);
|
||||
thumbnailWrapper.setThumbnails(createDefaultThumbnailList(VIDEO_DEFAULT_IMAGE), framePositions);
|
||||
return;
|
||||
}
|
||||
if (tempFile.exists() == false || tempFile.length() < file.getSize()) {
|
||||
@ -502,7 +515,7 @@ class FileSearch {
|
||||
0,
|
||||
0,
|
||||
0};
|
||||
thumbnailWrapper.setThumbnails(createDefaultThumbnailList(), framePositions);
|
||||
thumbnailWrapper.setThumbnails(createDefaultThumbnailList(VIDEO_DEFAULT_IMAGE), framePositions);
|
||||
return;
|
||||
}
|
||||
ContentUtils.writeToFile(file, tempFile, progress, null, true);
|
||||
@ -523,7 +536,7 @@ class FileSearch {
|
||||
0,
|
||||
0,
|
||||
0};
|
||||
thumbnailWrapper.setThumbnails(createDefaultThumbnailList(), framePositions);
|
||||
thumbnailWrapper.setThumbnails(createDefaultThumbnailList(VIDEO_DEFAULT_IMAGE), framePositions);
|
||||
return;
|
||||
}
|
||||
double fps = videoFile.get(5); // gets frame per second
|
||||
@ -535,7 +548,7 @@ class FileSearch {
|
||||
0,
|
||||
0,
|
||||
0};
|
||||
thumbnailWrapper.setThumbnails(createDefaultThumbnailList(), framePositions);
|
||||
thumbnailWrapper.setThumbnails(createDefaultThumbnailList(VIDEO_DEFAULT_IMAGE), framePositions);
|
||||
return;
|
||||
}
|
||||
if (Thread.interrupted()) {
|
||||
@ -544,7 +557,7 @@ class FileSearch {
|
||||
0,
|
||||
0,
|
||||
0};
|
||||
thumbnailWrapper.setThumbnails(createDefaultThumbnailList(), framePositions);
|
||||
thumbnailWrapper.setThumbnails(createDefaultThumbnailList(VIDEO_DEFAULT_IMAGE), framePositions);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -573,10 +586,10 @@ class FileSearch {
|
||||
logger.log(Level.WARNING, "Error seeking to " + framePositions[i] + "ms in {0}", file.getParentPath() + "/" + file.getName()); //NON-NLS
|
||||
// If we can't set the time, continue to the next frame position and try again.
|
||||
|
||||
videoThumbnails.add(ImageUtils.getDefaultThumbnail());
|
||||
videoThumbnails.add(VIDEO_DEFAULT_IMAGE);
|
||||
if (cacheDirectory != null) {
|
||||
try {
|
||||
ImageIO.write((RenderedImage) ImageUtils.getDefaultThumbnail(), THUMBNAIL_FORMAT,
|
||||
ImageIO.write(VIDEO_DEFAULT_IMAGE, THUMBNAIL_FORMAT,
|
||||
Paths.get(cacheDirectory, VIDEO_THUMBNAIL_DIR, file.getMd5Hash(), i + "-" + framePositions[i] + "." + THUMBNAIL_FORMAT).toFile()); //NON-NLS)
|
||||
} catch (IOException ex) {
|
||||
logger.log(Level.WARNING, "Unable to save default video thumbnail for " + file.getMd5Hash() + " at frame position " + framePositions[i], ex);
|
||||
@ -588,10 +601,10 @@ class FileSearch {
|
||||
if (!videoFile.read(imageMatrix)) {
|
||||
logger.log(Level.WARNING, "Error reading frame at " + framePositions[i] + "ms from {0}", file.getParentPath() + "/" + file.getName()); //NON-NLS
|
||||
// If the image is bad for some reason, continue to the next frame position and try again.
|
||||
videoThumbnails.add(ImageUtils.getDefaultThumbnail());
|
||||
videoThumbnails.add(VIDEO_DEFAULT_IMAGE);
|
||||
if (cacheDirectory != null) {
|
||||
try {
|
||||
ImageIO.write((RenderedImage) ImageUtils.getDefaultThumbnail(), THUMBNAIL_FORMAT,
|
||||
ImageIO.write(VIDEO_DEFAULT_IMAGE, THUMBNAIL_FORMAT,
|
||||
Paths.get(cacheDirectory, VIDEO_THUMBNAIL_DIR, file.getMd5Hash(), i + "-" + framePositions[i] + "." + THUMBNAIL_FORMAT).toFile()); //NON-NLS)
|
||||
} catch (IOException ex) {
|
||||
logger.log(Level.WARNING, "Unable to save default video thumbnail for " + file.getMd5Hash() + " at frame position " + framePositions[i], ex);
|
||||
@ -602,10 +615,10 @@ class FileSearch {
|
||||
}
|
||||
// If the image is empty, return since no buffered image can be created.
|
||||
if (imageMatrix.empty()) {
|
||||
videoThumbnails.add(ImageUtils.getDefaultThumbnail());
|
||||
videoThumbnails.add(VIDEO_DEFAULT_IMAGE);
|
||||
if (cacheDirectory != null) {
|
||||
try {
|
||||
ImageIO.write((RenderedImage) ImageUtils.getDefaultThumbnail(), THUMBNAIL_FORMAT,
|
||||
ImageIO.write(VIDEO_DEFAULT_IMAGE, THUMBNAIL_FORMAT,
|
||||
Paths.get(cacheDirectory, VIDEO_THUMBNAIL_DIR, file.getMd5Hash(), i + "-" + framePositions[i] + "." + THUMBNAIL_FORMAT).toFile()); //NON-NLS)
|
||||
} catch (IOException ex) {
|
||||
logger.log(Level.WARNING, "Unable to save default video thumbnail for " + file.getMd5Hash() + " at frame position " + framePositions[i], ex);
|
||||
@ -660,7 +673,7 @@ class FileSearch {
|
||||
videoFile.release(); // close the file}
|
||||
}
|
||||
} else {
|
||||
loadSavedThumbnails(cacheDirectory, thumbnailWrapper);
|
||||
loadSavedThumbnails(cacheDirectory, thumbnailWrapper, VIDEO_DEFAULT_IMAGE);
|
||||
}
|
||||
}
|
||||
|
||||
@ -674,7 +687,7 @@ class FileSearch {
|
||||
* information about the file and the thumbnails
|
||||
* associated with it.
|
||||
*/
|
||||
private static void loadSavedThumbnails(String cacheDirectory, VideoThumbnailsWrapper thumbnailWrapper) {
|
||||
private static void loadSavedThumbnails(String cacheDirectory, VideoThumbnailsWrapper thumbnailWrapper, BufferedImage failedVideoThumbImage) {
|
||||
int[] framePositions = new int[4];
|
||||
List<Image> videoThumbnails = new ArrayList<>();
|
||||
int thumbnailNumber = 0;
|
||||
@ -683,7 +696,7 @@ class FileSearch {
|
||||
try {
|
||||
videoThumbnails.add(ImageIO.read(Paths.get(cacheDirectory, VIDEO_THUMBNAIL_DIR, md5, fileName).toFile()));
|
||||
} catch (IOException ex) {
|
||||
videoThumbnails.add(ImageUtils.getDefaultThumbnail());
|
||||
videoThumbnails.add(failedVideoThumbImage);
|
||||
logger.log(Level.WARNING, "Unable to read saved video thumbnail " + fileName + " for " + md5, ex);
|
||||
}
|
||||
int framePos = Integer.valueOf(FilenameUtils.getBaseName(fileName).substring(2));
|
||||
@ -699,12 +712,12 @@ class FileSearch {
|
||||
*
|
||||
* @return List containing the default thumbnail.
|
||||
*/
|
||||
private static List<Image> createDefaultThumbnailList() {
|
||||
private static List<Image> createDefaultThumbnailList(BufferedImage failedVideoThumbImage) {
|
||||
List<Image> videoThumbnails = new ArrayList<>();
|
||||
videoThumbnails.add(ImageUtils.getDefaultThumbnail());
|
||||
videoThumbnails.add(ImageUtils.getDefaultThumbnail());
|
||||
videoThumbnails.add(ImageUtils.getDefaultThumbnail());
|
||||
videoThumbnails.add(ImageUtils.getDefaultThumbnail());
|
||||
videoThumbnails.add(failedVideoThumbImage);
|
||||
videoThumbnails.add(failedVideoThumbImage);
|
||||
videoThumbnails.add(failedVideoThumbImage);
|
||||
videoThumbnails.add(failedVideoThumbImage);
|
||||
return videoThumbnails;
|
||||
}
|
||||
|
||||
|
Binary file not shown.
After Width: | Height: | Size: 2.4 KiB |
Loading…
x
Reference in New Issue
Block a user