Question

Pour le jeu vidéo que je crée, je souhaite évidemment jouer du son. Jusqu'à présent, j'utilisais AudioClip pour lire les fichiers WAV. Bien que cette approche fonctionne correctement, les fichiers WAV ont tendance à être gigantesques. Quelques secondes de son finissent par être des centaines de kB. Je suis confronté à un téléchargement de jeu contenant 95% de l'audio!

L’option évidente serait d’utiliser MP3 ou Ogg Vorbis. Mais j'ai eu un succès limité avec ceci - je peux jouer des MP3 en utilisant JLayer (mais ça joue dans le même fil). Quant à Ogg, je n'ai pas eu de chance du tout. Pire encore, le statut juridique de JLayer est un peu discutable.

Ma question s'adresse donc aux développeurs Java et aux personnes qui connaissent réellement quelque chose à propos du son: que dois-je faire? Puis-je en quelque sorte "couper la graisse" de mes WAV? Est-il possible de jouer à Ogg en Java? Y a-t-il un autre format sonore que je devrais utiliser à la place?

Était-ce utile?

La solution

Vous pouvez utiliser la bibliothèque JOrbis pour lire de la musique OGG. Pour un exemple d'utilisation, vous pouvez consulter ces fichiers ici .

J'ai également expérimenté une compression audio sans perte, par exemple un son mono 16 bits. J'ai séparé les octets supérieurs et inférieurs de chaque échantillon et les ai placés l'un après l'autre. Ensuite, j'ai appliqué un remplacement différentiel où chaque octet est remplacé par sa différence par rapport au dernier octet. Et finalement utilisé GZIP pour compresser les données. J'ai pu réduire la taille des données à 50-60% de la taille d'origine. Malheureusement, cela ne suffisait pas, je me suis donc tourné vers le format OGG.

Une chose que j'ai remarquée avec la musique 8 bits est que si je change le volume audio, la lecture devient très bruyante. J'ai résolu ce problème en suréchantillonnant les données audio en 16 bits juste avant SourceDataLine.write ().

Autres conseils

Celles-ci sont peut-être obsolètes, mais elles sont officiellement reconnues par l'équipe de Xiph.org (qui gère entre autres Ogg et Vorbis). http://www.vorbis.com/software/#java

Le problème que vous décrivez est traité par l'interface SPI (Service Provider Interface) pour le son en Java. Le résultat est que le simple ajout de fichiers JAR à votre chemin de classe ajoutera des fonctionnalités à l'API Java Sound par défaut. Cela permet de gérer davantage de formats audio sans changer de code.

La dernière fois que j'ai essayé cela, les Javazoom ont offert un fichier JAR MP3 en mode SPI. Ce qui était basé sur le JLayer que vous avez mentionné.

Pour Vorbis OGG, il semble également qu’il existe désormais une bibliothèque SPI. Consultez la documentation sur le Vorbis SPI sur Javazoom.

Si vous décidez de conserver le format wav ...

Il n’est probablement pas très important d’avoir des fichiers son de haute qualité. Vous pouvez utiliser votre éditeur wav préféré pour réduire le débit, basculer en mono ou les deux. Cela économisera beaucoup d'espace et vous ne remarquerez pas la différence de qualité lorsque vous jouerez au jeu.

J'espère que cela vous aidera.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top