Javaのヒント24:アプリケーションでオーディオを再生する方法

Javaアプリケーションでのオーディオファイルの再生は、Javaの現在のリリースでは公式にはサポートされていません。しかし、恐れることはありません。方法があります。このヒントでは、Javaアプレットでオーディオクリップを再生するための基本的な手順の説明から始めて、Javaアプリケーションのサポートに進む方法を説明します。

アプレットでオーディオクリップを再生するのは非常に簡単で、次の手順が必要です。

  • AudioClipオブジェクトを作成する
  • .auサウンドファイルをAudioClipにロードします
  • サウンドを1回再生するか、連続してループします
  • 再生を停止します

これらの手順のコードは次のようになります。

importjava.applet。*; AudioClip ac = getAudioClip(getCodeBase()、soundFile); ac.play(); // 1回再生ac.stop(); // ac.loop();の再生を停止します //継続的に再生

これと同じコードを使用してJavaアプリケーションでオーディオクリップを再生するのは理にかなっているように思われます。残念ながら、これを行うと、コンパイラからエラーが発生します。どうして?のでAudioClip、オブジェクトとgetAudioClip()メソッドは、の一部であるjava.appletでのパッケージ-アプリケーションの一部ではありません。良いニュースは、私たちが飛び込んで物事を自分たちで機能させることができるということです。

この問題を解決する秘訣は、SunがJDKで提供している文書化されていない機能を使用することです。Sun JDKのclasses.zipファイルを(さまざまなzipfileユーティリティのいずれかを使用して)覗いてみると、java.appletなどの標準のJavaパッケージだけでなく、sun.audio見つかります。(これらはディレクトリsun / audioにあります。)

sun.audioパッケージには、我々は、オーディオクリップを再生することができるように必要なものすべてが含まれています!コードは次のとおりです。

インポートsun.audio。*; //sun.audioパッケージをインポートしますimportjava.io。*; // **必要に応じてこれをアプリケーションコードに追加します//オーディオファイルへの入力ストリームを開きます。InputStream in = new FileInputStream(Filename); //入力ストリームからAudioStreamオブジェクトを作成します。AudioStream as = new AudioStream(in); //クラスAudioPlayerの静的クラスメンバー "player"を使用して//クリップを再生します。AudioPlayer.player.start(as); //同様に、オーディオを停止します。AudioPlayer.player.stop(as);

オーディオストリームソースとしてURLを使用するには、入力ストリームとオーディオストリームの設定を次のように置き換えます。

AudioStream as = new AudioStream(url.openStream()); 

オーディオストリームを継続的に再生すると、少し複雑になります。

//前述のようにオーディオストリームを作成します。// AudioDataソースを作成します。AudioDataデータ= as.getData(); // ContinuousAudioDataStreamを作成します。ContinuousAudioDataStream cas = new ContinuousAudioDataStream(data); //オーディオを再生します。AudioPlayer.player.play(cas); //同様に、オーディオを停止します。AudioPlayer.player.stop(cas);

そして、あなたはそれを持っています。この手法では、文書化されていない機能を使用することを忘れないでください。現在のSunJDK以外で動作するという保証はありません。

Chong Ser Wahは、シンガポールのJavaコンピテンシーセンターのコンサルタントです。センターのJavaカップコンテストをチェックしてください。

このストーリー「Javaヒント24:アプリケーションでオーディオを再生する方法」は、もともとJavaWorldによって公開されました。