下面的代码适用于一些wav文件,但我得到的是“InvalidOperationException未处理.Message = Sound API仅支持播放PCM wave文件.”
var webClient = new WebClient();
webClient.DownloadFile(url, fileName);
var fileSound = new SoundPlayer(fileName);
fileSound.PlaySync();
有没有办法以编程方式检查wav文件是否“坏”(不是PCM波形文件),然后根据需要进行转换?
奇怪的是,代码在传统的Delphi应用程序中运行 – 所有的wav文件都可以正常运行.这是Delphi代码:
filename := GetEnvironmentVariable('TEMP')+'\archieAndDingbat.wav';
URLDownloadToFile(nil, PChar(url), PChar(filename), 0, nil);
PlaySound(filename);
我查看了资源管理器中两个文件的属性,我发现确实存在差异.对于播放的文件,其音频格式为PCM;不会参加的是CCITT u-Law.
所以…我需要一种方法在下载这些文件后从CCITT u-Law转换为PCM(它们从网址下载然后在本地播放)或者可能是播放这些文件的不同方式而不是PlaySync() …
解决方法:
看看mitov的audiolab库.它很棒