From 7d26ed564e4680a1bbd2ceca46c2746d1b6b745e Mon Sep 17 00:00:00 2001 From: Downforce Agent Date: Thu, 25 Jul 2024 11:19:11 -0500 Subject: [PATCH] exec FFMPEG and wipe ~/firestar/temp/ffmpeg per-song to avoid filling the disk when processing large playlists --- firestar/src/main/java/Suggs.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/firestar/src/main/java/Suggs.java b/firestar/src/main/java/Suggs.java index ab07187..267c540 100644 --- a/firestar/src/main/java/Suggs.java +++ b/firestar/src/main/java/Suggs.java @@ -412,7 +412,6 @@ public class Suggs implements ActionListener, ListSelectionListener { PrintStream ps = new PrintStream(fos); ps.println("fscript 1"); ps.println("# AUTOGENERATED BY FIRESTAR"); - new File(Main.inpath + "temp/ffmpeg/").mkdirs(); for (int i = 0; i < tracklist.size(); i++) { AudioTrack at = tracklist.get(i); String trackno = String.format("%02d", i+1); @@ -435,17 +434,20 @@ public class Suggs implements ActionListener, ListSelectionListener { try { System.out.println("Encoding track #" + (i+1) + " \"" + oArtist + " - " + oTitle + "\"..."); if (!at.path.getName().endsWith(".wav") && !at.path.getName().endsWith(".wave")) { // convert to WAV first if it's not readable by at9tool yet + new File(Main.inpath + "temp/ffmpeg/").mkdirs(); Process p = Main.exec(new String[]{Main.inpath + "ffmpeg.exe", "-y", "-i", at.path.getPath(), "ffmpeg/" + at.path.getName() + ".wav"}, Main.inpath + "temp/"); p.waitFor(); at.path = new File(Main.inpath + "temp/ffmpeg/" + at.path.getName() + ".wav"); } if (normalizeVolumes) { // normalize tracks + new File(Main.inpath + "temp/ffmpeg/").mkdirs(); Process p = Main.exec(new String[]{Main.inpath + "ffmpeg.exe", "-y", "-i", at.path.getPath(), "-filter", "loudnorm=linear=true:i=-5.0:lra=7.0:tp=0.0", /* force sample rate to prevent Random Stupid Bullshitâ„¢ */"-ar", "44100", "ffmpeg/" + at.path.getName() + "_normalized.wav"}, Main.inpath + "temp/"); p.waitFor(); at.path = new File(Main.inpath + "temp/ffmpeg/" + at.path.getName() + "_normalized.wav"); } Process p = Main.exec(new String[]{Main.inpath + "at9tool.exe", "-e", "-br", "144", at.path.getPath(), "data/audio/music/" + trackno + "/music_stereo.at9"}, Main.inpath + "temp/"); p.waitFor(); + Main.deleteDir(new File(Main.inpath + "temp/ffmpeg/")); } catch (IOException | InterruptedException ex) { Logger.getLogger(Suggs.class.getName()).log(Level.SEVERE, null, ex); } @@ -499,11 +501,13 @@ public class Suggs implements ActionListener, ListSelectionListener { try { System.out.println("Encoding singleplayer frontend track..."); if (!sptrack.getName().endsWith(".wav") && !sptrack.getName().endsWith(".wave")) { // convert to WAV first if it's not readable by at9tool yet + new File(Main.inpath + "temp/ffmpeg/").mkdirs(); Process p = Main.exec(new String[]{Main.inpath + "ffmpeg.exe", "-y", "-i", sptrack.getPath(), "ffmpeg/" + sptrack.getName() + ".wav"}, Main.inpath + "temp/"); p.waitFor(); sptrack = new File(Main.inpath + "temp/ffmpeg/" + sptrack.getName() + ".wav"); } if (normalizeVolumes) { // normalize tracks + new File(Main.inpath + "temp/ffmpeg/").mkdirs(); Process p = Main.exec(new String[]{Main.inpath + "ffmpeg.exe", "-y", "-i", sptrack.getPath(), "-filter", "loudnorm=linear=true:i=-10.0:lra=12.0:tp=-2.0", /* force sample rate to prevent Random Stupid Bullshitâ„¢ */"-ar", "44100", "ffmpeg/" + sptrack.getName() + "_normalized.wav"}, Main.inpath + "temp/"); p.waitFor(); sptrack = new File(Main.inpath + "temp/ffmpeg/" + sptrack.getName() + "_normalized.wav"); @@ -511,6 +515,7 @@ public class Suggs implements ActionListener, ListSelectionListener { new File(Main.inpath + "temp/data/audio/music/FEMusic").mkdirs(); Process p = Main.exec(new String[]{Main.inpath + "at9tool.exe", "-e", "-br", "144", sptrack.getPath(), "data/audio/music/FEMusic/frontend_stereo.at9"}, System.getProperty("user.home") + "/.firestar/temp/"); p.waitFor(); + Main.deleteDir(new File(Main.inpath + "temp/ffmpeg/")); } catch (IOException | InterruptedException ex) { Logger.getLogger(Suggs.class.getName()).log(Level.SEVERE, null, ex); } @@ -524,11 +529,13 @@ public class Suggs implements ActionListener, ListSelectionListener { assert(mptrack.exists()); System.out.println("Encoding multiplayer frontend track..."); if (!mptrack.getName().endsWith(".wav") && !mptrack.getName().endsWith(".wave")) { // convert to WAV first if it's not readable by at9tool yet + new File(Main.inpath + "temp/ffmpeg/").mkdirs(); Process p = Main.exec(new String[]{Main.inpath + "ffmpeg.exe", "-y", "-i", mptrack.getPath(), "ffmpeg/" + mptrack.getName() + ".wav"}, Main.inpath + "temp/"); p.waitFor(); mptrack = new File(Main.inpath + "temp/ffmpeg/" + mptrack.getName() + ".wav"); } if (normalizeVolumes) { // normalize tracks + new File(Main.inpath + "temp/ffmpeg/").mkdirs(); Process p = Main.exec(new String[]{Main.inpath + "ffmpeg.exe", "-y", "-i", mptrack.getPath(), "-filter", "loudnorm=linear=true:i=-10.0:lra=12.0:tp=-2.0", /* force sample rate to prevent Random Stupid Bullshitâ„¢ */"-ar", "44100", "ffmpeg/" + mptrack.getName() + "_normalized.wav"}, Main.inpath + "temp/"); p.waitFor(); mptrack = new File(Main.inpath + "temp/ffmpeg/" + mptrack.getName() + "_normalized.wav"); @@ -536,6 +543,7 @@ public class Suggs implements ActionListener, ListSelectionListener { new File(Main.inpath + "temp/data/audio/music/FEDemoMusic").mkdirs(); Process p = Main.exec(new String[]{Main.inpath + "at9tool.exe", "-e", "-br", "144", mptrack.getPath(), "data/audio/music/FEDemoMusic/frontend_stereo.at9"}, System.getProperty("user.home") + "/.firestar/temp/"); p.waitFor(); + Main.deleteDir(new File(Main.inpath + "temp/ffmpeg/")); } catch (IOException | InterruptedException ex) { Logger.getLogger(Suggs.class.getName()).log(Level.SEVERE, null, ex); } @@ -602,7 +610,6 @@ public class Suggs implements ActionListener, ListSelectionListener { progressDialog.destroyDialog(); frame.dispose(); - Main.deleteDir(new File(Main.inpath + "temp/ffmpeg/")); Clifford saveDialog = new Clifford(); saveDialog.isSoundtrack = true; saveDialog.Action(frame, new File(Main.inpath + "temp/"));