2 package saccubus.properties;
5 import java.util.Properties;
6 import saccubus.converter.profile.FfmpegOption;
12 public class MovieSetting {
14 private static final String PROP_FFMPEG_PATH = "FFnpegPath";
15 private static final String PROP_VHOOK_PATH = "VhookPath";
16 private static final String PROP_OPTION_FILE = "OptionFile";
17 private static final String PROP_CMDLINE_EXT = "CMD_EXT";
18 private static final String PROP_CMDLINE_MAIN = "CMD_MAIN";
19 private static final String PROP_CMDLINE_IN = "CMD_IN";
20 private static final String PROP_CMDLINE_OUT = "CMD_OUT";
21 private static final String PROP_CMDLINE_AVFILTER = "CMD_AVFILTER";
22 private static final String PROP_RESIZE = "CMD_RESIZE";
23 private static final String PROP_RESIZE_WIDTH = "CMD_RESIZE_WIDTH";
24 private static final String PROP_RESIZE_HEIGHT = "CMD_RESIZE_HEIGHT";
25 private static final String PROP_ADJUST_RATIO = "CMD_ADJUST_RATIO";
26 private static final String PROP_PADDING ="CMD_PADDING";
27 private final File ffmpeg;
28 private final File vhook;
29 private final File optionFile;
30 private final FfmpegOption ffmpegOption;
32 public MovieSetting(File ffmpeg, File vhook, File optionFile, FfmpegOption ffmpegOption) {
35 this.optionFile = optionFile;
36 this.ffmpegOption = ffmpegOption;
39 public File getFfmpeg() {
43 public File getVhook() {
47 public File getOptionFile() {
51 public FfmpegOption getFfmpegOption() {
55 public void save(Properties prop) {
56 prop.setProperty(PROP_FFMPEG_PATH, getFfmpeg().getPath());
57 prop.setProperty(PROP_VHOOK_PATH, getVhook().getPath());
58 prop.setProperty(PROP_CMDLINE_EXT, getFfmpegOption().getExtOption());
59 prop.setProperty(PROP_CMDLINE_MAIN, getFfmpegOption().getMainOption());
60 prop.setProperty(PROP_CMDLINE_IN, getFfmpegOption().getInOption());
61 prop.setProperty(PROP_CMDLINE_OUT, getFfmpegOption().getOutOption());
62 prop.setProperty(PROP_CMDLINE_AVFILTER, getFfmpegOption().getAvfilterOption());
63 prop.setProperty(PROP_RESIZE, Boolean.toString(getFfmpegOption().isResize()));
64 prop.setProperty(PROP_RESIZE_WIDTH, Integer.toString(getFfmpegOption().getResizeWidth()));
65 prop.setProperty(PROP_RESIZE_HEIGHT, Integer.toString(getFfmpegOption().getResizeHeight()));
66 prop.setProperty(PROP_ADJUST_RATIO, Boolean.toString(getFfmpegOption().isAdjustRatio()));
67 prop.setProperty(PROP_PADDING, Boolean.toString(getFfmpegOption().isPadding()));
68 if (getOptionFile() != null) {
69 prop.setProperty(PROP_OPTION_FILE, getOptionFile().getPath());
71 prop.remove(PROP_OPTION_FILE);
75 public static MovieSetting load(Properties prop) {
76 String name = prop.getProperty(PROP_OPTION_FILE);
77 File optionFile = null;
79 optionFile = new File(name);
82 String ffmpeg = prop.getProperty(PROP_FFMPEG_PATH, new File("bin", "ffmpeg.exe").getPath());
83 String vhook = prop.getProperty(PROP_VHOOK_PATH, new File("bin", "nicovideo.dll").getPath());
84 String ext = prop.getProperty(PROP_CMDLINE_EXT, ".m4v");
85 String main = prop.getProperty(PROP_CMDLINE_MAIN, "");
86 String in = prop.getProperty(PROP_CMDLINE_IN, "");
87 String out = prop.getProperty(PROP_CMDLINE_OUT,
88 "-f ipod -g 150 -qcomp 0.7 -qmin 20 -qmax 30 -qdiff 4 -subq 6 -me_range 16 -i_qfactor 0.714286");
89 String avfilter = prop.getProperty(PROP_CMDLINE_AVFILTER, "");
90 boolean resize = Boolean.getBoolean(prop.getProperty(PROP_RESIZE,"false"));
91 String width = prop.getProperty(PROP_RESIZE_WIDTH, "512");
92 String height = prop.getProperty(PROP_RESIZE_HEIGHT, "384");
93 boolean adjust = Boolean.getBoolean(prop.getProperty(PROP_ADJUST_RATIO,"false"));
94 boolean pad = Boolean.getBoolean(prop.getProperty(PROP_PADDING, "false"));
95 FfmpegOption opt = new FfmpegOption(ext, main, in, out, avfilter, resize, width, height, adjust, pad);
97 return new MovieSetting(new File(ffmpeg), new File(vhook), optionFile, opt);