WPF中 PCM 转 WAV

个人写博客的格式一般是,遇到什么问题,思路是什么,怎么解决的,最终做到什么程度。

问题描述:PCM 音频文件 如何 转化为WAV 文件 并在 WPF中播放出来。

思路:我是做项目要做这一块,根本不知道有啥区别,前辈的代码里面在前面加了44个字节,网上的代码也是。

解决:据我判断和浅显的推理(依据上一篇博文所获得经验):PCM这个二进制的音频文件确实描述了音频信息,但是想要播放PCM文件就不等不预先知道一些必要的参数(如音频是单声道还是双声道,采样率是什么等),其实可以说是PCM并没有告诉一些必要的解码信息,要想把它转化成可以播放的WAV文件 就需要给它加44个字节属于WAV文件的帧头信息,这些信息具体在代码中会有展示。在WPF中 播放 WAV文件 是比较常见的子问题,大家可以去搜一下。

代码等下贴,开发的电脑没在手边。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、Java实现wav音频文件换为pcm音频文件(AudioUtils.java) 2、Java实现播放pcm音频文件(PCMPlay.java) WAVwav是一种无损的音频文件格式,WAV符合 PIFF(Resource Interchange File Format)规范。所有的WAV都有一个文件头,这个文件头音频流的编码参数。WAV对音频流的编码没有硬性规定,除了PCM之外,还有几乎所有支持ACM规范的编码都可以为WAV的音频流进行编码。 PCM:PCM(Pulse Code Modulation----脉码调制录音)。所谓PCM录音就是将声音等模拟信号变成符号化的脉冲列,再予以记录。PCM信号是由[1]、[0]等符号构成的数字信号,而未经过任何编码和压缩处理。与模拟信号比,它不易受传送系统的杂波及失真的影响。动态范围宽,可得到音质相当好的影响效果。 简单来说:wav是一种无损的音频文件格式,pcm是没有压缩的编码方式。 WAVPCM的关系 WAV可以使用多种音频编码来压缩其音频流,不过我们常见的都是音频流被PCM编码处理的WAV,但这不表示WAV只能使用PCM编码,MP3编码同样也可以运用在WAV,和AVI一样,只要安装好了相应的Decode,就可以欣赏这些WAV了。在Windows平台下,基于PCM编码的WAV是被支持得最好的音频格式,所有音频软件都能完美支持,由于本身可以达到较高的音质的要求,因此,WAV也是音乐编辑创作的首选格式,适合保存音乐素材。因此,基于PCM编码的WAV被作为了一种介的格式,常常使用在其他编码的相互换之,例如MP3换成WMA。 简单来说:pcm是无损wav文件音频数据的一种编码方式,但wav还可以用其它方式编码。
你想要一个能够将重量数字换为对应文的 WPF 控件吗?我可以帮你实现这个功能。 首先,你需要创建一个 WPF 用户控件,包含一个输入框和一个文本框。用户在输入框输入数字,点击“换”按钮后,程序将数字换为对应的文重量,并在文本框显示结果。 下面是一个示例代码,可以完成这个功能: ```c# public partial class WeightConverter : UserControl { public WeightConverter() { InitializeComponent(); } private void Button_Click(object sender, RoutedEventArgs e) { // 获取用户输入的数字 double num = double.Parse(txtBoxNumber.Text); // 换为文重量 string result = ConvertToChinese(num); // 在文本框显示结果 txtBoxResult.Text = result; } private string ConvertToChinese(double num) { // 将数字换为字符串 string numStr = num.ToString(); // 分离整数部分和小数部分 string[] parts = numStr.Split('.'); // 整数部分换为文数字 string integerPart = ConvertIntegerPartToChinese(int.Parse(parts[0])); // 小数部分换为文数字 string decimalPart = ConvertDecimalPartToChinese(int.Parse(parts[1])); // 拼接整数部分和小数部分,并加上单位“公斤” string result = integerPart + "点" + decimalPart + "公斤"; return result; } private string ConvertIntegerPartToChinese(int num) { // TODO: 实现整数部分换为文数字的代码 return ""; } private string ConvertDecimalPartToChinese(int num) { // TODO: 实现小数部分换为文数字的代码 return ""; } } ``` 上面的代码,`ConvertToChinese` 方法将数字换为文重量,其调用了 `ConvertIntegerPartToChinese` 和 `ConvertDecimalPartToChinese` 方法,这两个方法分别用于将整数部分和小数部分换为文数字。 你需要在这两个方法实现数字换的逻辑。例如,将数字 123 换为“一百二十三”,将数字 456 换为“四百五十六”等等。 完成这些步骤后,你就可以在 WPF 应用程序使用这个自定义控件了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值