1
0
mirror of https://github.com/aNNiMON/ffmpegbot synced 2024-09-19 22:54:20 +03:00

Add audio crystalizer

This commit is contained in:
aNNiMON 2024-06-30 22:22:47 +03:00
parent 5a94344a1f
commit 55d1eea1a6
6 changed files with 37 additions and 3 deletions

View File

@ -44,6 +44,14 @@ public class FFmpegCommandBuilder implements Visitor<MediaSession> {
audioCommands.add(p.getValue()); audioCommands.add(p.getValue());
} }
@Override
public void visit(AudioCrystalizer p, MediaSession input) {
if (discardAudio) return;
final String value = p.getValue();
if (value.isEmpty() || value.equals("0")) return;
audioFilters.add("crystalizer=" + value);
}
@Override @Override
public void visit(AudioEffect p, MediaSession input) { public void visit(AudioEffect p, MediaSession input) {
if (discardAudio) return; if (discardAudio) return;

View File

@ -5,6 +5,7 @@ import com.annimon.ffmpegbot.parameters.*;
public interface Visitor<I> { public interface Visitor<I> {
void visit(DisableAudio p, I input); void visit(DisableAudio p, I input);
void visit(AudioBitrate p, I input); void visit(AudioBitrate p, I input);
void visit(AudioCrystalizer p, I input);
void visit(AudioEffect p, I input); void visit(AudioEffect p, I input);
void visit(AudioPitch p, I input); void visit(AudioPitch p, I input);
void visit(AudioVolume p, I input); void visit(AudioVolume p, I input);

View File

@ -0,0 +1,24 @@
package com.annimon.ffmpegbot.parameters;
import com.annimon.ffmpegbot.commands.ffmpeg.Visitor;
import java.util.List;
public class AudioCrystalizer extends StringParameter {
private static final List<String> VALUES = List.of(
"-8", "-4", "-2", "0", "2", "4", "8"
);
public AudioCrystalizer() {
super("crystalizer", "Audio crystalizer", VALUES, "0");
}
@Override
public int defaultColumnsCount() {
return 4;
}
@Override
public <I> void accept(Visitor<I> visitor, I input) {
visitor.visit(this, input);
}
}

View File

@ -3,13 +3,13 @@ package com.annimon.ffmpegbot.parameters;
import java.util.List; import java.util.List;
public abstract class BooleanParameter extends Parameter<Boolean> { public abstract class BooleanParameter extends Parameter<Boolean> {
public BooleanParameter(String id, String name, Boolean value) { protected BooleanParameter(String id, String name, Boolean value) {
super(id, name, List.of(false, true), value); super(id, name, List.of(false, true), value);
} }
@Override @Override
public String describeValue(Boolean value) { public String describeValue(Boolean value) {
if (value) { if (value != null && value) {
return "ON"; return "ON";
} else { } else {
return "OFF"; return "OFF";

View File

@ -3,7 +3,7 @@ package com.annimon.ffmpegbot.parameters;
import java.util.List; import java.util.List;
public abstract class StringParameter extends Parameter<String> { public abstract class StringParameter extends Parameter<String> {
public StringParameter(String id, String name, List<String> possibleValues, String value) { protected StringParameter(String id, String name, List<String> possibleValues, String value) {
super(id, name, possibleValues, value); super(id, name, possibleValues, value);
} }
} }

View File

@ -20,6 +20,7 @@ public class AudioResolver implements ParametersResolver {
disableAudioParam(parameters, fileInfo.fileType()); disableAudioParam(parameters, fileInfo.fileType());
parameters.addAll(List.of( parameters.addAll(List.of(
new AudioBitrate(), new AudioBitrate(),
new AudioCrystalizer(),
new AudioEffect(), new AudioEffect(),
new AudioPitch(), new AudioPitch(),
new AudioVolume() new AudioVolume()