2

Wave がデバッグ中に再生されません。CTRL+F5 を押すと、素敵な WAV が得られ、コンソールはファイル カーソル位置 ( buf.PlayPosition) を書き出し、サウンドが終了するとメソッドは終了します。デバッグ中 (F5 キーを押したとき) はオーディオ出力はありませんが、コンソール ウィンドウでファイル カーソルの位置が増加し、メソッドは例外なく終了します。

using Microsoft.DirectX.DirectSound;

public void Play()
    {
        var fileName = "bass.wav";
        using (var stream = new FileStream(fileName, FileMode.Open, FileAccess.Read))
        {       
            using (var dev = new Device())
            {
                dev.SetCooperativeLevel(this, CooperativeLevel.Priority);
                using (Buffer buf = new Buffer(stream, dev))
                {
                    buf.Volume = 0;
                    buf.Play(0, BufferPlayFlags.Default);
                    while (buf.Status.Playing)
                    {
                        System.Console.WriteLine("playing " + buf.PlayPosition);
                    }
                }
            }
        }
    }

何か案は?

4

2 に答える 2

3

たぶん、BufferDescriptionを使用してバッファに「グローバルフォーカス」を与える必要があります。C ++ドキュメントから:

「この例のDSBCAPS_GLOBALFOCUSフラグは、アプリケーションウィンドウがフォアグラウンドにない場合でもバッファーの再生を継続することを保証します。このフラグがないと、別のアプリケーションまたはダイアログボックスでさえ入力フォーカスがあるときにバッファーがミュートされます。」

public SecondaryBuffer(Stream、BufferDescription、Device);を使用してみてください。コンストラクターの形式。

于 2010-01-26T01:55:18.850 に答える
0

Visual Studio Hosting Process を無効にしたところ、問題が解決したようです。

于 2010-01-26T21:45:05.847 に答える