Ich versuche, eine Audiodatei in einen bestimmten Abschnitt zu schneiden, die Sekunde, in der geschnitten werden soll, und wie lange es zu erweitern ist.Java - AudioInputStream - Schneiden einer WAV-Datei
Ich fand den Code unten, aber da Sekunden als Int angegeben sind, ist es nicht präzise.
Kann mir jemand helfen, diesen Code zu manipulieren, damit ich eine WAV-Datei auf die Genauigkeit einer Millisekunde schneiden kann?
(dh ich habe eine 10 Sekunden lange Audiodatei und ich möchte es zwischen 5,32 Sekunden schneiden und 5,55 Sekunden)
https://stackoverflow.com/a/7547123/5213329
import java.io.*;
import javax.sound.sampled.*;
class AudioFileProcessor {
public static void main(String[] args) {
copyAudio("/tmp/uke.wav", "/tmp/uke-shortened.wav", 2, 1);
}
public static void copyAudio(String sourceFileName, String destinationFileName, int startSecond, int secondsToCopy) {
AudioInputStream inputStream = null;
AudioInputStream shortenedStream = null;
try {
File file = new File(sourceFileName);
AudioFileFormat fileFormat = AudioSystem.getAudioFileFormat(file);
AudioFormat format = fileFormat.getFormat();
inputStream = AudioSystem.getAudioInputStream(file);
int bytesPerSecond = format.getFrameSize() * (int)format.getFrameRate();
inputStream.skip(startSecond * bytesPerSecond);
long framesOfAudioToCopy = secondsToCopy * (int)format.getFrameRate();
shortenedStream = new AudioInputStream(inputStream, format, framesOfAudioToCopy);
File destinationFile = new File(destinationFileName);
AudioSystem.write(shortenedStream, fileFormat.getType(), destinationFile);
} catch (Exception e) {
println(e);
} finally {
if (inputStream != null) try { inputStream.close(); } catch (Exception e) { println(e); }
if (shortenedStream != null) try { shortenedStream.close(); } catch (Exception e) { println(e); }
}
}
public static void println(Object o) {
System.out.println(o);
}
public static void print(Object o) {
System.out.print(o);
}
}
Sie müssen es zur Arbeit bringen das ist kein funktionierendes Programm – gpasch
* "Kann mir jemand helfen .." * Stack Overflow ist kein Helpdesk. Wenn Sie einen vernünftigen Versuch machen können und dies im Code zeigen, dann fragen Sie eine * spezifische * Frage, es könnte besser gehen. –