0

オーディオファイルをループしようとしていますが、他のさまざまな方法を試したところ、音楽が再生されません。

私の基本的なコードは次のとおりです。

import java.io.*;
import sun.audio.*;

public class PlayMusic {


    public void playSound() {
        try {
            AudioPlayer p = AudioPlayer.player;
            AudioStream as = new AudioStream(new FileInputStream("02 River Flows In You.wav"));
            p.start(as);


        } catch (IOException IOE) {
        }
    }
4

1 に答える 1

0

sun.audio.AudioPlayer が使用されているのを見たことがありません。私はいつも javax.sound.sampled ライブラリを使用してきました。

どうやって出会ったか教えてくれるかもしれません。私にはかなり古いコード (10 年くらい?) のように見えますが、少し制限された側面もあります。

1 回も再生されない場合は、次の URL フォームを試してみてください。

     AudioStream audiostream = new AudioStream(url.openStream());
     AudioPlayer.player.start(オーディオストリーム);

次に、コードをループに入れてみてください。.start コマンドがブロックするかどうかに大きく依存します。別のスレッドを起動する場合 (ほとんどの場合)、ファイルがいつ終了するかを把握する必要がありますが、それを行うためのコマンドが提供されていません! この仕様には、ContinuousAudioDataStream を作成してそれを管理する可能性も記載されています。

このライブラリについてわからないことがなければ、再生には javax.sound.sampled.Clip または javax.sound.sampled.SourceDataLine を使用することをお勧めします。クリップには、ループ用に設定できるブール値がありますが、最初にファイル全体をメモリにロードする必要があります。SourceDataLine は、URL またはファイルの場所から再生し、リスナーを実装してファイルの処理が完了したことを通知できます。

http://docs.oracle.com/javase/tutorial/sound/playing.html

于 2013-02-05T18:55:12.853 に答える