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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM