- - PR -
メモリ上のWaveデータの再生
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2008-09-18 15:32
OS:WindowsXP
言語:C#2005 はじめまして。みなさん知恵を貸してください。 現在、メモリ上(byte[])のWavデータが存在しますが これを再生しようとして困っています。 元々はフォルダ内あるデータを指定して再生を行っていたのですが、 フォルダには作成したくないとのことで、メモリ上に持つことになりました。 元のソースでは再生も途中再生も出来ていたのですが、 今回メモリ上のデータを再生するとなると、困ってしまって・・・ 現在は private System.Runtime.InteropServices.GCHandle gcHandle; [DllImport("winmm.dll", EntryPoint = "PlaySound" )] private static extern bool PlaySound( IntPtr pszSound, IntPtr hModule, int dwFlags); public void OpenSound(byte[] file) { this.gcHandle = System.Runtime.InteropServices.GCHandle.Alloc( file, System.Runtime.InteropServices.GCHandleType.Pinned); PlaySound(this.gcHandle.AddrOfPinnedObject(), IntPtr.Zero, 0x0004 | 0x0001); } このような形で再生をしようしています。 しかし、何度やっても音が一瞬しか出ない・・・ また、調べてみても途中再生等が無い・・・ と困っています。 どなたか、参考になるサイトかソースをお願いします。 |
|
投稿日時: 2008-09-18 17:26
VC#2005とのことですので、.NET Framework2.0ですから、
System.Media.SoundPlayerクラスとSystem.IO.MemoryStreamクラスを 使って簡単に実現できます。 byte[]を元にMemoryStreamのインスタンスを生成し、 これをSoundPlayerのStreamを引数に取るコンストラクタに渡して、 SoundPlayerのインスタンスを生成します。 後は、Play/PlayAsyncメソッドで音声を再生します。 |
1