Audio: Abspielen eines OutputStreams

Status
Nicht offen für weitere Antworten.

xysawq

Bekanntes Mitglied
Hallo, ich glaube ich habe direkt 2 Probleme:

Ich möchte Pakete empfangen deren Inhalte in einem Byte-Array abgespeichert werden (bei jedem Empfang wird das Array überschrieben). Dieses Array wird nach dem Empfang an einem Stream angehängt, der dauerhaft lokal abgespielt wird.

1. Problem: Ich kann mit einem BufferedOutputStream Byte-Arrays zu einem Stream hinzufügen, diesen aber nicht abspielen.

2. Problem: Ich kann einen InputStream abspielen, aber keine Byte-Arrays hinzufügen.

Wenn jemand eine noch bessere Lösung hat als die mit den Streams hätte ich nichts dagegen. Und vorher eine Datei draus machen oder so hatte ich nicht vor, weil ich wenig Delay zwischen Empfang und Abspielen haben möchte.


Falls noch Infos fehlen bitte fragen. Code poste ich mal nicht, da es glaube ich sehr sinnfrei ist zu zeigen wie ein Byte-Array gemacht wird oder wie man einen Stream nicht benutzen kann.


Vielen Dank im Voraus.
 

xysawq

Bekanntes Mitglied
So, da mir hier ja niemand helfen wollte musste ich den ganzen Tag googlen und hab viel Zeit für ein paar Zeilen Code verbraten.

Trotzdem bin ich so nett und gebe mal den Code bekannt, der, ganz ohne Stream, die empfangenen Daten, die in einem Byte-Array gespeichert werden abspielen kann.


Zuerst einmal vom Empfänger der Pakete:

Variablen:
Code:
private int LENGTH = 65535;
private byte[] buffer = new byte[LENGTH];
private byte[] data = null;
private DatagramPacket RtpPacket = new DatagramPacket(buffer, LENGTH);
private DatagramSocket dataSocket = null;

Empfang:
Code:
dataSocket.receive(RtpPacket);

//12 ist die RTP-Headergröße bei mir
data = new byte[RtpPacket.getLength()-12];

for(int i=0; i<(RtpPacket.getLength()-12); i++)
{
	data[i] = buffer[i+12];
}

//gibt dem MediaPlayer bescheid, dass neue Daten im Array data angekommen sind
newData();


Und der eigentliche Player:
Code:
	private class MediaPlayer extends Thread
	{
		private boolean play = true;
		private boolean run = false;
		private boolean init = false;
		private boolean newData = false;
		
		private SourceDataLine line = null;
		private DataLine.Info info = new DataLine.Info(SourceDataLine.class, getAudioFormat());
				
		public void run()
		{
			while(play)
			{
				if(!init && newData)
				{
					try
					{				
						line = (SourceDataLine) AudioSystem.getLine(info);
						line.open(getAudioFormat());				
					}
					catch (NotRealizedError e)
					{
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
					catch (LineUnavailableException e)
					{
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
					
					init = true;
				}
				
				
				if(newData)
				{
					if(!run)
					{
						line.start();
						run = true;
					}
					line.write(data, 0, data.length);
					
					newData = false;					
				}
				
				
				
			}
		}
		
		public void stopPlaying()
		{
			play = false;
		}
		
		public void newData()
		{
			newData = true;
		}
		
		private AudioFormat getAudioFormat()
		{
			AudioFormat.Encoding encoding = AudioFormat.Encoding.PCM_UNSIGNED;
			float sampleRate = 16000.0F;
			int sampleSizeInBits = 8;
			int channels = 1;
			int frameSize = 1;
			int frameRate = 16000;
			boolean bigEndian = false;
			
//			float sampleRate = 8000.0F;
//			int sampleSizeInBits = 8;
//			int channels = 1;
//			int frameSize = 1;
//			int frameRate = 8000;
//			boolean bigEndian = false;
			
			return new AudioFormat(encoding,
								   sampleRate,
								   sampleSizeInBits,
								   channels,
								   frameSize,
								   frameRate,
								   bigEndian);
		}
	}


Wenn es jemand gebrauchen kann soll er es nehmen, bei mir klappts wunderbar ;).
 

The_S

Top Contributor
xysawq hat gesagt.:
So, da mir hier ja niemand helfen wollte

Du hast dir hier ein sehr spezielles Thema ausgesucht. Evtl. KONNTE dir niemand helfen!? Zudem ich auch beobachten konnte, dass wir hier für manche Themen keine wirklichen Spezialisten haben (u. a. Audio :( ).

xysawq hat gesagt.:
musste ich den ganzen Tag googlen

Das sollte generell deine erste Anlaufstation sein - selbst auf die Suche nach einer Lösung machen. Wenn dir hier jemand geholfen hätte, hätte er vermutlich auch den ganzen Tag googeln müssen ... und du würdest auf der faulen Haut liegen, findst das nicht ein bisschen unfair ;) ?

xysawq hat gesagt.:
und hab viel Zeit für ein paar Zeilen Code verbraten.

Ein sehr schönes Beispiel, dass man keinen Preis für eine Codezeile verallgemeinern kann :) . Manchmal muss man sich eben ein bisschen mehr anstrengen um an die Lösung zu kommen. Dabei ist es dann umso schöner, wenn es letztendlich funktioniert :) .

xysawq hat gesagt.:

So funktionieren nunmal Foren - jeder trägt das bei, was er kann. Wenn alle nur fordern, fordern und nochmal fordern würden, ohne selbst etwas beizutragen, könnten wir hier dicht machen ...

xysawq hat gesagt.:
bin ich so nett und gebe mal den Code bekannt

Ich benötige es zwar nicht, aber dankeschön im Namen der User, die es mal gebrauchen können :) .

Thread abhaken nicht vergessen!
 
G

Guest

Gast
xysawq hat folgendes geschrieben::
musste ich den ganzen Tag googlen


Das sollte generell deine erste Anlaufstation sein - selbst auf die Suche nach einer Lösung machen. Wenn dir hier jemand geholfen hätte, hätte er vermutlich auch den ganzen Tag googeln müssen ... und du würdest auf der faulen Haut liegen, findst das nicht ein bisschen unfair ;)?

Und jetzt rate mal, was ich die Tage davor gemacht habe ;)


xysawq hat folgendes geschrieben::
Trotzdem


So funktionieren nunmal Foren - jeder trägt das bei, was er kann. Wenn alle nur fordern, fordern und nochmal fordern würden, ohne selbst etwas beizutragen, könnten wir hier dicht machen ...

Leider sehe ich oft genug abgehakte Threads wo nur drunter steht "ok, habs selber hinbekommen"... deswegen ein 'vorlautes' Trotzdem.


xysawq hat folgendes geschrieben::
bin ich so nett und gebe mal den Code bekannt


Ich benötige es zwar nicht, aber dankeschön im Namen der User, die es mal gebrauchen können :).

Bitte, und auch bitte an die, die sich freuen nicht tagelang googlen zu müssen ^^.
Und merkt euch, wenn ihr selber die Lösung habt, behaltet dieses 'tolle Geheimnis' nicht für euch, sondern zeigt es anderen die sich auch so quälen wie ihr ;).
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Audio Datei abspielen Java Basics - Anfänger-Themen 18
H audio abspielen Java Basics - Anfänger-Themen 19
M Volume beim Abspielen von Audio Dateien Java Basics - Anfänger-Themen 2
E Audio Datei unter Bedingungen ausführen Java Basics - Anfänger-Themen 19
R Audio kann nur zum Teil gestoppt werden Java Basics - Anfänger-Themen 1
volcanos sun.audio has been removed from Java since JDK 9 Java Basics - Anfänger-Themen 2
P eine kleine Aufgabe mit Audio Java Basics - Anfänger-Themen 1
H Audio in Java Java Basics - Anfänger-Themen 3
J Sharing Audio input Java Basics - Anfänger-Themen 6
S Hilfe bei Audio und zwischenspeicher Java Basics - Anfänger-Themen 5
M Audio + Timer Java Basics - Anfänger-Themen 12
S Input/Output audio in Programm einbinden Java Basics - Anfänger-Themen 17
M Audio Stream läuft auf :connection abort: socket write error Java Basics - Anfänger-Themen 2
D audio wiedergabe? Java Basics - Anfänger-Themen 11
X Audio über Mikrofon einlesen Java Basics - Anfänger-Themen 4
S Java Sound mit 24 bit/96 kHz Audio? Java Basics - Anfänger-Themen 12
W Dauer einer Audio-Datei Java Basics - Anfänger-Themen 2
L Audio-Clip rauscht nur Java Basics - Anfänger-Themen 5
G Audio wiedergeben Java Basics - Anfänger-Themen 10
B Audio Signale aufnehmen & Frequenzen mit Amplitude anzei Java Basics - Anfänger-Themen 2
J Audio capturen und über's Netzwerk streamen? Java Basics - Anfänger-Themen 2
M Audio Files mit Base64 De-/Endcodieren Java Basics - Anfänger-Themen 5
K Musik abspielen Java Basics - Anfänger-Themen 4
S Youtube Video abspielen Java Basics - Anfänger-Themen 1
S Probleme mit abspielen einer .wav Datei Java Basics - Anfänger-Themen 2
R Sound abspielen Java Basics - Anfänger-Themen 9
S Sound stoppen und nach Pause wieder abspielen Java Basics - Anfänger-Themen 6
A wav-Datei abspielen Java Basics - Anfänger-Themen 3
J Java - Abspielen einer wav Datei Java Basics - Anfänger-Themen 2
P InputStream eines Musik-Streams abspielen Java Basics - Anfänger-Themen 2
Anfänger2011 Input/Output Sound abspielen - ICH VERZWEIFLE!!!! Java Basics - Anfänger-Themen 24
D Wave Datei mehrmals abspielen Java Basics - Anfänger-Themen 2
S Vereinfacht Sounds abspielen?! Java Basics - Anfänger-Themen 3
T .wav abspielen Java Basics - Anfänger-Themen 8
P *.wav abspielen mit Anyexample Java Basics - Anfänger-Themen 3
D Sound abspielen, wo muss die .wav liegen Java Basics - Anfänger-Themen 3
2 Input/Output Sound aufnehmen/abspielen? Java Basics - Anfänger-Themen 2
Maxim6394 Problem beim Abspielen von Sounds Java Basics - Anfänger-Themen 8
SheldoN Töne abspielen auf verschiedenen Buttons Java Basics - Anfänger-Themen 17
SheldoN Sound abspielen nach Buttonklick in Applets Java Basics - Anfänger-Themen 17
F sound nur abspielen, wenn er nicht läuft Java Basics - Anfänger-Themen 6
B Problem beim Abspielen einer Videodatei Java Basics - Anfänger-Themen 4
B Tondatei abspielen Java Basics - Anfänger-Themen 11
A Soundfile in java abspielen lassen Java Basics - Anfänger-Themen 7
Developer_X Sounds abspielen, die im internet sind (.wav) Java Basics - Anfänger-Themen 2
R WAV-Datei in textpane abspielen Java Basics - Anfänger-Themen 3
StrikeTom Fehler beim Audiodatei abspielen Java Basics - Anfänger-Themen 4
M sound abspielen Java Basics - Anfänger-Themen 3
J VoiceChat Hilfe - Empfangene Pakete abspielen Java Basics - Anfänger-Themen 6
M Ton abspielen in einer gewissen Frequenz und lautstärke... Java Basics - Anfänger-Themen 3
C Sound abspielen Java Basics - Anfänger-Themen 6
G Video aus dem Internet abspielen Java Basics - Anfänger-Themen 6
R Probleme mit NullPointer beim Mp3 abspielen (JMF) Java Basics - Anfänger-Themen 21
S Midi-dateien Abspielen Java Basics - Anfänger-Themen 2
hdi Sounds abspielen Java Basics - Anfänger-Themen 12
K Animiertes Gif nur einmal abspielen Java Basics - Anfänger-Themen 3
S Ton mit festgelegter Frequenz abspielen Java Basics - Anfänger-Themen 2
B Kann Java Videos abspielen? Java Basics - Anfänger-Themen 2
M Sound Abspielen Java Basics - Anfänger-Themen 9
M strings rückwärts abspielen (schleife?) Java Basics - Anfänger-Themen 33
F mp3 File abspielen Java Basics - Anfänger-Themen 15
U Ton abspielen Java Basics - Anfänger-Themen 23
G Sound bei buttonklick abspielen Java Basics - Anfänger-Themen 7
B Sound einbinden und abspielen Java Basics - Anfänger-Themen 9
D JMF - Abspielen eines mpeg1-Videos Java Basics - Anfänger-Themen 15
E MP3s in Java abspielen Java Basics - Anfänger-Themen 2
G *.au Datei einbinden und abspielen Java Basics - Anfänger-Themen 4
F musik datei mit jmf abspielen Java Basics - Anfänger-Themen 5
D .wav Sound in einer simplen Applikation abspielen Java Basics - Anfänger-Themen 3
B Midi-File Abspielen Java Basics - Anfänger-Themen 14
T Filme ohne JMF abspielen Java Basics - Anfänger-Themen 7
D aufnehmen, abspielen und vergleichen von Sounds Java Basics - Anfänger-Themen 2
M Länge eines Arrays als Variable speichern möglich? Java Basics - Anfänger-Themen 14
P Objekt einer Methode eines anderen Objektes übergeben Java Basics - Anfänger-Themen 5
P Wie kann ich beispielsweise Speicherstände eines Spiels DAUERHAFT in meinem Programm speichern? Java Basics - Anfänger-Themen 3
laxla123 Eigenschaften eines Algorithmus (determiniert vs.. deterministisch) Java Basics - Anfänger-Themen 2
monsterherz Ablauf der Erstellung eines Java Programmes Java Basics - Anfänger-Themen 17
monsterherz Fehler Semikolon fehlt - ich weiss aber nicht wo da noch eines hin sollte... Java Basics - Anfänger-Themen 21
J Farbe des Striches eines TitledBorders ändern Java Basics - Anfänger-Themen 2
pc pc pc pc pc letztes Element eines Arrays n Java Basics - Anfänger-Themen 3
walid Öffnungszeiten eines Geschäftes Java Basics - Anfänger-Themen 3
paulen1 Best Practice "Unchecked Assignment" Warnung beim erstellen eines 2D Arrays of Arraylists Java Basics - Anfänger-Themen 2
T Probleme beim Import eines Git-Repos Java Basics - Anfänger-Themen 2
U Eigenschaft eines JTextfiels per ActionListener ändern... Java Basics - Anfänger-Themen 2
B Synchronisation eines kleinen Museums Java Basics - Anfänger-Themen 47
krgewb Breite und Höhe eines Bildes in base64 auslesen Java Basics - Anfänger-Themen 3
Sachinbhatt Was ist die Notwendigkeit eines Sammlungsframeworks in Java? Java Basics - Anfänger-Themen 2
N Textdatei aus Resourcen-Ordner eines Projekts/ jar-file lesen Java Basics - Anfänger-Themen 4
B Produkt eines double - streams Java Basics - Anfänger-Themen 3
B Attribute eines Objekts einer Klasse durch statische Methode einer 2. Klasse ändern? Java Basics - Anfänger-Themen 32
S Variablen Letzte Zeile eines Strings entfernen Java Basics - Anfänger-Themen 1
D Inhalt eines Arrays ausgeben Java Basics - Anfänger-Themen 7
A Jedes zweite Element eines Arrays entfernen Java Basics - Anfänger-Themen 30
sserio Java Fx, wie erstellt man einen EventHandler, der durch das Drücken eines Button Texte in eine Table view einfügt Java Basics - Anfänger-Themen 17
J Größe eines Strings in Pixel Java Basics - Anfänger-Themen 18
M Parse-Tree eines statements darstellen Java Basics - Anfänger-Themen 0
H Java verkettete Liste, Wert eines Index zurückgeben Java Basics - Anfänger-Themen 1
bluetrix Programmieren eines Bots für Zahlen-Brettspiel Java Basics - Anfänger-Themen 9
J Hinzufügen eines Objektes in ein Objekt-Array Java Basics - Anfänger-Themen 62
M Wie kann die Implementation einer Methode den Wert eines Attributs vermindern? Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben