Adds a new type of anime converter and stuff
Some checks failed
KnarCraft/FFmpegConvert/pipeline/head There was a failure building this commit
Some checks failed
KnarCraft/FFmpegConvert/pipeline/head There was a failure building this commit
Adds a new type of anime converter that retains all streams, but converts the video to hevc, and re-orders the streams Adds support for several types of encoding hardware acceleration that are automatically disabled if not available on the system. Adds automatic hardware decoding acceleration. Automatically removes empty files if ffmpeg fails.
This commit is contained in:
@ -5,9 +5,11 @@ 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.AddStereoAudioStreamModule;
|
||||
import net.knarcraft.ffmpegconverter.converter.module.mapping.BurnSubtitleModule;
|
||||
import net.knarcraft.ffmpegconverter.converter.module.mapping.SelectSingleStreamModule;
|
||||
import net.knarcraft.ffmpegconverter.converter.module.output.SetOutputFileModule;
|
||||
import net.knarcraft.ffmpegconverter.converter.sorter.AudioLanguageSorter;
|
||||
import net.knarcraft.ffmpegconverter.converter.sorter.MinimalSubtitleSorter;
|
||||
import net.knarcraft.ffmpegconverter.converter.sorter.StreamSorter;
|
||||
@ -67,13 +69,12 @@ public class WebAnimeConverter extends AbstractConverter {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String[] generateConversionCommand(@NotNull String executable, @NotNull StreamProbeResult probeResult,
|
||||
@NotNull String outFile) {
|
||||
public FFMpegCommand generateConversionCommand(@NotNull String executable, @NotNull StreamProbeResult probeResult,
|
||||
@NotNull String outFile) {
|
||||
FFMpegCommand command = FFMpegHelper.getFFMpegWebVideoCommand(executable, probeResult.parsedFiles());
|
||||
List<ConverterModule> modules = new ArrayList<>();
|
||||
if (this.debug) {
|
||||
modules.add(new DebugModule(0, 0));
|
||||
FFMpegHelper.addDebugArguments(command, 50, 120);
|
||||
}
|
||||
|
||||
//Get the first audio stream in accordance with chosen languages
|
||||
@ -98,6 +99,7 @@ public class WebAnimeConverter extends AbstractConverter {
|
||||
SubtitleStream subtitleStream = getNthSteam(subtitleSorter.chainSort(probeResult.getSubtitleStreams()),
|
||||
this.forcedSubtitleIndex);
|
||||
|
||||
modules.add(new HardwareDecodeModule());
|
||||
if (subtitleStream != null && videoStream != null) {
|
||||
modules.add(new BurnSubtitleModule(subtitleStream, videoStream, true));
|
||||
} else if (videoStream != null) {
|
||||
@ -105,10 +107,10 @@ public class WebAnimeConverter extends AbstractConverter {
|
||||
} else {
|
||||
throw new IllegalArgumentException("The selected video stream does not exist!");
|
||||
}
|
||||
modules.add(new SetOutputFileModule(outFile));
|
||||
|
||||
new ModuleExecutor(command, modules).execute();
|
||||
command.setOutputFile(outFile);
|
||||
return command.getResult();
|
||||
return command;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
Reference in New Issue
Block a user