青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

牽著老婆滿街逛

嚴以律己,寬以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 0 .

音頻編解碼-speex庫的使用方法

轉載自:http://www.rosoo.net/a/201010/10363.html

Speex是近年來開發出的一套功能強大的語音引擎,能夠實現高質量和低比特率的編碼。它不僅提供了基于碼激勵線性預測(CELP)算法的編/解碼模塊, 而且在其最新發布的版本中還提供了聲音預處理和聲學回聲消除模塊,為保障IP網絡中的語音通信質量提供了技術手段。此外,Speex還具有壓縮后的比特率 低(2~44 kbps)的特點,并支持多種比特率。這些特點使得Speex特別適合VoIP的系統。

雖然是開源的,但是使用的人還不是很多,網上的資料也很少,下面簡單給大家介紹一下如何使用speex的API。

 

一:編碼流程
使用Speex的API函數對音頻數據進行壓縮編碼要經過如下步驟:
1、定義一個SpeexBits類型變量bits和一個Speex編碼器狀態變量enc_state。
2、調用speex_bits_init(&bits)初始化bits。
3、調用speex_encoder_init(&speex_nb_mode)來初始化enc_state。其中speex_nb_mode是SpeexMode類型的變量,表示的是窄帶模式。還有speex_wb_mode表示寬帶模式、speex_uwb_mode表示超寬帶模式。
4、調用函數int speex_encoder_ ctl(void *state, int request, void *ptr)來設定編碼器的參數,其中參數state表示編碼器的狀態;參數request表示要定義的參數類型,如SPEEX_ GET_ FRAME_SIZE表示設置幀大小,SPEEX_ SET_QUALITY表示量化大小,這決定了編碼的質量;參數ptr表示要設定的值。
可通過speex_encoder_ctl(enc_state, SPEEX_GET_FRAME_SIZE, &frame_size) 和speex_encoder_ctl(enc_state, SPEEX_SET_QUALITY, &quality)來設定編碼器的參數。
5、初始化完畢后,對每一幀聲音作如下處理:調用函數speex_bits_reset(&bits)再次設定SpeexBits,然后調用函數speex_encode(enc_state, input_frame, &bits),參數bits中保存編碼后的數據流。
6、編碼結束后,調用函數speex_bits_destroy (&bits),    speex_encoder_destroy (enc_state)來
二:解碼流程
同樣,對已經編碼過的音頻數據進行解碼要經過以下步驟:
1、     定義一個SpeexBits類型變量bits和一個Speex編碼狀態變量enc_state。
2、   調用speex_bits_init(&bits)初始化bits。
3、   調用speex_decoder_init (&speex_nb_mode)來初始化enc_state。
4、    調用函數speex_decoder_ctl (void *state, int request, void *ptr)來設定編碼器的參數。
5、   調用函數 speex_decode(void *state, SpeexBits *bits, float *out)對參數bits中的音頻數據進行解編碼,參數out中保存解碼后的數據流。
6、   調用函數speex_bits_destroy(&bits), speex_ decoder_ destroy (void *state)來關閉和銷毀SpeexBits和解碼器。
 
下面是一段實例代碼:
  1. #include <speex.h> 
  2. #include <stdio.h> 
  3. /*幀的大小在這個例程中是一個固定的值,但它并不是必須這樣*/ 
  4. #define FRAME_SIZE 160 
  5.   
  6. int main(int argc, char **argv) 
  7. char *inFile; 
  8. FILE *fin; 
  9. short in[FRAME_SIZE]; 
  10. float input[FRAME_SIZE]; 
  11. char cbits[200]; 
  12. int nbBytes; 
  13. /*保存編碼的狀態*/ 
  14. void *state; 
  15. /*保存字節因此他們可以被speex常規讀寫*/ 
  16. SpeexBits bits; 
  17. int i, tmp; 
  18. //新建一個新的編碼狀態在窄寬(narrowband)模式下 
  19. state = speex_encoder_init(&speex_nb_mode); 
  20. //設置質量為8(15kbps) 
  21. tmp=8; 
  22. speex_encoder_ctl(state, SPEEX_SET_QUALITY, &tmp); 
  23. inFile = argv[1]; 
  24.   
  25. fin = fopen(inFile, "r"); 
  26. //初始化結構使他們保存數據 
  27. speex_bits_init(&bits); 
  28. while (1) 
  29. //讀入一幀16bits的聲音 
  30. fread(in, sizeof(short), FRAME_SIZE, fin); 
  31. if (feof(fin)) 
  32. break
  33. //把16bits的值轉化為float,以便speex庫可以在上面工作 
  34. for (i=0;i<FRAME_SIZE;i++) 
  35. input[i]=in[i]; 
  36.  
  37. //清空這個結構體里所有的字節,以便我們可以編碼一個新的幀 
  38. speex_bits_reset(&bits); 
  39. //對幀進行編碼 
  40. speex_encode(state, input, &bits); 
  41. //把bits拷貝到一個利用寫出的char型數組 
  42. nbBytes = speex_bits_write(&bits, cbits, 200); 
  43. //首先寫出幀的大小,這是sampledec文件需要的一個值,但是你的應用程序中可能不一樣 
  44. fwrite(&nbBytes, sizeof(int), 1, stdout); 
  45. //寫出壓縮后的數組 
  46. fwrite(cbits, 1, nbBytes, stdout); 
  47.   
  48. //釋放編碼器狀態量 
  49. speex_encoder_destroy(state); 
  50. //釋放bit_packing結構 
  51. speex_bits_destroy(&bits); 
  52. fclose(fin); 
  53. return 0; 

 

posted on 2012-11-22 01:27 楊粼波 閱讀(3694) 評論(0)  編輯 收藏 引用 所屬分類: 文章收藏

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久久精品国产一区二区三区| 性欧美大战久久久久久久久| 欧美顶级大胆免费视频| 欧美制服丝袜第一页| 午夜精品久久久久久99热| 欧美亚洲一级片| 久久综合久色欧美综合狠狠| 免费一级欧美片在线观看| 欧美精彩视频一区二区三区| 欧美日韩一区二区三| 国产精品一区二区三区免费观看 | 先锋影音网一区二区| 午夜宅男欧美| 免费视频亚洲| 欧美性一区二区| 国产一区二区三区久久 | 激情综合自拍| 亚洲人体大胆视频| 午夜精品久久久久久久男人的天堂 | 极品少妇一区二区三区精品视频| 亚洲成在人线av| 中文网丁香综合网| 久久久91精品国产一区二区三区 | 亚洲欧美日韩在线高清直播| 久久精品亚洲乱码伦伦中文| 欧美激情欧美激情在线五月| 亚洲网站在线看| 欧美大秀在线观看| 国产午夜久久久久| 99re8这里有精品热视频免费| 欧美一区日韩一区| 亚洲日本视频| 欧美亚洲一区二区三区| 欧美成人一品| 国产日产欧美一区| 99国产一区| 老司机一区二区| 亚洲小说春色综合另类电影| 欧美国产日本| 亚洲国产毛片完整版| 亚洲一区二区在线视频| 欧美xx视频| 亚洲在线中文字幕| 欧美好骚综合网| 国产亚洲欧美在线| 亚洲欧美在线观看| 亚洲精品久久久蜜桃| 久久午夜激情| 国产原创一区二区| 久久9热精品视频| 亚洲综合欧美日韩| 亚洲精品免费一区二区三区| 欧美影片第一页| 国产伦精品一区二区三区四区免费| 一区二区三区三区在线| 亚洲国产mv| 欧美mv日韩mv国产网站| 永久免费视频成人| 模特精品裸拍一区| 另类春色校园亚洲| 亚洲欧洲综合另类在线| 欧美高清在线播放| 牛人盗摄一区二区三区视频| 亚洲国产日韩一区| 亚洲狠狠婷婷| 欧美日韩精品在线观看| 一本色道久久综合一区| 99xxxx成人网| 国产精品三级视频| 久久精品国产清高在天天线 | 91久久黄色| 欧美精品福利视频| 亚洲私人黄色宅男| 亚洲午夜久久久| 国产亚洲欧洲| 欧美α欧美αv大片| 欧美成人国产| 亚洲一级二级在线| 亚洲欧美日韩中文视频| 黑人巨大精品欧美一区二区 | 亚洲国产精品久久久久婷婷老年| 欧美成人精品在线| 亚洲一区二区三区视频播放| 亚洲永久免费精品| 精品电影一区| 亚洲欧洲精品一区二区三区波多野1战4 | 亚洲片国产一区一级在线观看| 免费一区二区三区| 亚洲手机成人高清视频| 亚洲欧美日本国产有色| 国内精品免费午夜毛片| 亚洲大胆av| 国产精品入口尤物| 免费在线亚洲欧美| 亚洲欧洲一区二区三区在线观看| 亚洲国产成人精品久久| 亚洲精品欧美精品| 国产日韩欧美夫妻视频在线观看| 欧美aa在线视频| 欧美性猛交视频| 狂野欧美激情性xxxx欧美| 欧美日韩精品一本二本三本| 久久激情视频久久| 欧美日韩第一区| 久久婷婷国产综合国色天香| 欧美人妖在线观看| 老鸭窝亚洲一区二区三区| 欧美国产视频在线| 久热综合在线亚洲精品| 国产精品美腿一区在线看 | 亚洲无人区一区| 精品成人一区| 亚洲愉拍自拍另类高清精品| 亚洲激情在线| 久久精品日产第一区二区| 亚洲综合999| 欧美韩国在线| 女同性一区二区三区人了人一| 国产欧美一区二区白浆黑人| 日韩视频精品在线| 亚洲精品一区二区三区福利| 欧美在线黄色| 欧美在线综合视频| 国产精品激情av在线播放| 亚洲第一页中文字幕| 红桃视频一区| 欧美一区在线看| 午夜久久美女| 国产精品激情| 亚洲图片欧洲图片av| 亚洲网站视频| 国产精品va| 亚洲视频一区| 欧美亚洲在线视频| 国产欧美午夜| 久久av在线看| 免费欧美日韩国产三级电影| 国内成+人亚洲| 久久裸体视频| 欧美成人免费观看| 亚洲国产三级| 欧美国产视频在线| 91久久国产自产拍夜夜嗨| 亚洲精品一区二区三区蜜桃久 | 欧美成人免费全部观看天天性色| 黄色精品一区| 美日韩精品免费| 亚洲电影免费| 一本色道久久综合亚洲精品小说 | 鲁鲁狠狠狠7777一区二区| 狠狠色丁香婷婷综合久久片| 久久精品一区二区三区不卡牛牛 | 在线亚洲高清视频| 黄色工厂这里只有精品| 久久精品视频va| 欧美午夜电影网| 99精品99久久久久久宅男| 亚洲第一黄色| 欧美极品色图| 亚洲一区二区av电影| 午夜精品久久久久久| 国产精品视频最多的网站| 午夜精品免费在线| 噜噜噜在线观看免费视频日韩| 亚洲第一精品夜夜躁人人爽| 欧美成人精品激情在线观看| 日韩一级黄色av| 久久精品综合网| 亚洲国产欧美一区| 欧美三级在线| 久久经典综合| 亚洲美女一区| 久久xxxx| 亚洲美女视频网| 国产农村妇女毛片精品久久麻豆| 久久久蜜臀国产一区二区| 亚洲九九精品| 久久综合给合| 亚洲欧美日韩国产一区二区三区 | 欧美电影资源| 亚洲一区二区三区在线观看视频 | 国产婷婷成人久久av免费高清| 久久精品人人做人人综合| 亚洲精品乱码久久久久| 亚洲一区在线视频| 亚洲国产精品一区二区www| 国产精品va| 欧美插天视频在线播放| 亚洲欧美综合网| 夜夜精品视频| 亚洲成人在线视频播放| 欧美一站二站| 亚洲一区二区三区乱码aⅴ蜜桃女| 永久域名在线精品| 国产精品日韩精品欧美精品| 老司机免费视频一区二区| 亚洲免费一在线| 99精品久久久| 亚洲人体大胆视频| 欧美电影免费观看网站|