From b13af01383b8eaf4500e89b709975a7f00f87f8a Mon Sep 17 00:00:00 2001 From: tobias <thinkdifferent055@gmail.com> Date: Sun, 21 Nov 2021 21:29:11 +0100 Subject: [PATCH] #173 - Add null check for ffmpeg and ffprobe initialization --- .../plugin/content/util/FfmpegUtils.scala | 24 +++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/PlayWallPlugins/PlayWallPluginContentPlayer/src/main/scala/de/tobias/playpad/plugin/content/util/FfmpegUtils.scala b/PlayWallPlugins/PlayWallPluginContentPlayer/src/main/scala/de/tobias/playpad/plugin/content/util/FfmpegUtils.scala index d82c9a76..548b5531 100644 --- a/PlayWallPlugins/PlayWallPluginContentPlayer/src/main/scala/de/tobias/playpad/plugin/content/util/FfmpegUtils.scala +++ b/PlayWallPlugins/PlayWallPluginContentPlayer/src/main/scala/de/tobias/playpad/plugin/content/util/FfmpegUtils.scala @@ -8,6 +8,7 @@ import de.tobias.playpad.profile.Profile import javafx.util.Pair import net.bramp.ffmpeg.builder.FFmpegBuilder import net.bramp.ffmpeg.{FFmpeg, FFmpegExecutor, FFprobe} +import org.apache.commons.lang3.StringUtils import java.nio.file.{Files, Path} @@ -21,11 +22,26 @@ object FfmpegUtils { val profile = Profile.currentProfile() val contentPluginConfiguration = profile.getCustomSettings(ContentPluginMain.zoneConfigurationKey).asInstanceOf[ContentPlayerPluginConfiguration] - ffmpeg = new FFmpeg(contentPluginConfiguration.ffmpegExecutable) - ffprobe = new FFprobe(contentPluginConfiguration.ffprobeExecutable) + if (StringUtils.isNotEmpty(contentPluginConfiguration.ffmpegExecutable) && StringUtils.isNotEmpty(contentPluginConfiguration.ffprobeExecutable)) { + ffmpeg = new FFmpeg(contentPluginConfiguration.ffmpegExecutable) + ffprobe = new FFprobe(contentPluginConfiguration.ffprobeExecutable) + } + } + + def checkInitialization(): Boolean = { + if (ffprobe == null || ffmpeg == null) { + initialize() + + return ffprobe != null && ffmpeg != null + } + true } def getResolution(path: Path): Pair[Int, Int] = { + if (!checkInitialization()) { + return null + } + val probeResult = ffprobe.probe(path.toAbsolutePath.toString) val stream = probeResult.streams.head @@ -36,6 +52,10 @@ object FfmpegUtils { } def convertMediaVStack(path: Path): Unit = { + if (!checkInitialization()) { + return + } + val globalSettings = PlayPadPlugin.getInstance.getGlobalSettings val convertPath = globalSettings.getCachePath.resolve(path.getFileName + ".mp4") -- GitLab