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.common.streams.AudioStream
|
||||||
import no.iktdev.streamit.content.reader.preference
|
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()
|
fun isAudioCodecEqual() = audio.codec_name.lowercase() == preference.audio.codec.lowercase()
|
||||||
|
|
||||||
@ -18,7 +18,7 @@ class AudioEncodeArguments(val audio: AudioStream) {
|
|||||||
} else if (!isAudioCodecEqual()) {
|
} else if (!isAudioCodecEqual()) {
|
||||||
result.addAll(listOf("-c:a", preference.audio.codec))
|
result.addAll(listOf("-c:a", preference.audio.codec))
|
||||||
} else result.addAll(listOf("-acodec", "copy"))
|
} else result.addAll(listOf("-acodec", "copy"))
|
||||||
result.addAll(listOf("-map", "0:a:${audio.index}"))
|
result.addAll(listOf("-map", "0:a:${index}"))
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2,12 +2,12 @@ package no.iktdev.streamit.content.reader.analyzer.encoding.dto
|
|||||||
|
|
||||||
import no.iktdev.streamit.content.common.streams.SubtitleStream
|
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> {
|
fun getSubtitleArguments(): List<String> {
|
||||||
val result = mutableListOf<String>()
|
val result = mutableListOf<String>()
|
||||||
result.addAll(listOf("-c:s", "copy"))
|
result.addAll(listOf("-c:s", "copy"))
|
||||||
result.addAll(listOf("-map", "0:s:${subtitle.index}"))
|
result.addAll(listOf("-map", "0:s:$index"))
|
||||||
return result
|
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.common.streams.VideoStream
|
||||||
import no.iktdev.streamit.content.reader.preference
|
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()
|
fun isVideoCodecEqual() = video.codec_name == getCorrectCodec()
|
||||||
|
|
||||||
@ -19,7 +19,7 @@ class VideoEncodeArguments(val video: VideoStream) {
|
|||||||
if (preference.video.pixelFormatPassthrough.none { it == video.pix_fmt }) {
|
if (preference.video.pixelFormatPassthrough.none { it == video.pix_fmt }) {
|
||||||
result.addAll(listOf("-pix_fmt", preference.video.pixelFormat))
|
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
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -50,21 +50,24 @@ class EncodeArgumentSelector(val collection: String, val inputFile: String, val
|
|||||||
else {
|
else {
|
||||||
val outFileName = "$outFileName.mp4"
|
val outFileName = "$outFileName.mp4"
|
||||||
val outFile = CommonConfig.outgoingContent.using(collection, outFileName)
|
val outFile = CommonConfig.outgoingContent.using(collection, outFileName)
|
||||||
|
val audioIndex = obtainAudioStreams().indexOf(selectedAudio)
|
||||||
|
val videoIndex = obtainVideoStreams().indexOf(selectedVideo)
|
||||||
EncodeWork(
|
EncodeWork(
|
||||||
collection = collection,
|
collection = collection,
|
||||||
inFile = inputFile,
|
inFile = inputFile,
|
||||||
arguments = VideoEncodeArguments(selectedVideo).getVideoArguments() +
|
arguments = VideoEncodeArguments(selectedVideo, videoIndex).getVideoArguments() +
|
||||||
AudioEncodeArguments(selectedAudio).getAudioArguments(),
|
AudioEncodeArguments(selectedAudio, audioIndex).getAudioArguments(),
|
||||||
outFile = outFile.absolutePath
|
outFile = outFile.absolutePath
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getSubtitleArguments(): List<ExtractWork> {
|
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 {
|
return subtitleStreams.getDesiredStreams().map {
|
||||||
val args = SubtitleEncodeArguments(it)
|
val args = SubtitleEncodeArguments(it, availableSubtitleStreams.indexOf(it))
|
||||||
val language = it.tags.language ?: "eng"
|
val language = it.tags.language ?: "eng"
|
||||||
val outFileName = "$outFileName.${subtitleStreams.getFormatToCodec(it.codec_name)}"
|
val outFileName = "$outFileName.${subtitleStreams.getFormatToCodec(it.codec_name)}"
|
||||||
val outFile = CommonConfig.outgoingContent.using(collection, "sub", language, outFileName)
|
val outFile = CommonConfig.outgoingContent.using(collection, "sub", language, outFileName)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user