以下代码适用于某些 wav 文件,但适用于其他文件时,我得到“InvalidOperationException 未处理。Message=Sound API 仅支持播放 PCM 波形文件。”
var webClient = new WebClient();
webClient.DownloadFile(url, fileName);
var fileSound = new SoundPlayer(fileName);
fileSound.PlaySync();
有没有办法以编程方式检查 wav 文件是否“坏”(不是 PCM 波形文件),然后根据需要进行转换?
奇怪的是,该代码可以在旧的 Delphi 应用程序中运行 - 所有 wav 文件都可以正常播放。这是德尔福代码:
filename := GetEnvironmentVariable('TEMP')+'\archieAndDingbat.wav';
URLDownloadToFile(nil, PChar(url), PChar(filename), 0, nil);
PlaySound(filename);
我在资源管理器中查看了这两个文件的属性,发现确实存在差异。对于播放的文件,其音频格式为PCM;不会玩的是CCITT u-Law。
所以...我要么需要一种在下载这些文件后从 CCITT u-Law 即时转换为 PCM 的方法(它们是从 URL 下载然后在本地播放),或者可能是一种与 PlaySync() 不同的播放这些文件的方式...
查看 mitov 的 audiolab 库。效果很好
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)