Hi,
ich probiere schon länger daran herum eine wav Datei zu öffnen, einen Teil zu markieren und diesen dann wieder in eine neue wav Datei zu speichern
Das Einlesen funktioniert, den Teil kann ich markieren und ich habe auch schon einen byte[] als Buffer, der genau die Bytes enthält, die ich brauche
Es geht hier nur um eine kleine Methode, mithilfe von AudioSystem o.Ä., was laut API möglich sein sollte, eine WAV Datei zu schreiben
Mein Ansatz:
Ich habe auch passende wav-Dateien, die ich in einem anderen Teil des Programms (mit Clip etc abspielen kann)
Ich kann sie in das Programm laden und mit Amplitude anzeigen lassen
Problem jetzt:
Wenn ich versuche das abzuspeichern kommt als Ausgabe:
Will heißen:
Mein Schnipsel umfasst 3957894 Frames
Insgesamt umfasst die Datei 12049966 Bytes
Er soll anfangen, beim 846486. Byte auszulesen und zu speichern
Er packt es, insgesamt 44 Byte abzuspeichern
Warum ist das so?
Wie kann man das Problem lösen?
Gruß eMmiE
ich probiere schon länger daran herum eine wav Datei zu öffnen, einen Teil zu markieren und diesen dann wieder in eine neue wav Datei zu speichern
Das Einlesen funktioniert, den Teil kann ich markieren und ich habe auch schon einen byte[] als Buffer, der genau die Bytes enthält, die ich brauche
Es geht hier nur um eine kleine Methode, mithilfe von AudioSystem o.Ä., was laut API möglich sein sollte, eine WAV Datei zu schreiben
Mein Ansatz:
Code:
private void saveMarked() {
File file = new File(in);
if (!file.exists()) {
try {
file.createNewFile();
} catch (IOException io) {}
}
if (file.exists() && file.toString().endsWith(".wav")) {
try {
AudioInputStream ais = AudioSystem.getAudioInputStream(files[dragged]);
int sizeInFrames = mostFrames / (width - 250) * (dragtoX - dragX);
System.out.println(sizeInFrames);
byte[] buffer = new byte[(int)files[dragged].length()];
ais.read(buffer);
System.out.println(buffer.length);
//ais.read(buffer, mostFrames / (width - 250) * (dragX - 200), sizeInFrames);
AudioInputStream as = ais;
System.out.println(mostFrames / (width - 250) * (dragX - 200));
as.read(buffer, mostFrames / (width - 250) * (dragX - 200), sizeInFrames);
System.out.println(AudioSystem.write(as, AudioFileFormat.Type.WAVE, file));
System.out.println("RDY");
}
catch (IOException io) {
io.printStackTrace();
}
catch (UnsupportedAudioFileException uae) {
uae.printStackTrace();
}
} else {
wrongPath();
}
}
Ich habe auch passende wav-Dateien, die ich in einem anderen Teil des Programms (mit Clip etc abspielen kann)
Ich kann sie in das Programm laden und mit Amplitude anzeigen lassen
Problem jetzt:
Wenn ich versuche das abzuspeichern kommt als Ausgabe:
Code:
3957894
12049966
846486
44
RDY
Will heißen:
Mein Schnipsel umfasst 3957894 Frames
Insgesamt umfasst die Datei 12049966 Bytes
Er soll anfangen, beim 846486. Byte auszulesen und zu speichern
Er packt es, insgesamt 44 Byte abzuspeichern
Warum ist das so?
Wie kann man das Problem lösen?
Gruß eMmiE
Zuletzt bearbeitet: