Spielen kleine sounds in Java Spiel
Für die computer-Spiel, das ich mache, ich möchte natürlich spielen sound. So weit, ich habe mit AudioClip Abspielen von WAV-Dateien. Obwohl dieser Ansatz funktioniert gut, die WAV-Dateien sind in der Regel gigantisch. Ein paar Sekunden der sound am Ende wird Hunderte von kB. Ich bin konfrontiert mit, dass Sie ein Spiel herunterladen, das 95% audio!
Die offensichtliche Möglichkeit, hier wäre die Verwendung von MP3-oder Ogg-Vorbis. Aber ich hatte einen begrenzten Erfolg mit diesem - ich kann MP3 spielen, mit JLayer (aber es spielt im gleichen thread). Als für Ogg -, ich habe kein Glück überhaupt. Schlimmer noch, JLayer rechtlichen status ist ein bisschen auf der dubiosen Seite.
Also meine Frage ist an beide Java-Entwickler und in der Regel Menschen, die wirklich wissen, etwas über Klang: Was soll ich tun? Kann ich das irgendwie "trimmen das Fett" aus meinem WAVs? Gibt es eine Möglichkeit der Wiedergabe von Ogg in Java? Gibt es eine andere sound-format sollte ich stattdessen verwenden?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnten Sie JOrbis Bibliothek zum Abspielen von OGG-Musik. Für arbeiten, die Probe-Nutzung kann man sich diese Dateien hier.
Ich experimentierte auch mit einige verlustfreie audio-Kompression, zum Beispiel hatte ich ein 16-bit-mono-sound. Ich getrennt den oberen und unteren bytes von jeder Probe und steckte Sie nach einander. Dann bewarb ich mich ein differential-Ersatz, wo jedes byte wird ersetzt durch die Differenz aus dem letzten byte. Und schließlich benutzt GZIP zur Komprimierung der Daten. Ich war in der Lage zu reduzieren die Größe der Daten zu 50-60% der ursprünglichen Größe. Leider war dies nicht genug, also drehte ich mich zu den OGG-format.
Eine Sache, die ich bemerkt mit 8-bit-Musik ist, dass, wenn ich ändern Sie die audio-Lautstärke, die Wiedergabe wird sehr laut. Ich löste dieses problem durch upsampling audio-Daten auf 16 bit Recht vor, die SourceDataLine.write().
Diese veraltet sein, aber Sie sind offiziell anerkannt von der Xiph.org team (die pflegen, Ogg Vorbis, unter anderem).
http://www.vorbis.com/software/#java
Das von dir beschriebene problem wird behoben, indem der Service Provider Interface (SPI) für sound in Java. Das Ergebnis ist, dass einfach hinzufügen JAR Dateien in den classpath hinzufügen werden, die die Funktionalität der Standard-Java-Sound-API. So ermöglicht die Verarbeitung von mehr sound-Formate ohne code ändern.
Letzten Zeit habe ich versucht, dieses die Javazoom Menschen angeboten, die eine funktionierende MP3-SPI-GLAS. Auf der Grundlage JLayer, die Sie erwähnt.
Für OGG Vorbis gibt es jetzt auch zu sein scheint, eine SPI-Bibliothek. Überprüfen Sie heraus die docs auf der Vorbis SPI auf Javazoom.
Wenn Sie sich entscheiden, zu bleiben mit das wav-format...
Es ist wahrscheinlich nicht sehr wichtig, um eine hohe Qualität sound-Dateien. Sie können Ihre Lieblings-wav-editor, um niedriger die bitrate ist, auf mono Umschalten, oder beide. Sparen Sie Tonnen von Raum, und Sie werden nicht merken, den Unterschied in der Qualität während des Spiels.
Hoffe, das hilft.