mirror of
https://github.com/aNNiMON/ffmpegbot
synced 2024-09-19 22:54:20 +03:00
Add contrast, gamma and saturation
This commit is contained in:
parent
3222624b1f
commit
856cd15358
@ -18,12 +18,14 @@ public class FFmpegCommandBuilder implements Visitor<MediaSession> {
|
||||
private final List<String> videoCommands;
|
||||
private final List<String> audioFilters;
|
||||
private final List<String> videoFilters;
|
||||
private final List<String> eq;
|
||||
|
||||
public FFmpegCommandBuilder() {
|
||||
audioCommands = new ArrayList<>();
|
||||
videoCommands = new ArrayList<>();
|
||||
audioFilters = new ArrayList<>();
|
||||
videoFilters = new ArrayList<>();
|
||||
eq = new ArrayList<>();
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -80,6 +82,27 @@ public class FFmpegCommandBuilder implements Visitor<MediaSession> {
|
||||
audioCommands.add("0:m:language:" + p.getValue());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(Contrast p, MediaSession input) {
|
||||
String value = p.getValue();
|
||||
if (value.equals("1")) return;
|
||||
eq.add("contrast=" + value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(Gamma p, MediaSession input) {
|
||||
String value = p.getValue();
|
||||
if (value.equals("1")) return;
|
||||
eq.add("gamma=" + value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(Saturation p, MediaSession input) {
|
||||
String value = p.getValue();
|
||||
if (value.equals("1")) return;
|
||||
eq.add("saturation=" + value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(SpeedFactor p, MediaSession input) {
|
||||
if (p.getValue().equals("1")) return;
|
||||
@ -148,6 +171,9 @@ public class FFmpegCommandBuilder implements Visitor<MediaSession> {
|
||||
}
|
||||
if (FileTypes.canContainVideo(session.getFileType())) {
|
||||
commands.addAll(videoCommands);
|
||||
if (!eq.isEmpty()) {
|
||||
videoFilters.add("eq=" + String.join(":", eq));
|
||||
}
|
||||
if (!videoFilters.isEmpty()) {
|
||||
commands.add("-vf");
|
||||
commands.add(String.join(",", videoFilters));
|
||||
|
@ -9,6 +9,9 @@ public interface Visitor<I> {
|
||||
void visit(AudioPitch p, I input);
|
||||
void visit(AudioVolume p, I input);
|
||||
void visit(AudioStreamByLanguage p, I input);
|
||||
void visit(Contrast p, I input);
|
||||
void visit(Gamma p, I input);
|
||||
void visit(Saturation p, I input);
|
||||
void visit(SpeedFactor p, I input);
|
||||
void visit(VideoBitrate p, I input);
|
||||
void visit(VideoScale p, I input);
|
||||
|
26
src/main/java/com/annimon/ffmpegbot/parameters/Contrast.java
Normal file
26
src/main/java/com/annimon/ffmpegbot/parameters/Contrast.java
Normal file
@ -0,0 +1,26 @@
|
||||
package com.annimon.ffmpegbot.parameters;
|
||||
|
||||
import com.annimon.ffmpegbot.commands.ffmpeg.Visitor;
|
||||
import java.util.List;
|
||||
|
||||
public class Contrast extends StringParameter {
|
||||
private static final List<String> VALUES = List.of(
|
||||
"0.4", "0.6", "0.8",
|
||||
"1", "1.2", "1.4", "1.6",
|
||||
"1.8", "2"
|
||||
);
|
||||
|
||||
public Contrast() {
|
||||
super("contrast", "Contrast", VALUES, "1");
|
||||
}
|
||||
|
||||
@Override
|
||||
public int defaultColumnsCount() {
|
||||
return 3;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <I> void accept(Visitor<I> visitor, I input) {
|
||||
visitor.visit(this, input);
|
||||
}
|
||||
}
|
26
src/main/java/com/annimon/ffmpegbot/parameters/Gamma.java
Normal file
26
src/main/java/com/annimon/ffmpegbot/parameters/Gamma.java
Normal file
@ -0,0 +1,26 @@
|
||||
package com.annimon.ffmpegbot.parameters;
|
||||
|
||||
import com.annimon.ffmpegbot.commands.ffmpeg.Visitor;
|
||||
import java.util.List;
|
||||
|
||||
public class Gamma extends StringParameter {
|
||||
private static final List<String> VALUES = List.of(
|
||||
"0.2", "0.4", "0.6", "0.8",
|
||||
"1", "1.2", "1.4", "1.6",
|
||||
"1.8", "2", "2.2", "2.4"
|
||||
);
|
||||
|
||||
public Gamma() {
|
||||
super("gamma", "Gamma", VALUES, "1");
|
||||
}
|
||||
|
||||
@Override
|
||||
public int defaultColumnsCount() {
|
||||
return 4;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <I> void accept(Visitor<I> visitor, I input) {
|
||||
visitor.visit(this, input);
|
||||
}
|
||||
}
|
@ -0,0 +1,26 @@
|
||||
package com.annimon.ffmpegbot.parameters;
|
||||
|
||||
import com.annimon.ffmpegbot.commands.ffmpeg.Visitor;
|
||||
import java.util.List;
|
||||
|
||||
public class Saturation extends StringParameter {
|
||||
private static final List<String> VALUES = List.of(
|
||||
"0", "0.25", "0.5", "0.75",
|
||||
"1", "1.25", "1.5", "1.75",
|
||||
"2", "2.25", "2.5", "3"
|
||||
);
|
||||
|
||||
public Saturation() {
|
||||
super("saturation", "Saturation", VALUES, "1");
|
||||
}
|
||||
|
||||
@Override
|
||||
public int defaultColumnsCount() {
|
||||
return 4;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <I> void accept(Visitor<I> visitor, I input) {
|
||||
visitor.visit(this, input);
|
||||
}
|
||||
}
|
@ -16,6 +16,9 @@ public class VideoResolver implements ParametersResolver {
|
||||
|
||||
if (hasVideo) {
|
||||
parameters.addAll(List.of(
|
||||
new Contrast(),
|
||||
new Gamma(),
|
||||
new Saturation(),
|
||||
new VideoBitrate(),
|
||||
new VideoScale(),
|
||||
new VideoFrameRate()
|
||||
|
Loading…
Reference in New Issue
Block a user