diff --git a/apps/processer/src/main/kotlin/no/iktdev/mediaprocessing/processer/listeners/FfmpegTaskListener.kt b/apps/processer/src/main/kotlin/no/iktdev/mediaprocessing/processer/listeners/FfmpegTaskListener.kt index 9c58301c..75e10fd8 100644 --- a/apps/processer/src/main/kotlin/no/iktdev/mediaprocessing/processer/listeners/FfmpegTaskListener.kt +++ b/apps/processer/src/main/kotlin/no/iktdev/mediaprocessing/processer/listeners/FfmpegTaskListener.kt @@ -18,4 +18,10 @@ abstract class FfmpegTaskListener(taskType: TaskType): TaskListener(taskType) { } abstract fun buildFfmpeg(listener: Listener? = null, execPath: String, logDirectory: File): FFmpeg + + class FfmpegFailedException( + val logFile: File? = null, + message: String + ) : RuntimeException(message) + } \ No newline at end of file diff --git a/apps/processer/src/main/kotlin/no/iktdev/mediaprocessing/processer/listeners/SubtitleTaskListener.kt b/apps/processer/src/main/kotlin/no/iktdev/mediaprocessing/processer/listeners/SubtitleTaskListener.kt index 055a3ba3..7591c696 100644 --- a/apps/processer/src/main/kotlin/no/iktdev/mediaprocessing/processer/listeners/SubtitleTaskListener.kt +++ b/apps/processer/src/main/kotlin/no/iktdev/mediaprocessing/processer/listeners/SubtitleTaskListener.kt @@ -67,7 +67,10 @@ class SubtitleTaskListener( } result.run(arguments) if (result.result.resultCode != 0) { - return ProcesserExtractResultEvent(status = TaskStatus.Failed).producedFrom(task) + throw FfmpegFailedException( + logFile = result.logFile, + "FFmpeg worker returned non zero result code, was ${result.result.resultCode}" + ) } return ProcesserExtractResultEvent( @@ -89,7 +92,8 @@ class SubtitleTaskListener( TaskStatus.Cancelled -> "Canceled" else -> "" } - return ProcesserExtractResultEvent(null, status, error = message).producedFrom(task) + val logFile = if (exception is FfmpegFailedException) exception.logFile?.absolutePath else null + return ProcesserExtractResultEvent(null, status, error = message, logFile = logFile).producedFrom(task) } override fun buildFfmpeg(listener: FFmpeg.Listener?, execPath: String, logDirectory: File): FFmpeg { diff --git a/apps/processer/src/main/kotlin/no/iktdev/mediaprocessing/processer/listeners/VideoTaskListener.kt b/apps/processer/src/main/kotlin/no/iktdev/mediaprocessing/processer/listeners/VideoTaskListener.kt index 2f5ed4c7..d52a0390 100644 --- a/apps/processer/src/main/kotlin/no/iktdev/mediaprocessing/processer/listeners/VideoTaskListener.kt +++ b/apps/processer/src/main/kotlin/no/iktdev/mediaprocessing/processer/listeners/VideoTaskListener.kt @@ -74,10 +74,10 @@ class VideoTaskListener( } result.run(arguments) if (result.result.resultCode != 0) { - return ProcesserEncodeResultEvent( - status = TaskStatus.Failed, - logFile = result.logFile.absolutePath - ).producedFrom(task) + throw FfmpegFailedException( + logFile = result.logFile, + "FFmpeg worker returned non zero result code, was ${result.result.resultCode}" + ) } return ProcesserEncodeResultEvent( @@ -99,7 +99,8 @@ class VideoTaskListener( TaskStatus.Cancelled -> "Canceled" else -> "" } - return ProcesserEncodeResultEvent(null, null, status, error = message).producedFrom(task) + val logFile = if (exception is FfmpegFailedException) exception.logFile?.absolutePath else null + return ProcesserEncodeResultEvent(null, logFile, status, error = message).producedFrom(task) } val listener = object : FFmpeg.Listener {