Fixed indexes
This commit is contained in:
parent
8ea7c4ce7e
commit
5e3a99c9a0
@ -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
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
|
||||
|
||||
@ -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
|
||||
}
|
||||
|
||||
|
||||
@ -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)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user