X-Git-Url: http://www2.svjatoslav.eu/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Fmeviz%2Fgrabmemcard%2FMain.java;h=aa8c42ba879d7bec7d258112fac7246350adb4aa;hb=304c3aace09cf8a96ec381dabc21725398e87b55;hp=d6d194c593b22d9b9fdb52a7acf355c8e8207852;hpb=7398fdf5927b4aa2314f5d21040205ae016086ab;p=meviz.git diff --git a/src/main/java/eu/svjatoslav/meviz/grabmemcard/Main.java b/src/main/java/eu/svjatoslav/meviz/grabmemcard/Main.java index d6d194c..aa8c42b 100755 --- a/src/main/java/eu/svjatoslav/meviz/grabmemcard/Main.java +++ b/src/main/java/eu/svjatoslav/meviz/grabmemcard/Main.java @@ -1,19 +1,14 @@ /* * Meviz - Various tools collection to work with multimedia. - * Copyright (C) 2012, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu + * Copyright (C) 2012 -- 2019, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu * * This program is free software; you can redistribute it and/or - * modify it under the terms of version 2 of the GNU General Public License - * as published by the Free Software Foundation. - */ + * modify it under the terms of version 3 of the GNU Lesser General Public License + * or later as published by the Free Software Foundation. +*/ package eu.svjatoslav.meviz.grabmemcard; -import java.io.File; -import java.io.IOException; -import java.util.Date; -import java.util.GregorianCalendar; - import eu.svjatoslav.commons.file.CommonPathResolver; import eu.svjatoslav.commons.file.FilePathParser; import eu.svjatoslav.meviz.Module; @@ -22,106 +17,109 @@ import eu.svjatoslav.meviz.encoder.EncodingOptions; import eu.svjatoslav.meviz.encoder.EncodingPlan; import eu.svjatoslav.meviz.encoder.EncodingTask; import eu.svjatoslav.meviz.encoder.converters.AbstractConverter; -import eu.svjatoslav.meviz.encoder.converters.AvconvVideo; +import eu.svjatoslav.meviz.encoder.converters.FFMpegVideo; + +import java.io.File; +import java.io.IOException; +import java.util.Date; +import java.util.GregorianCalendar; public class Main implements Module { - @Override - public String getDescription() { - return "Convenience helper to retrieve contents of inserted memory card."; - } + @Override + public String getDescription() { + return "Convenience helper to retrieve contents of inserted memory card."; + } - public File[] getDiskVideos(final File file) { - final String videosPath = file.getAbsolutePath() - + "/AVCHD/BDMV/STREAM/"; - final File videosDirectory = new File(videosPath); + private File[] getDiskVideos(final File file) { + final String videosPath = file.getAbsolutePath() + "/AVCHD/BDMV/STREAM/"; + final File videosDirectory = new File(videosPath); - if (!videosDirectory.exists()) - return new File[0]; + if (!videosDirectory.exists()) + return new File[0]; - return videosDirectory.listFiles(); - } + return videosDirectory.listFiles(); + } - public String getDoubleDigit(final int value) { - String valueString = Integer.toString(value); - if (valueString.length() == 1) - valueString = "0" + valueString; - return valueString; - }; + private String getDoubleDigit(final int value) { + String valueString = Integer.toString(value); + if (valueString.length() == 1) + valueString = "0" + valueString; + return valueString; + } - @Override - public String getModuleCommand() { - return "grabmemcard"; - } + private EncodingOptions getEncodingOptions() { + final EncodingOptions options = new EncodingOptions(); + options.setVideoBitrate(BitrateParameter.Bitrate.COPY); + options.setAudioBitrate(BitrateParameter.Bitrate.COPY); + return options; + } - @SuppressWarnings("deprecation") - public File getTargetDirectory() { - final Date now = new Date(); - final GregorianCalendar calendar = new GregorianCalendar(); + @Override + public String getModuleCommand() { + return "grabmemcard"; + } - final StringBuffer directoryName = new StringBuffer(); - directoryName.append(calendar.get(GregorianCalendar.YEAR) + "." - + getDoubleDigit(calendar.get(GregorianCalendar.MONTH) + 1) - + "." - + getDoubleDigit(calendar.get(GregorianCalendar.DAY_OF_MONTH)) - + " "); + @SuppressWarnings("deprecation") + private File getTargetDirectory() { + final Date now = new Date(); + final GregorianCalendar calendar = new GregorianCalendar(); - directoryName.append(getDoubleDigit(now.getHours()) + ":" - + getDoubleDigit(now.getMinutes()) + ":" - + getDoubleDigit(now.getSeconds())); + String directoryName = (calendar.get(GregorianCalendar.YEAR) + "." + getDoubleDigit(calendar.get(GregorianCalendar.MONTH) + 1) + + "." + getDoubleDigit(calendar.get(GregorianCalendar.DAY_OF_MONTH)) + " ") + + getDoubleDigit(now.getHours()) + ":" + getDoubleDigit(now.getMinutes()) + ":" + + getDoubleDigit(now.getSeconds()); - final String targetDirectoryPath = CommonPathResolver - .getDesktopDirectory().getAbsolutePath() - + "/" - + directoryName.toString() + "/"; + final String targetDirectoryPath = CommonPathResolver.getDesktopDirectory().getAbsolutePath() + "/" + + directoryName + "/"; - System.out.println("Target directory path: " + targetDirectoryPath); + System.out.println("Target directory path: " + targetDirectoryPath); - return new File(targetDirectoryPath); - } + return new File(targetDirectoryPath); + } - @Override - public void run(final String[] args) throws IOException { + private File getTargetFile(final File targetDirectory, final File sourceFile) { + // compute target file path + final StringBuilder targetFilePath = new StringBuilder(); + targetFilePath.append(targetDirectory.getAbsolutePath()); + targetFilePath.append("/"); + targetFilePath.append(FilePathParser.getFileNameWithoutExtension(sourceFile)); + targetFilePath.append(".mp4"); + return new File(targetFilePath.toString()); + } - final File targetDirectory = getTargetDirectory(); - targetDirectory.mkdirs(); + @Override + public void run(final String[] args) throws IOException { - final AbstractConverter converter = new AvconvVideo(); - final EncodingPlan encodingPlan = new EncodingPlan(); + final File targetDirectory = getTargetDirectory(); + targetDirectory.mkdirs(); - final String userName = System.getProperty("user.name"); + final AbstractConverter converter = new FFMpegVideo(); + final EncodingPlan encodingPlan = new EncodingPlan(); - final File file = new File("/media/" + userName + "/"); + final String userName = System.getProperty("user.name"); - for (final File insertedDisk : file.listFiles()) { - final File[] diskVideos = getDiskVideos(insertedDisk); + final File file = new File("/media/" + userName + "/"); - for (final File sourceFile : diskVideos) { + for (final File insertedDisk : file.listFiles()) { + final File[] diskVideos = getDiskVideos(insertedDisk); - // compute target file path - final StringBuffer targetFilePath = new StringBuffer(); - targetFilePath.append(targetDirectory.getAbsolutePath()); - targetFilePath.append("/"); - targetFilePath.append(FilePathParser - .getFileNameWithoutExtension(sourceFile)); - targetFilePath.append(".mp4"); - final File targetFile = new File(targetFilePath.toString()); + for (final File sourceFile : diskVideos) { - final EncodingTask encodingTask = new EncodingTask(sourceFile, - targetFile, converter); - encodingPlan.scheduleTask(encodingTask); - } - } + final File targetFile = getTargetFile(targetDirectory, sourceFile); - final EncodingOptions options = new EncodingOptions(); - options.setVideoBitrate(BitrateParameter.bitrate.COPY); + final EncodingTask encodingTask = new EncodingTask(sourceFile, targetFile, converter, "mp4"); + encodingTask.setUseTerminal(true); + encodingPlan.scheduleTask(encodingTask); + } + } - encodingPlan.execute(options); - } + encodingPlan.execute(getEncodingOptions()); + } - @Override - public void showCommandlineHelp() { - System.out.println("memory card grabber has no commandline options"); - } + @Override + public void showCommandlineHelp() { + System.out.println("memory card grabber has no commandline options"); + } }