wav Datei schreiben mit AudioInputStream

eMmiE

Bekanntes Mitglied
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:
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:

Joose

Top Contributor
Java:
......
    		  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");

Was erwartest du dir denn wieviele Bytes gespeichert werden?
Warum rufst du 2x die read Methode auf?
Du überprüfst zwar nach dem erstellen vom byte[] buffer, die Länge des Arrays, aber nach hast du schon geschaut ob nach dem Lesen etwas drinnen steht? (bzw. wieviel drinnen steht usw.)
 

eMmiE

Bekanntes Mitglied
Hi,

Das mit dem zweimal einlesn war ein Missverständniss (klar ;)) von mir. Ich dachte, ich könnte so in dem InputStream nur das drinne haben, was ich benötige...:rtfm:

ich habe auch noch ein bisschen weiter gemacht

Momentan sieht der Code so aus:
Code:
System.out.println("DATA: ");
System.out.println("Frames der Datei: "+clips[dragged+1].getFrameLength());
System.out.println("Anfangsframe: "+(mostFrames / (width - 256) * (dragX - 203)));
System.out.println("Endframe: "+(mostFrames / (width - 256) * (dragtoX - 203)));
System.out.println("FTW: "+(mostFrames / (width - 256) * (dragtoX - dragX)));

AudioInputStream ais = AudioSystem.getAudioInputStream(files[dragged]);
int sizeInFrames = mostFrames / (width - 256) * (dragtoX - dragX);
byte[] buffer = new byte[sizeInFrames * 2];
ais.read(buffer, mostFrames / (width - 256) * (dragX - 203), sizeInFrames);

System.out.println(AudioSystem.write(ais, AudioFileFormat.Type.WAVE, file));

Das Problem ist jetzt:
Wie kann ich nur einen Teil des byte[] in eine Datei schreiben?
Es ist kein Problem, den Array auf den benötigten Teil zu beschränken, aber mit der AudioSystem.write() Methode kann ich das so nicht abspeichern, oder?

Hat das jemand einen Tipp, was ich da verwenden kann?

Weiterhin dankbar für jede Hilfe

gruß eMmiE
 

eMmiE

Bekanntes Mitglied
Allgemeiner formuliert könnte man sagen:
Wie kann ich aus einem byte[] mit 1 Channel wieder eine vollwertige wav-Datei machen?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B .txt Datei erstellen und auslesen bzw. schreiben Allgemeine Java-Themen 6
ralfb1105 Blöcke aus Datei filtern/suchen und in neue Datei schreiben Allgemeine Java-Themen 10
S Input/Output Beste Möglichkeit einen String in einen Datei zu Schreiben Allgemeine Java-Themen 2
Aruetiise " in Datei schreiben Allgemeine Java-Themen 2
R Signatur von Methoden in eine Datei schreiben? Allgemeine Java-Themen 4
Z NullPointerException beim Schreiben einer ArrayList in eine Datei Allgemeine Java-Themen 6
B Fortschritt beim Schreiben einer Datei ausgeben lassen Allgemeine Java-Themen 7
M Input/Output Datei Schreiben Allgemeine Java-Themen 3
2 String Array in Datei schreiben und wieder davon lesen Allgemeine Java-Themen 2
A In Excel-Datei schreiben, Formeln der Mappe anwenden, Wert lesen Allgemeine Java-Themen 3
F Linux & NetBeans: Datei in Systemverzeichnis schreiben? Allgemeine Java-Themen 1
T Input/Output Daten in eine Datei schreiben Allgemeine Java-Themen 4
L Input/Output Datei einlesen und Inhalt in Array schreiben Allgemeine Java-Themen 3
D Datei in Jar schreiben Allgemeine Java-Themen 5
F Sachen in datei schreiben Allgemeine Java-Themen 2
G Binäre Datei lesen / schreiben Allgemeine Java-Themen 9
S Threads Abarbeitungsstatus von Threads in Datei schreiben Allgemeine Java-Themen 2
A DOM Datei schreiben Allgemeine Java-Themen 3
Chumax Datei als Admin schreiben Allgemeine Java-Themen 5
E Performanceverlust beim Schreiben von ResultSet in txt Datei Allgemeine Java-Themen 10
R Datei zeilenweise lesen und schreiben Allgemeine Java-Themen 6
S Runtime Exceptions in eine Datei schreiben Allgemeine Java-Themen 7
S Exception beim Schreiben des Dataset in XML Datei Allgemeine Java-Themen 8
J HSSF - schreiben in und lesen aus vorhandener Datei Allgemeine Java-Themen 6
M Binäre Datei schreiben und lesen Allgemeine Java-Themen 4
T Properties Datei nicht jedes mal neu schreiben? Allgemeine Java-Themen 2
Beckenbauer Mehrere Paragraphe in eine Word Datei schreiben Allgemeine Java-Themen 4
W XML Datei schreiben (org.w3c.dom) Allgemeine Java-Themen 3
M Bytes in Datei schreiben Allgemeine Java-Themen 10
G mbox: Mailanhänge in Datei schreiben Allgemeine Java-Themen 6
Iron Monkey Object in Datei effizienter lesen / schreiben Allgemeine Java-Themen 13
T String in .txt Datei schreiben Allgemeine Java-Themen 7
T Spezielle Bytes in Datei schreiben Allgemeine Java-Themen 7
reibi Schreiben einer pnm-Datei Allgemeine Java-Themen 2
M In Datei schreiben mit einer speziellen Schriftgröße Allgemeine Java-Themen 8
T Datei beim schreiben verschlüsseln beim lesen entschlüsseln Allgemeine Java-Themen 11
F Tabulator in Datei schreiben Allgemeine Java-Themen 11
Daniel_L JavaBib und PrintWriter - BibTex-Datei schreiben Allgemeine Java-Themen 4
D binäre Datei einlesen und schreiben? Allgemeine Java-Themen 3
G Tabulator in eine txt- Datei schreiben Allgemeine Java-Themen 9
MQue Werte in eine html- Datei schreiben Allgemeine Java-Themen 17
T (Binary)Datei einlesen, Inhalt ändern, Datei schreiben Allgemeine Java-Themen 4
S Anzahl der Stunden in Excel Datei schreiben Allgemeine Java-Themen 2
S In excel Datei schreiben Allgemeine Java-Themen 1
J Schreiben in eine Datei Allgemeine Java-Themen 5
D Ans Ende einer txt Datei schreiben Allgemeine Java-Themen 13
M Irgendwo einen Fehler beim Schreiben in die Datei :( Allgemeine Java-Themen 2
G Ausgabe in eine txt Datei schreiben? Allgemeine Java-Themen 7
J Zeilenweise in Datei schreiben/auslesen Allgemeine Java-Themen 3
M Array in eine Datei Schreiben und wieder auslesen Allgemeine Java-Themen 10
S system.out und system.err einer Methode in Datei schreiben. Allgemeine Java-Themen 7
C Integerwert in Datei schreiben Allgemeine Java-Themen 7
D datei in byte[]-array schreiben Allgemeine Java-Themen 6
A Komponenten binär in Datei schreiben Allgemeine Java-Themen 11
E in eine Datei schreiben Allgemeine Java-Themen 2
G html datei schreiben und öffnen Allgemeine Java-Themen 5
S String zerteilen und in Datei schreiben Allgemeine Java-Themen 27
G In Datei an bestimmter Stelle schreiben! Allgemeine Java-Themen 12
S Text in eine txt-Datei schreiben und abspeichern! Allgemeine Java-Themen 8
D In Jar Datei schreiben Allgemeine Java-Themen 4
P Werte in Datei schreiben Allgemeine Java-Themen 10
D Vector in Datei schreiben Allgemeine Java-Themen 18
N Schnellste Art Strings in eine Datei zu schreiben Allgemeine Java-Themen 7
J String mit GZIPInputStream in Datei schreiben und wieder les Allgemeine Java-Themen 2
B in .txt datei farbig schreiben/speichern Allgemeine Java-Themen 5
A In eine Datei in einem JAR schreiben. Allgemeine Java-Themen 2
G Daten in eine vorhandene Excel-Datei schreiben Allgemeine Java-Themen 3
D Bilder einlesen, bearbeiten und wieder in Datei schreiben Allgemeine Java-Themen 3
R Array[][] in die Datei schreiben bzw. aus der Datei lesen Allgemeine Java-Themen 13
kodela StatusBar-Anzeigen auch in Log-Datei ausgeben Allgemeine Java-Themen 3
G Maven Projekt JAR-Datei Allgemeine Java-Themen 6
E XML - Datei Darstellung in IntelliJ als Baum Allgemeine Java-Themen 2
Thomasneuling Java Jar datei erstellen, von Projekt, dass auch Javafx Dateien, FXML Dateien und CSS Dateien, sowie Bilder enthält? Allgemeine Java-Themen 14
D Erste Schritte Mp3 Datei kann nicht von der Festplatte geöffnet werden - mit ChatGPT erstellt Allgemeine Java-Themen 7
J Filenotfoundexception obwohl Datei existiert Allgemeine Java-Themen 6
M Java Überprüfen ob .exe-Datei bereits ausgeführt wird Allgemeine Java-Themen 2
S .exe Datei/Programm auslesen? Allgemeine Java-Themen 2
E Datei verschoben Event Allgemeine Java-Themen 3
D Datei mit "Kohsuke GitHub API" in Repository hochladen Allgemeine Java-Themen 2
S Bookmark HTML Datei einlesen, alle Links erhalten und manche editieren..? (aktuell JSoup) Allgemeine Java-Themen 4
melaniemueller Einzelne Zeile aus einer txt Datei in einem String speichern Allgemeine Java-Themen 12
G JavaFX Maven Projekt als .exe Datei exportieren Allgemeine Java-Themen 10
J (Geplante) Änderungen an einer Datei vorübergehend speichern und anwenden? Allgemeine Java-Themen 12
Neumi5694 Datei komprimiert Allgemeine Java-Themen 6
_user_q Obfuscate einer .jar-Datei mit ProGuard? Allgemeine Java-Themen 2
_user_q Verknüpfung einer .jar-Datei (liegt z. B. auf dem Desktop) im Autostart-Ordner erstellen? Allgemeine Java-Themen 20
E java mithilfe url .jar datei öffnen Allgemeine Java-Themen 9
E Java .exe Datei mit args starten Allgemeine Java-Themen 2
W Bilder werden in App mit Jar-Datei nicht angezeigt Allgemeine Java-Themen 15
Master3000 Java Datei mehrmals einlesen Allgemeine Java-Themen 4
M Excel Datei Erstellen Allgemeine Java-Themen 2
E Input/Output Eigene Datei mit java öffnen Allgemeine Java-Themen 9
R Sonderzeichen aus Datei einlesen und in Datei ausgeben. Allgemeine Java-Themen 17
Tobero Download .jar von github lädt kaputte Datei runter Allgemeine Java-Themen 3
P Bat Datei in Java ausführen Allgemeine Java-Themen 2
S Verwendet Programmiersprache aus Quellcode - Datei ermitteln Allgemeine Java-Themen 6
T Problem beim Umwandeln in eine Jar-Datei Allgemeine Java-Themen 3
J Jar-Datei ausführen Allgemeine Java-Themen 7
C Outlook msg-Datei Anhänge extrahieren Allgemeine Java-Themen 2
G Datei aus Ordner wählen, ohne den Dateinamen im Pfad angeben zu müssen Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben