10

私が作っているコンピュータ ゲームでは、音を出したいのは当然です。これまで、AudioClip を使用して WAV ファイルを再生してきました。このアプローチは問題なく機能しますが、WAV ファイルは巨大になる傾向があります。数秒の音は、数百 kB になります。95% オーディオのゲームをダウンロードすることに直面しています!

ここでの明らかなオプションは、MP3 または Ogg Vorbis を使用することです。しかし、私はこれで限られた成功しか収めていません.JLayerを使用してMP3を再生できます(ただし、同じスレッドで再生されます)。Oggに関しては、まったく運がありませんでした。さらに悪いことに、JLayer の法的地位は少し疑わしい面があります。

そこで私の質問は、Java 開発者と、サウンドについて実際にある程度知っている一般の人々の両方に向けたものです。どうにかして WAV から「脂肪を取り除く」ことはできますか? JavaでOggをプレイする方法はありますか? 代わりに使用すべき他のサウンド形式はありますか?

4

4 に答える 4

4

JOrbisライブラリを使用してOGG音楽を再生できます。作業サンプルの使用法については、ここでこれらのファイルを見ることができます。

また、ロスレスオーディオ圧縮を試してみました。たとえば、16ビットのモノラルサウンドを使用しました。各サンプルの上位バイトと下位バイトを分離し、それらを並べました。次に、各バイトが最後のバイトとの差で置き換えられる差分置換を適用しました。そして最後にGZIPを使用してデータを圧縮しました。データサイズを元のサイズの50〜60%に減らすことができました。残念ながら、これでは不十分だったので、OGG形式に切り替えました。

8ビットの音楽で気付いたのは、音量を変えると再生が非常にうるさくなることです。SourceDataLine.write()の直前でオーディオデータを16ビットにアップサンプリングすることで、この問題を解決しました。

于 2009-06-12T12:59:35.447 に答える
2

wav 形式を使用する場合は...

高品質のサウンド ファイルを使用することは、おそらくあまり重要ではありません。お気に入りの wav エディターを使用して、ビット レートを下げるか、モノラルに切り替えるか、またはその両方を行うことができます。これにより、大量のスペースが節約され、ゲームのプレイ中に品質の違いに気付くことはありません.

お役に立てれば。

于 2008-10-28T20:11:10.083 に答える
2

これらは時代遅れかもしれませんが、Xiph.org チーム (Ogg や Vorbis などを管理しているチーム) によって公式に認められています。 http://www.vorbis.com/software/#java

于 2008-10-28T19:51:31.543 に答える
2

あなたが説明した問題は、Java のサウンド用の Service Provider Interface (SPI) によって対処されます。その結果、JAR ファイルをクラスパスに追加するだけで、デフォルトの Java Sound API に機能が追加されます。したがって、コードを変更することなく、より多くのサウンド形式を処理できます。

前回これを試したとき、Javazoomの担当者が実際に動作する MP3 SPI JAR を提供してくれました。あなたが言及したJLayerに基づいていました。

Vorbis OGG には、SPI ライブラリもあるようです。JavazoomのVorbis SPIに関するドキュメントを確認してください。

于 2008-10-28T19:57:11.140 に答える