次のコードは一部の wav ファイルで機能しますが、他のコードでは「InvalidOperationException was unhandled. Message=Sound API only supports Playing PCM wave files.」というメッセージが表示されます。
var webClient = new WebClient();
webClient.DownloadFile(url, fileName);
var fileSound = new SoundPlayer(fileName);
fileSound.PlaySync();
wav ファイルが「不良」(PCM wave ファイルではない) かどうかをプログラムで確認し、必要に応じて変換する方法はありますか?
奇妙なのは、コードが従来の Delphi アプリで機能することです。すべての wav ファイルは正常に再生されます。Delphi コードは次のとおりです。
filename := GetEnvironmentVariable('TEMP')+'\archieAndDingbat.wav';
URLDownloadToFile(nil, PChar(url), PChar(filename), 0, nil);
PlaySound(filename);
エクスプローラーで 2 つのファイルのプロパティを確認したところ、実際に違いがあることがわかりました。再生できるファイルのオーディオ形式は PCM です。再生されないのは CCITT u-Law です。
だから...これらのファイルをダウンロードした後、その場でCCITT u-LawからPCMに変換する方法が必要です(URLからダウンロードしてローカルで再生します)か、おそらくPlaySync()とは異なるこれらのファイルの再生方法が必要です...