From 5e3a99c9a0b620e689813ff985ebab61c23c8520 Mon Sep 17 00:00:00 2001 From: Brage Date: Mon, 24 Jul 2023 00:37:29 +0200 Subject: [PATCH] Fixed indexes --- .../analyzer/encoding/dto/AudioEncodeArguments.kt | 4 ++-- .../analyzer/encoding/dto/SubtitleEncodeArguments.kt | 4 ++-- .../analyzer/encoding/dto/VideoEncodeArguments.kt | 4 ++-- .../encoding/helpers/EncodeArgumentSelector.kt | 11 +++++++---- 4 files changed, 13 insertions(+), 10 deletions(-) diff --git a/Reader/src/main/kotlin/no/iktdev/streamit/content/reader/analyzer/encoding/dto/AudioEncodeArguments.kt b/Reader/src/main/kotlin/no/iktdev/streamit/content/reader/analyzer/encoding/dto/AudioEncodeArguments.kt index 87c9c907..bf38c331 100644 --- a/Reader/src/main/kotlin/no/iktdev/streamit/content/reader/analyzer/encoding/dto/AudioEncodeArguments.kt +++ b/Reader/src/main/kotlin/no/iktdev/streamit/content/reader/analyzer/encoding/dto/AudioEncodeArguments.kt @@ -3,7 +3,7 @@ package no.iktdev.streamit.content.reader.analyzer.encoding.dto import no.iktdev.streamit.content.common.streams.AudioStream import no.iktdev.streamit.content.reader.preference -class AudioEncodeArguments(val audio: AudioStream) { +class AudioEncodeArguments(val audio: AudioStream, val index: Int) { fun isAudioCodecEqual() = audio.codec_name.lowercase() == preference.audio.codec.lowercase() @@ -18,7 +18,7 @@ class AudioEncodeArguments(val audio: AudioStream) { } else if (!isAudioCodecEqual()) { result.addAll(listOf("-c:a", preference.audio.codec)) } else result.addAll(listOf("-acodec", "copy")) - result.addAll(listOf("-map", "0:a:${audio.index}")) + result.addAll(listOf("-map", "0:a:${index}")) return result } } \ No newline at end of file diff --git a/Reader/src/main/kotlin/no/iktdev/streamit/content/reader/analyzer/encoding/dto/SubtitleEncodeArguments.kt b/Reader/src/main/kotlin/no/iktdev/streamit/content/reader/analyzer/encoding/dto/SubtitleEncodeArguments.kt index d4966f90..86c5b3d6 100644 --- a/Reader/src/main/kotlin/no/iktdev/streamit/content/reader/analyzer/encoding/dto/SubtitleEncodeArguments.kt +++ b/Reader/src/main/kotlin/no/iktdev/streamit/content/reader/analyzer/encoding/dto/SubtitleEncodeArguments.kt @@ -2,12 +2,12 @@ package no.iktdev.streamit.content.reader.analyzer.encoding.dto import no.iktdev.streamit.content.common.streams.SubtitleStream -class SubtitleEncodeArguments(val subtitle: SubtitleStream) { +class SubtitleEncodeArguments(val subtitle: SubtitleStream, val index: Int) { fun getSubtitleArguments(): List { val result = mutableListOf() result.addAll(listOf("-c:s", "copy")) - result.addAll(listOf("-map", "0:s:${subtitle.index}")) + result.addAll(listOf("-map", "0:s:$index")) return result } diff --git a/Reader/src/main/kotlin/no/iktdev/streamit/content/reader/analyzer/encoding/dto/VideoEncodeArguments.kt b/Reader/src/main/kotlin/no/iktdev/streamit/content/reader/analyzer/encoding/dto/VideoEncodeArguments.kt index 3bb1f34f..bad55ab8 100644 --- a/Reader/src/main/kotlin/no/iktdev/streamit/content/reader/analyzer/encoding/dto/VideoEncodeArguments.kt +++ b/Reader/src/main/kotlin/no/iktdev/streamit/content/reader/analyzer/encoding/dto/VideoEncodeArguments.kt @@ -3,7 +3,7 @@ package no.iktdev.streamit.content.reader.analyzer.encoding.dto import no.iktdev.streamit.content.common.streams.VideoStream import no.iktdev.streamit.content.reader.preference -class VideoEncodeArguments(val video: VideoStream) { +class VideoEncodeArguments(val video: VideoStream, val index: Int) { fun isVideoCodecEqual() = video.codec_name == getCorrectCodec() @@ -19,7 +19,7 @@ class VideoEncodeArguments(val video: VideoStream) { if (preference.video.pixelFormatPassthrough.none { it == video.pix_fmt }) { result.addAll(listOf("-pix_fmt", preference.video.pixelFormat)) } - result.addAll(listOf("-map", "0:v:${video.index}")) + result.addAll(listOf("-map", "0:v:${index}")) return result } diff --git a/Reader/src/main/kotlin/no/iktdev/streamit/content/reader/analyzer/encoding/helpers/EncodeArgumentSelector.kt b/Reader/src/main/kotlin/no/iktdev/streamit/content/reader/analyzer/encoding/helpers/EncodeArgumentSelector.kt index 90b8bc6d..99a46592 100644 --- a/Reader/src/main/kotlin/no/iktdev/streamit/content/reader/analyzer/encoding/helpers/EncodeArgumentSelector.kt +++ b/Reader/src/main/kotlin/no/iktdev/streamit/content/reader/analyzer/encoding/helpers/EncodeArgumentSelector.kt @@ -50,21 +50,24 @@ class EncodeArgumentSelector(val collection: String, val inputFile: String, val else { val outFileName = "$outFileName.mp4" val outFile = CommonConfig.outgoingContent.using(collection, outFileName) + val audioIndex = obtainAudioStreams().indexOf(selectedAudio) + val videoIndex = obtainVideoStreams().indexOf(selectedVideo) EncodeWork( collection = collection, inFile = inputFile, - arguments = VideoEncodeArguments(selectedVideo).getVideoArguments() + - AudioEncodeArguments(selectedAudio).getAudioArguments(), + arguments = VideoEncodeArguments(selectedVideo, videoIndex).getVideoArguments() + + AudioEncodeArguments(selectedAudio, audioIndex).getAudioArguments(), outFile = outFile.absolutePath ) } } fun getSubtitleArguments(): List { - val subtitleStreams = SubtitleStreamSelector(streams.streams.filterIsInstance()) + val availableSubtitleStreams = streams.streams.filterIsInstance() + val subtitleStreams = SubtitleStreamSelector(availableSubtitleStreams) return subtitleStreams.getDesiredStreams().map { - val args = SubtitleEncodeArguments(it) + val args = SubtitleEncodeArguments(it, availableSubtitleStreams.indexOf(it)) val language = it.tags.language ?: "eng" val outFileName = "$outFileName.${subtitleStreams.getFormatToCodec(it.codec_name)}" val outFile = CommonConfig.outgoingContent.using(collection, "sub", language, outFileName)