秋天的梦想

 

Windows Phone7开发,一步一步完成一个即时聊天软件之咏叹调:在Windows phone 7 中如何压缩WAV音频文件

最近完成了一个Windows phone 7版本的聊天软件,回顾了一下开发历程,感慨良多。

今天先感叹一的主题是,如何压缩WAV 音频文件。

目前Wp7中录制的音频格式是WAV,然而WAV的存储空间很大,并且考虑到在聊天软件中,直接发送WAV格式的音频显然也是一种损耗流量的做法。

目前用WP7手机录制的WAV格式有如下特点:采样率为16KHz,每次采用16-bit 数据。
目前并没有找到好的方法将WAV 格式转成压缩率更高的其他音频格式的方法(IPhone和Andiord都支持的AMR就是一个比较好的音频格式),于是主要思路就是考虑如何减少采样率:

将原生录制的格式转发为8KHz 8-bit的数据。

所以得到如下代码:

  byte[] NormalizeWaveData(byte[] sourceData)
        {
            int len = (sourceData.Length / 2 / 2);
            using (MemoryStream ms = new MemoryStream(len))
            {
                for (int i = 0; i < len; i++)
                {
                    sbyte data = (sbyte)sourceData[i * 4 + 1];
                    ms.WriteByte((byte)(data + 128));
                }

                return ms.ToArray();
            }
        }

通过测试,成功,文件大小为原来的1/4,基本满足要求。

哪位大侠如果有更好的方法,请告之。

顺便在这里推荐一个满分的聊天软件iUU,各个平台都有,下面是WP7平台的截图,软件的下载地址是:http://www.windowsphone.com/zh-CN/apps/95bda343-124c-4220-8861-0495815499d6。或者在手机商店直接搜索iUU,希望大家支持,我会在后续中逐步公开源代码。

iuu1  wp1 wp3

posted on 2012-03-14 21:44  秋天的梦想  阅读(1042)  评论(14编辑  收藏  举报

导航