Pergunta

Para o jogo de computador que eu estou fazendo, eu obviamente quiser reproduzir som. Até agora, eu estive usando AudioClip para reproduzir arquivos WAV. Embora esta abordagem funciona bem, os arquivos WAV tendem a ser gigantesca. Alguns segundos de som acabam sendo centenas de kB. Eu sou confrontado com ter um download jogo que é 95% áudio!

A opção óbvia aqui seria usar MP3 ou Ogg Vorbis. Mas eu tive sucesso limitado com isso - eu posso jogar MP3 usando JLayer (mas joga no mesmo segmento). Quanto Ogg, eu tive sorte nenhuma. Pior, estatuto jurídico da JLayer é um pouco sobre o lado duvidoso.

Assim, a minha pergunta é a ambos os desenvolvedores Java e, geralmente, as pessoas que realmente sabem algo sobre o som: O que eu faço? Posso de alguma forma "cortar a gordura" off meus WAVs? Existe alguma maneira de jogar Ogg em Java? Existe algum outro formato de som que eu deveria usar em vez disso?

Foi útil?

Solução

Você pode usar JOrbis biblioteca para tocar música OGG volta. Para trabalhar o uso de amostra que você pode olhar para esses arquivos aqui .

Eu também experimentou com alguma compressão de áudio lossless, por exemplo, eu tinha um som mono de 16 bits. I separou os bytes superiores e inferiores de cada amostra e colocá-los depois entre si. Então eu apliquei um substituto diferencial onde cada byte é substituído pela sua diferença em relação ao último byte. E, finalmente, utilizado GZIP para compactar os dados. I foi capaz de reduzir o tamanho dos dados de 50-60% do tamanho original. Infelizmente isso não foi o suficiente para que eu me virei para o formato OGG.

Uma coisa que notei com 8 bit music é que se altera o volume do áudio, a reprodução torna-se muito barulhento. Eu resolvi esse problema upsampling os dados de áudio em 16 bits para a direita antes do SourceDataLine.write ().

Outras dicas

Estes podem ser ultrapassada, mas eles são reconhecidos oficialmente pela equipe Xiph.org (que mantêm Ogg Vorbis e, entre outros). http://www.vorbis.com/software/#java

O problema que você descreve é ??dirigida pelo fornecedor de serviços Interface (SPI) para som em Java. O resultado é que simplesmente adicionando arquivos JAR para o seu classpath irá adicionar funcionalidade para o padrão Java Sound API. Assim, permitindo a manipulação de mais formatos de som sem alterar o código.

A última vez que tentei isso os Javazoom pessoas ofereceram um JAR SPI MP3 trabalhando. Que foi baseado no JLayer você mencionou.

Para Vorbis OGG lá agora também parece ser uma biblioteca SPI. Confira os docs no Vorbis SPI em Javazoom.

Se você decidir ficar com o formato wav ...

Provavelmente não é muito importante ter arquivos de som de alta qualidade. Você pode usar seu editor wav favorito para diminuir a taxa de bits, mude para mono, ou ambos. Isso vai economizar toneladas de espaço e você não vai notar a diferença na qualidade durante o jogo.

Espero que isso ajude.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top