如何即时播放非 PCM 文件或将其转换为 PCM?

2023-11-30

以下代码适用于某些 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(使用前将#替换为@)

如何即时播放非 PCM 文件或将其转换为 PCM? 的相关文章

随机推荐

  • 如何从 Dataframe 中删除页眉和页脚?

    我正在读取一个文本 不是 CSV 文件 其中包含页眉 内容和页脚 使用 spark read format text option delimiter load file 我可以通过以下方式访问标题df first 有没有什么接近的df l
  • Java,需要一个while循环才能达到eof。即 while !eof,继续解析

    我目前有一个正在工作的解析器 它解析一次文件 不是我想要的 然后将解析后的数据输出到文件中 我需要它继续解析并附加到同一输出文件 直到输入文件末尾 看起来像这样 try my code parsing the data and append
  • 发送到 webapp 的 POST 请求的最大大小

    我在 Google Apps 脚本项目中经常使用 doPost 函数回调 最近一直在寻找有关 GAS Web 应用程序接受 POST 请求的最大大小的文档 但无济于事 在限制和配额页面中 它提到了 url fetch 相关数据 我认为这些数
  • 元组从列表中重复消除

    考虑以下元组列表 val input List A B C B B A 并假设元素 A B and B A 是相同的 因此是重复的 从上面的列表中消除重复的有效方法是什么 最好是在 Scala 中 这意味着所需的输出是另一个列表 val d
  • pandas 多索引排序特定字段

    I obtained a multi index in pandas by running series describe for a grouped dataframe How can I sort these series by mod
  • 将 System.ComponentModel 默认值属性内的 DateTime 属性的默认值设置为 DateTime.Now

    有谁知道如何使用 System ComponentModel DefaultValue 属性指定 DateTime 属性的默认值 例如我尝试这个 DefaultValue typeof DateTime DateTime Now ToStr
  • 父级和子级复选框

    div div
  • 类型错误:“int”对象不可调用

    鉴于以下情况 a 23 b 45 c 16 round a b 0 9 c 运行上面的命令会输出错误 TypeError int object is not callable 如何将输出舍入为整数 在代码的其他地方 您有类似这样的内容 ro
  • Makefile - 找不到共享库

    我有一个 C Linux 项目的 Makefile MODE dbg DIR somdir MODE SRC FILES a cpp b cpp H FILES a h LDFLAGS L DIR lib linux Wl R ORIGIN
  • 如何优化 vlookup 以获得高搜索次数? (VLOOKUP 的替代方案)

    我正在寻找 vlookup 的替代方案 在感兴趣的上下文中提高性能 上下文如下 我有一个很大的 key data 数据集 100 000 条记录 我想对数据集执行大量VLOOKUP操作 典型用途是对整个数据集重新排序 我的数据集没有重复的键
  • Android 地图 API v2 中的彩色折线

    我想在 android 地图 api 版本 2 中绘制折线 我希望它有多种颜色 最好有渐变 但在我看来 折线只允许有单色 我怎样才能做到这一点 我已经有了 api v1 覆盖层来绘制我喜欢的内容 所以大概我可以重用一些代码 public c
  • 在Python中获取具有预先指定扩展名的文件基名

    我有以下字符串 path1 path2 foo bar qux txt 我想要做的是通过指定扩展名来提取基本名称 如果我将扩展定义为 bar qux txt那么基本名称是 foo 那么如果扩展名是 qux txt那么基数是 foo bar
  • Matplotlib 视频创建

    编辑 欧内斯特的重要性提供了答案 但是我仍然邀请大家解释 为什么savefig逻辑不同于animation logic 我想制作视频matplotlib 我浏览了手册和示例 但我就是不明白 关于matplotlib 我总是复制示例 因为经过
  • 关注 R 中的startsWith 和多种模式

    我注意到一个问题或疑虑startsWith 功能 以下代码显示两个不同的选择 第一个行为正常 是这样的代码块 dt test lt data table a c abcd poo abla ba id c 1 2 3 4 dt test s
  • 如何将 iOS 设备键盘更改为特定语言

    在iOS中 开发者可以获取当前设备语言和区域设置 但是 如果我们想根据用户的偏好将键盘设置为特定语言 区域设置 当用户位于应用程序的不同部分时 该怎么办 在我的应用程序中 有多种语言 我希望向用户显示阿拉伯语键盘 例如 当用户位于阿拉伯语部
  • 序列化 Drawable 时出现问题

    我有一个对象 它具有三个字段 两个字符串和一个Drawable public class MyObject implements Serializable private static final long serialVersionUID
  • 按作者列出类别〜WITH COUNTER〜(Wordpress)

    这是我得到的代码 它给出了给定作者已发表的类别的列表 但是 我非常希望类别名称旁边有一个数字 告诉作者在不同类别中发表了多少篇文章 有谁知道一个技巧吗 谢谢
  • 无需安装即可使用 SqlServer CE

    Given 干净的机器 不存在 SQL Server CE 一组 sdf 文件 Sql Server CE 数据库 不管它们是如何到达那里的 相关 Sql Server CE 的 DLL sqlceca35 dll sqlcecompact
  • 使用 angularjs 过滤两个选定日期之间的表数据时出现问题

    我正在根据两个选定的日期过滤表格内容 它确实过滤了日期 但结果不正确 dateRange Filter 写在控制器中 生产控制员 angular module app controller ProductionController scop
  • 如何即时播放非 PCM 文件或将其转换为 PCM?

    以下代码适用于某些 wav 文件 但适用于其他文件时 我得到 InvalidOperationException 未处理 Message Sound API 仅支持播放 PCM 波形文件 var webClient new WebClien