WAV Files über UDP übertragen

D

domi_159

Ich habe eine Application geschrieben die ein Audiofile(wav.File) einlest und die Bytes über UDP auf die IP Adresse 192.168.0.74 rausschieben soll.

Mein Problem ist, dass die UDP Verbindung zu öffnen, dann die Files rauszuschieben und danach die Verbindung wieder zu schließen leider nicht funktioniert.

Es wird folgender Error ausgegeben: Error: Field {0} of analyzer {1} references undefined bean {2}

Ich wäre sehr dankbar für Lösungsvorschläge da ich diese Application dringend für ein Projekt benötige
 
Hallo
Poste doch bitte einen Code-Abschnitt und die Fehlermeldung!! Mit den wenigen Informationen die du gibst, kann wohl kaum jemand etwas anfangen.
btw: JavaDoc lesen hilft oft. Vllt. hast du
Code:
flush()
vergessen?
 
Hallo,

was ist denn die genaue Exception (mit StackTrace)?
Es wird folgender Error ausgegeben: Error: Field {0} of analyzer {1} references undefined bean {2}
Welches Framework verwendest du denn für UDP Kommunikation? Oder machst du alles von Hand (java.net.DatagramSocket/DatagramPacket)?

Gruß Tom
 
Jap alles von hand mit (java.net.DatagramSocket/DatagramPacket)
Hier mein Code der UDP Verbindung


public class UDP {

final static int PortDayTime = 23; // well-known daytime port

public static boolean UDP_open() {
try {
byte msg[] = new byte[256];
DatagramSocket dgSocket = new DatagramSocket();
InetAddress destination = InetAddress.getByName("192.168.0.74");
DatagramPacket datagram =
new DatagramPacket(msg, msg.length, destination, PortDayTime);

dgSocket.send(datagram);
datagram = new DatagramPacket(msg, msg.length);
dgSocket.receive(datagram);
if(datagram != null ){
return true;
}
else {
return false;
}
} catch (IOException e) {
e.printStackTrace();
return false;
}
}
}
 
Das ist der Soundplayer Code den ich in die UDP open class zwischen öffnen des Sockets und Schließen des Socket einbinden will!

package at.tw.ose;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

import java.io.InputStream;

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.URL;

import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.Line;
import javax.sound.sampled.LineEvent;
import javax.sound.sampled.LineListener;

public class SoundPlayer{

private File file;

public SoundPlayer(File file) {
this.file = file;
}

public void play(){
try {
if (file != null) {
URL url = file.toURI().toURL();
AudioFormat fmt = AudioSystem.getAudioFileFormat(url).getFormat();
Line.Info info = new DataLine.Info(Clip.class, fmt);
final Clip clip = (Clip)AudioSystem.getLine(info);
final AudioInputStream is = AudioSystem.getAudioInputStream(url);
clip.open(is);
clip.start();
clip.addLineListener(new LineListener() {
public void update(LineEvent e) {
if (e.getType() == LineEvent.Type.STOP) {
clip.close();
try {
is.close();
} catch (IOException ie) {
ie.printStackTrace();
}
}
}
});

InputStream is1 = new FileInputStream(file);
byte[] buff = new byte[1024];
while (true) {
int len = is1.read(buff);
Thread.sleep(10); // buffer schutz endgerät
if (len == -1) {
break;
}
System.out.println("len = " + len);
}
is1.close();
System.out.println("stream closed");
}

} catch (Exception e) {
e.printStackTrace();
}
}





public static void main(String[] args) {
if (args.length > 0) {
try {
File f = new File(args[0]);
new SoundPlayer(f).play();
} catch (Exception e) {
e.printStackTrace();
}
try {
Thread.sleep(Integer.MAX_VALUE);
} catch (InterruptedException e) {
}
}

}


}

aja bei dem UDP code fehlt noch das "dgSocket.close() nach der else{}

ich bitte um Lösungsansätze, das wär mir eine große Hilfe
 
bitte den BB-Code Java verwenden, dann kann vllt auch jemand lesen was du meinst…
Java:
public class UDP {
  final static int PortDayTime = 23; // well-known daytime port

  public static boolean UDP_open() {
    try {
      byte msg[] = new byte[256];
      DatagramSocket dgSocket = new DatagramSocket();
      InetAddress destination = InetAddress.getByName("192.168.0.74");
      DatagramPacket datagram = new DatagramPacket(msg, msg.length, destination, PortDayTime);

      dgSocket.send(datagram);
      datagram = new DatagramPacket(msg, msg.length);
      dgSocket.receive(datagram);
      if(datagram != null ) return true;
      else return false;
    } catch (IOException e) {
      e.printStackTrace();
      return false;
    }
  }
}

Java:
package at.tw.ose;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

import java.io.InputStream;

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.URL;

import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.Line;
import javax.sound.sampled.LineEvent;
import javax.sound.sampled.LineListener;

public class SoundPlayer{

private File file;

public SoundPlayer(File file) {
this.file = file;
}

public void play(){
try {
if (file != null) {
URL url = file.toURI().toURL();
AudioFormat fmt = AudioSystem.getAudioFileFormat(url).getFormat();
Line.Info info = new DataLine.Info(Clip.class, fmt);
final Clip clip = (Clip)AudioSystem.getLine(info);
final AudioInputStream is = AudioSystem.getAudioInputStream(url);
clip.open(is);
clip.start();
clip.addLineListener(new LineListener() {
public void update(LineEvent e) {
if (e.getType() == LineEvent.Type.STOP) {
clip.close();
try {
is.close();
} catch (IOException ie) {
ie.printStackTrace();
}
}
}
});

InputStream is1 = new FileInputStream(file);
byte[] buff = new byte[1024];
while (true) {
int len = is1.read(buff);
Thread.sleep(10); // buffer schutz endgerät
if (len == -1) {
break;
}
System.out.println("len = " + len);
}
is1.close();
System.out.println("stream closed");
}

} catch (Exception e) {
e.printStackTrace();
}
}


public static void main(String[] args) {
if (args.length > 0) {
try {
File f = new File(args[0]);
new SoundPlayer(f).play();
} catch (Exception e) {
e.printStackTrace();
}
try {
Thread.sleep(Integer.MAX_VALUE);
} catch (InterruptedException e) {
}
}
}
}

PS: Die Einzüge wären auch noch hilfreich zur Lesbarkeit des Codes, aber dazu bin ich jetzt zu faul… Ist ja eigentlich deine Aufgabe :)
 
Zuletzt bearbeitet:
1.
Wenn du dg.close() aufrufst, dann bitte in einem finally{}-Block! Nach welchem else möchtest du dass denn einfügen? Wenn du es am Ende des try{}-Blocks einfügst, wird es niemals aufgerufen!!

2.
Wir brauchen immer noch den StackTrace (deine Fehlermeldung) mit der jeweiligen Klasse, in der sie auftritt (vollständig). Und zwar bitte in Codetags!!
 
Unkown Source:

Error: Field {0} of analyzer {1} references undefined bean {2}


Das ist der Fehler der in der SoundPlayer class ausgegeben wird
 
Zurück