Fixed indexes

This commit is contained in:
Brage 2023-07-24 00:37:29 +02:00
parent 8ea7c4ce7e
commit 5e3a99c9a0
4 changed files with 13 additions and 10 deletions

View File

@ -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
}
}

View File

@ -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<String> {
val result = mutableListOf<String>()
result.addAll(listOf("-c:s", "copy"))
result.addAll(listOf("-map", "0:s:${subtitle.index}"))
result.addAll(listOf("-map", "0:s:$index"))
return result
}

View File

@ -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
}

View File

@ -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<ExtractWork> {
val subtitleStreams = SubtitleStreamSelector(streams.streams.filterIsInstance<SubtitleStream>())
val availableSubtitleStreams = streams.streams.filterIsInstance<SubtitleStream>()
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)