package net.knarcraft.ffmpegconverter.converter; import net.knarcraft.ffmpegconverter.container.FFMpegCommand; import net.knarcraft.ffmpegconverter.container.StreamProbeResult; import net.knarcraft.ffmpegconverter.converter.module.ConverterModule; import net.knarcraft.ffmpegconverter.converter.module.DebugModule; import net.knarcraft.ffmpegconverter.converter.module.ModuleExecutor; import net.knarcraft.ffmpegconverter.converter.module.hardwarecoding.HardwareDecodeModule; import net.knarcraft.ffmpegconverter.converter.module.mapping.NthAudioStreamModule; import net.knarcraft.ffmpegconverter.converter.module.mapping.NthSubtitleStreamModule; import net.knarcraft.ffmpegconverter.converter.module.mapping.NthVideoStreamModule; import net.knarcraft.ffmpegconverter.converter.module.output.CopyAllModule; import net.knarcraft.ffmpegconverter.converter.module.output.SetOutputFileModule; import net.knarcraft.ffmpegconverter.utility.FFMpegHelper; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.List; /** * A transcoder which takes one of each stream from an MKV file and produces an MP4 file */ public class MKVToMP4Transcoder extends AbstractConverter { private final int videoStreamIndex; private final int audioStreamIndex; private final int subtitleStreamIndex; /** * Instantiates a new mkv to mp4 transcoder * * @param ffprobePath
Path/command to ffprobe.
* @param ffmpegPathPath/command to ffmpeg.
* @param audioStreamIndexThe relative index of the audio stream to use (0 or below selects the first)
* @param subtitleStreamIndexThe relative index of the subtitle stream to use (0 or below selects the first)
* @param videoStreamIndexThe relative index of the video stream to use (0 or below selects the first)
*/ public MKVToMP4Transcoder(String ffprobePath, String ffmpegPath, int audioStreamIndex, int subtitleStreamIndex, int videoStreamIndex) { super("mp4"); this.ffprobePath = ffprobePath; this.ffmpegPath = ffmpegPath; this.videoStreamIndex = videoStreamIndex; this.audioStreamIndex = audioStreamIndex; this.subtitleStreamIndex = subtitleStreamIndex; } @Override @NotNull public List