diff --git a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasks/event/ffmpeg/EncodeArgumentCreatorTask.kt b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasks/event/ffmpeg/EncodeArgumentCreatorTask.kt index d248fea8..eb88f598 100644 --- a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasks/event/ffmpeg/EncodeArgumentCreatorTask.kt +++ b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasks/event/ffmpeg/EncodeArgumentCreatorTask.kt @@ -46,12 +46,21 @@ class EncodeArgumentCreatorTask(@Autowired override var coordinator: Coordinator val baseInfo = events.findLast { it.data is BaseInfoPerformed }?.data as BaseInfoPerformed val readStreamsEvent = events.find { it.data is MediaStreamsParsePerformed }?.data as MediaStreamsParsePerformed val serializedParsedStreams = readStreamsEvent.streams + val videoInfoWrapper: VideoInfoPerformed? = events.findLast { it.data is VideoInfoPerformed }?.data as VideoInfoPerformed? + val videoInfo = videoInfoWrapper?.toValueObject() - val outDir = SharedConfig.outgoingContent.using(baseInfo.title) + if (videoInfoWrapper == null || videoInfo == null) { + log.error { "${KafkaEvents.EVENT_MEDIA_READ_OUT_NAME_AND_TYPE} result is read as null" } + return null + } + + + //val outDir = SharedConfig.outgoingContent.using(baseInfo.title) return getFfmpegVideoArguments( inputFile = inputFile.file, - outDir = outDir, + outFullName = videoInfo.fullName, + outDir = File(videoInfoWrapper.outDirectory), preference = preference.encodePreference, baseInfo = baseInfo, serializedParsedStreams = serializedParsedStreams @@ -60,12 +69,13 @@ class EncodeArgumentCreatorTask(@Autowired override var coordinator: Coordinator private fun getFfmpegVideoArguments( inputFile: String, + outFullName: String, outDir: File, preference: EncodingPreference, baseInfo: BaseInfoPerformed, serializedParsedStreams: ParsedMediaStreams ): MessageDataWrapper { - val outVideoFile = outDir.using("${baseInfo.sanitizedName}.mp4").absolutePath + val outVideoFile = outDir.using("${outFullName}.mp4").absolutePath val vaas = VideoAndAudioSelector(serializedParsedStreams, preference) diff --git a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasks/event/ffmpeg/ExtractArgumentCreatorTask.kt b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasks/event/ffmpeg/ExtractArgumentCreatorTask.kt index 45f96225..11d95d00 100644 --- a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasks/event/ffmpeg/ExtractArgumentCreatorTask.kt +++ b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasks/event/ffmpeg/ExtractArgumentCreatorTask.kt @@ -53,12 +53,18 @@ class ExtractArgumentCreatorTask(@Autowired override var coordinator: Coordinato val baseInfo = events.findLast { it.data is BaseInfoPerformed }?.data as BaseInfoPerformed val readStreamsEvent = events.find { it.data is MediaStreamsParsePerformed }?.data as MediaStreamsParsePerformed val serializedParsedStreams = readStreamsEvent.streams + val videoInfoWrapper: VideoInfoPerformed? = events.findLast { it.data is VideoInfoPerformed }?.data as VideoInfoPerformed? + val videoInfo = videoInfoWrapper?.toValueObject() - val outDir = SharedConfig.outgoingContent.using(baseInfo.title) + if (videoInfoWrapper == null || videoInfo == null) { + log.error { "${KafkaEvents.EVENT_MEDIA_READ_OUT_NAME_AND_TYPE} result is read as null" } + return null + } return getFfmpegSubtitleArguments( inputFile = inputFile.file, - outDir = outDir, + outFullName = videoInfo.fullName, + outDir = File(videoInfoWrapper.outDirectory), baseInfo = baseInfo, serializedParsedStreams = serializedParsedStreams ) @@ -66,6 +72,7 @@ class ExtractArgumentCreatorTask(@Autowired override var coordinator: Coordinato private fun getFfmpegSubtitleArguments( inputFile: String, + outFullName: String, outDir: File, baseInfo: BaseInfoPerformed, serializedParsedStreams: ParsedMediaStreams @@ -76,7 +83,7 @@ class ExtractArgumentCreatorTask(@Autowired override var coordinator: Coordinato val entries = sArg.map { FfmpegWorkerArgument( arguments = it.codecParameters + it.optionalParameters + listOf("-map", "0:s:${it.index}"), - outputFile = subRootDir.using(it.language, "${baseInfo.sanitizedName}.${it.format}").absolutePath + outputFile = subRootDir.using(it.language, "${outFullName}.${it.format}").absolutePath ) } return FfmpegWorkerArgumentsCreated( diff --git a/shared/kafka/src/main/kotlin/no/iktdev/mediaprocessing/shared/kafka/dto/events_result/VideoInfoPerformed.kt b/shared/kafka/src/main/kotlin/no/iktdev/mediaprocessing/shared/kafka/dto/events_result/VideoInfoPerformed.kt index 0ec9191a..d9eda56b 100644 --- a/shared/kafka/src/main/kotlin/no/iktdev/mediaprocessing/shared/kafka/dto/events_result/VideoInfoPerformed.kt +++ b/shared/kafka/src/main/kotlin/no/iktdev/mediaprocessing/shared/kafka/dto/events_result/VideoInfoPerformed.kt @@ -2,9 +2,12 @@ package no.iktdev.mediaprocessing.shared.kafka.dto.events_result import com.google.gson.Gson import com.google.gson.JsonObject +import no.iktdev.mediaprocessing.shared.kafka.core.KafkaBelongsToEvent +import no.iktdev.mediaprocessing.shared.kafka.core.KafkaEvents import no.iktdev.mediaprocessing.shared.kafka.dto.MessageDataWrapper import no.iktdev.mediaprocessing.shared.kafka.dto.Status +@KafkaBelongsToEvent(KafkaEvents.EVENT_MEDIA_READ_OUT_NAME_AND_TYPE) data class VideoInfoPerformed( override val status: Status, val info: JsonObject, @@ -43,6 +46,7 @@ data class SubtitleInfo( val language: String ) +@KafkaBelongsToEvent(KafkaEvents.EVENT_MEDIA_READ_OUT_NAME_AND_TYPE) open class VideoInfo( @Transient open val type: String, @Transient open val fullName: String