c# – 如何播放非PCM文件或将其转换为PCM?

下面的代码适用于一些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库.它很棒

上一篇:java – 如何从wav文件中获取PCM数据?


下一篇:如何混合PCM音频源(Java)?