-
09.09.11 08:09 #46
Du kannst über die native Java-Library auch MP3 abspielen, du musst dafür nur das AudioFormat anpassen. Ich habe das auch schon mal gemacht, allerdings habe ich den Code zu Hause. Ich habe dir hier mal einen kleinen Code getipselt, weiß aber nicht ob er funktioniert, da ich es nicht testen kann. Aber so in der Art habe ich das glaube ich auch zu Hause gemacht:
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
import java.io.File; import java.io.IOException; import javax.sound.sampled.*; public class MP3 { public static Clip loadClip(File file) { try { AudioInputStream in = AudioSystem.getAudioInputStream(file); AudioFormat baseFormat = in.getFormat(); AudioFormat decodedFormat = new AudioFormat( AudioFormat.Encoding.PCM_SIGNED, baseFormat.getSampleRate(), 16, baseFormat.getChannels(), baseFormat.getChannels() * 2, baseFormat.getSampleRate(), false ); AudioInputStream inputStream = AudioSystem.getAudioInputStream(decodedFormat, in); DataLine.Info info = new DataLine.Info(Clip.class, inputStream.getFormat()); Clip clip = (Clip) AudioSystem.getLine(info); clip.open(in); clip.addLineListener(new ClipLineListener()); return clip; } catch (UnsupportedAudioFileException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (LineUnavailableException e) { e.printStackTrace(); } return null; } private static class ClipLineListener implements LineListener { /* (non-Javadoc) * @see javax.sound.sampled.LineListener#update(javax.sound.sampled.LineEvent) */ public void update(LineEvent event) { if(LineEvent.Type.STOP == event.getType()) { event.getLine().close(); } } } }
Gruß
FabioBitte die Code-Tags verwenden. Bei Java-Code: [java]...[/java]
Tutorials:
Automatisches erzeugen eines Inhaltsverzeichnisses (Javascript)
JAnimationPanel - Animationen für Swing/AWT
SWTRatingBar (Bewertungs-Composite) selbst programmieren
____________________________________________________________________________
Über eine Bewertung (Stern links unter dem Beitrag) oder ein Danke freue ich mich sehr.
-
09.09.11 10:18 #47
OK,
erstmal...super Resonanz Gentlemen!!
Ich hatte noch nicht viel Zeit, hab' aber beide Versionen (Spikee und Fabio) mal quick'n dirty implementiert.
@Spikee
Dein Code ist wirklich kompakt. Allerdings scheint mit dem Java Mixer nur eine bestimmte Buffer größe abspielbar zu sein. Wenn ich ein WAV für Hintergrundmusik (ca. 3MB) reinlade, haut er mir folgende exception um die Ohren:
Code java:1 2 3 4 5 6 7
SCHWERWIEGEND: null javax.sound.sampled.LineUnavailableException: Failed to allocate clip data: Requested buffer too large. at com.sun.media.sound.MixerClip.implOpen(MixerClip.java:561) at com.sun.media.sound.MixerClip.open(MixerClip.java:165) at com.sun.media.sound.MixerClip.open(MixerClip.java:256) at jonny_0_5.MusicBox.<init>(MusicBox.java:52) at jonny_0_5.Board.preloader(Board.java:96)
Im Netz hab' ich nach kurzer Suche das gefunden:
1048576 bytes (that's the current limit imposed by MixerClip)
http://codeidol.com/java/swing/Audio...Trivial-Audio/
Man muss für größere Dateien also, wohl oder übel, DataLines benutzen.
@Fabio
Sobald ich versuche ne mp3 als Stream in den AudioInputStream zu schieben, wirft er folgende exception:
Code java:1 2
javax.sound.sampled.UnsupportedAudioFileException: could not get audio input stream from input stream at javax.sound.sampled.AudioSystem.getAudioInputStream(AudioSystem.java:1102)
schieb' ich ne normale WAV rein, läuft's rund?...every second is a new spark, sets the universe aflame
(Bruce Dickinson)
Got something to say? http://www.plaintalk.de
-
09.09.11 11:04 #48SE Tutorials.de Gastzugang
@1one6
Öhm ... verdammt ... ok ... DAS wusste ich natürlich nicht , weil ich auch keine WAV dieser Größe zum Testen hatte. Dann ist meine Lösung also doch nur für SFX verwendbar ... für BGM muss man dann halt DataLines nutzen ... 1:0 für die API xD.
@Fabio
Also ohne dich jetzt selbst angreifen zu wollen ... aber so KANN das schon mal gar nicht funktionieren. MP3 ist eigentlich ein NICHT-OpenSource Format. Lediglich die DE-Kodierung ist public ... für EN-Kodierung muss man eigentlich Lizenzkosten zahlen ... auch wenn es mit dem LAME MP3 Codec einen komplett freien Codec gibt ... dieser ist aber gerade in Deutschland mehr geduldet als legal. Auch kann man mit ihm nur relativ geringe EN-Kodierungen durchführen ... will man bessere Ergebnisse muss man sich eine Lizenz holen.
Auf Grund dessen hat Java KEINEN MP3-DE-Koder ... und desshalb kannst du aus Java auch ohne sowas kein MP3 laden ... weil Java nur für RAW-Formate *WAV* gebaut wurde.
Es gibt zwar auf der DL-Seite vom JMF auch einen MP3-DE-Koder ... aber ich hab gerade erlich gesagt keine Zeit um das zu testen da ich gleich los muss ... und ich wär erst in 1 1/2 Stunden wieder da. Der Link dazu wäre hier : http://www.oracle.com/technetwork/ja...ad-137625.html
Kurz zusammen gefasst : man braucht JMF und muss den MP3-Codec irgendwie installieren / registrieren ... und funktioniert halt scheinbar nur in einer JMF Applikation ... aber ich denke das wir es schaffen das alles soweit aus ein andere zu nehmen das wir nachher ne MP3-Lib-Jar zusammen haben und damit einfach über AudioSystem.getAudioInputStream() laden können ... ich guck mir das nachher mal intensiv an.
-
09.09.11 11:09 #49
Es gibt ne freie Implementierung die MP3s abspielt, allerdings muss die dann immer mit ausgeliefert werden:
http://www.javazoom.net/javalayer/documents.html...every second is a new spark, sets the universe aflame
(Bruce Dickinson)
Got something to say? http://www.plaintalk.de
-
09.09.11 11:42 #50
Ja wie gesagt, ich habe den Code zu Hause und habe diesen auch schon laufen lassen und es hat auch funkioniert. Wenn ich später zu Hause bin, werde ich mal den Code reinstellen.
Bitte die Code-Tags verwenden. Bei Java-Code: [java]...[/java]
Tutorials:
Automatisches erzeugen eines Inhaltsverzeichnisses (Javascript)
JAnimationPanel - Animationen für Swing/AWT
SWTRatingBar (Bewertungs-Composite) selbst programmieren
____________________________________________________________________________
Über eine Bewertung (Stern links unter dem Beitrag) oder ein Danke freue ich mich sehr.
-
19.01.12 12:33 #51
Hey Fabio,
es ist jetzt schon ne Weile her und ich mach' mir langsam Sorgen ob Du zuhause angekommen bist
Wie sieht's aus, hast Du den Code noch irgendwo? Ansonsten muss ich wohl ne MP3 lib einbinden. Ich will das Game dann bald mal fertig machen.
Ciao,
OneOf6...every second is a new spark, sets the universe aflame
(Bruce Dickinson)
Got something to say? http://www.plaintalk.de
-
19.01.12 12:57 #52
Hey,
sorry, da hab ich überhaupt nicht mehr dran gedacht.
Also nur mit der Standard-API wird es nicht funktionieren. Ich hab es z.B. so gemacht, dass ich Javazoom (der MP3-Library) eingebunden habe. Dadurch wird das MP3-Format zum AudioSystem hinzugefügt. Deshalb kann man dann auch MP3-Dateien abspielen. Das abspielen funktioniert dann so wie ich es oben schon beschrieben habe. Oder du verwendest direkt einen Player von Javazoom.
Ich bitte nochmals Entschuldigung für die späte Rückmeldung.
Gruß
FabioBitte die Code-Tags verwenden. Bei Java-Code: [java]...[/java]
Tutorials:
Automatisches erzeugen eines Inhaltsverzeichnisses (Javascript)
JAnimationPanel - Animationen für Swing/AWT
SWTRatingBar (Bewertungs-Composite) selbst programmieren
____________________________________________________________________________
Über eine Bewertung (Stern links unter dem Beitrag) oder ein Danke freue ich mich sehr.
-
19.01.12 13:02 #53
Kein Problem!

OK, dann weiß ich bescheid.
Danke,
OneOf6...every second is a new spark, sets the universe aflame
(Bruce Dickinson)
Got something to say? http://www.plaintalk.de
Ähnliche Themen
-
Eclipse für JME und J2SE
Von melmager im Forum JavaAntworten: 0Letzter Beitrag: 06.09.06, 11:59 -
jms mit j2se client
Von DealeyLama im Forum Enterprise Java (JEE, J2EE, Spring & Co.)Antworten: 3Letzter Beitrag: 26.12.05, 22:07 -
J2SE 1.5.0 soll in Zukunft J2SE 5.0 heißen?!
Von Thomas Darimont im Forum JavaAntworten: 3Letzter Beitrag: 30.06.04, 12:16 -
J2SE 1.5 beta 2
Von squeaker im Forum JavaAntworten: 5Letzter Beitrag: 29.06.04, 14:27 -
J2SE und Eclipse
Von zeromancer im Forum JavaAntworten: 9Letzter Beitrag: 11.02.04, 17:55



1Danke

Zitieren
Login





