API を使用System.Media.SoundPlayer
してアプリケーションでサウンド ファイルを再生しています。
using System.Media;
public class MySoundPlayer
{
private SoundPlayer player = new SoundPlayer();
public PlayFile(string file)
{
try
{
player.SoundLocation = fileName;
player.Load();
player.Play();
}
catch (Exception e) { Debug.WriteLine(e.Message); }
}
}
これは、ほぼすべての WAV ファイルで完全に機能します。ただし、ファイル サイズが 4GB を超える可能性がある場合に備えて、 RF64タイプの 1 つのタイプの wav ファイルがあることがわかりましたSoundPlayer
(これには余分な (ただし、私の場合は常に空の) 'JUNK' チャンクがあります)。例外はスローされませんが、再生されません. 一方、Windows Media Player では問題なく再生されるため、ファイルは正しいようです。
別の方法として、ファイルを再生する別の方法を試しました。
[DllImport("winmm.dll", SetLastError = true, CallingConvention = CallingConvention.Winapi)]
static extern bool PlaySound(string pszSound,IntPtr hMod,SoundFlags sf);
public PlayFile(string file)
{
// (These flags have been defined as 0x00020000 and 0x0001)
PlaySound(filename, IntPtr.Zero, SoundFlags.SOUND_FILENAME | SoundFlags.SOUND_ASYNC);
}
繰り返しますが、これは通常の WAV ファイルを完全に再生しますが、「Ding!」というエラーが発生します。RF64 ファイルを取得したとき。
これらの API を取得してファイルを再生する方法はありますか? または、RF64 WAV ファイルを再生する別の Windows API はありますか?