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

牽著老婆滿街逛

嚴以律己,寬以待人. 三思而后行.
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>
            亚洲级视频在线观看免费1级| 亚洲成人在线网| 欧美高清在线一区| 久久久久久穴| 久久免费精品日本久久中文字幕| 久久国产精品一区二区三区四区 | 免费永久网站黄欧美| 久久免费高清视频| 欧美成人精品在线播放| 欧美日韩午夜视频在线观看| 欧美日韩视频专区在线播放 | 久久久久久伊人| 欧美国产亚洲另类动漫| 欧美日韩中文字幕在线视频| 国产欧美日韩激情| 亚洲国产精品激情在线观看| 一本色道久久综合亚洲精品婷婷| 久久精品日韩| 欧美私人啪啪vps| 国产精品一区二区三区乱码| 韩国三级电影一区二区| 亚洲精品男同| 欧美在线1区| 亚洲二区在线观看| 中文av一区二区| 久久国产精品久久国产精品| 欧美激情成人在线视频| 国产欧美一区在线| 亚洲国产视频a| 性色av一区二区三区红粉影视| 免费观看不卡av| 在线一区观看| 免费视频一区| 国产在线观看91精品一区| 亚洲精品国产精品乱码不99按摩| 午夜天堂精品久久久久| 亚洲国产精品v| 香蕉久久夜色| 欧美午夜精品久久久久久人妖| 欧美国产第一页| 亚洲欧美影院| 久久五月激情| 国产精品欧美日韩一区| 亚洲欧洲另类国产综合| 久久精品91久久久久久再现| 日韩亚洲一区二区| 米奇777超碰欧美日韩亚洲| 国产日韩综合| 亚洲在线成人精品| 亚洲国产另类 国产精品国产免费| 午夜一区在线| 国产精品欧美日韩一区| 亚洲一区二区三区免费观看| 亚洲经典在线| 欧美国产日韩精品| 亚洲人成在线观看| 欧美激情久久久久| 久久野战av| 黄色精品网站| 久久精品国产精品亚洲精品| 亚洲尤物视频网| 国产精品欧美久久久久无广告| 一本久久a久久精品亚洲| 欧美成人午夜激情在线| 久久青草久久| 亚洲国产清纯| 亚洲国产精品久久91精品| 麻豆精品在线播放| 亚洲精品国产视频| 亚洲韩国青草视频| 欧美日韩美女在线| 午夜精品福利一区二区三区av| 亚洲一区二区在线视频| 国产日韩一区在线| 久久久无码精品亚洲日韩按摩| 久久激情视频| 亚洲欧洲在线看| 亚洲蜜桃精久久久久久久| 欧美日韩岛国| 欧美一区二区女人| 久久精品99国产精品日本| 在线精品视频在线观看高清| 亚洲第一天堂av| 欧美视频一区在线| 久久精品主播| 欧美黄网免费在线观看| 亚洲欧美视频一区| 久久精品男女| 一区二区高清| 午夜一区二区三区不卡视频| 亚洲国产天堂久久国产91| 亚洲人体1000| 国产免费观看久久| 欧美韩日高清| 国产精品久久久亚洲一区| 久久野战av| 欧美日韩精品在线视频| 久久久久一区二区| 欧美日韩免费观看一区三区| 久久精品视频亚洲| 欧美成人按摩| 国产无一区二区| 香蕉久久a毛片| 两个人的视频www国产精品| 日韩手机在线导航| 欧美在线精品免播放器视频| 亚洲精品视频在线观看免费| 在线亚洲电影| 亚洲经典三级| 久久爱www| 亚洲午夜极品| 你懂的成人av| 久久精品视频一| 欧美日韩亚洲另类| 欧美第十八页| 国产一区二区三区久久精品| 亚洲免费观看| 亚洲高清在线播放| 欧美影院在线| 亚洲欧美在线aaa| 欧美日韩国产一区二区三区地区| 久久资源在线| 国产喷白浆一区二区三区| 日韩视频在线播放| 亚洲美女av在线播放| 久久婷婷影院| 久久综合电影| 国模精品一区二区三区色天香| 一本大道av伊人久久综合| 亚洲人成久久| 美日韩精品视频免费看| 久久久久久亚洲精品杨幂换脸| 国产精品久久看| 一区二区三区国产在线观看| 99国产精品国产精品久久| 欧美.日韩.国产.一区.二区| 久久综合国产精品台湾中文娱乐网| 国产精品日韩欧美一区二区| 一本久久综合| 亚洲一区二区三区在线视频| 欧美片在线播放| 亚洲美女免费精品视频在线观看| 亚洲精品你懂的| 欧美电影专区| 91久久精品一区二区别| 亚洲毛片在线观看.| 欧美日本二区| 一区二区高清在线观看| 亚洲欧美日本日韩| 国产一区二区三区四区三区四| 久久国产精品免费一区| 久久人人爽人人爽爽久久| 韩国女主播一区| 男女av一区三区二区色多| 亚洲黄色在线观看| 在线亚洲一区| 国产欧美va欧美不卡在线| 久久99伊人| 欧美黄色视屏| 亚洲午夜久久久| 国产日本精品| 免费国产一区二区| 亚洲最新视频在线播放| 久久精品国产免费观看| 亚洲欧洲日本国产| 国产精品高清免费在线观看| 亚洲综合精品| 欧美jjzz| 亚洲欧美韩国| 亚洲福利在线观看| 99国产精品99久久久久久| 国模精品一区二区三区| 欧美成人一区二区三区| 亚洲一二三区在线观看| 老司机精品视频一区二区三区| 亚洲区一区二区三区| 国产精品久久久久久亚洲毛片| 欧美在线观看www| 最新国产の精品合集bt伙计| 亚洲欧美欧美一区二区三区| 亚洲第一主播视频| 国产精品视频一| 欧美国产激情| 久久成人免费日本黄色| 日韩视频免费观看高清完整版| 性欧美办公室18xxxxhd| 亚洲精品偷拍| 狠狠干狠狠久久| 欧美视频一区二区| 开元免费观看欧美电视剧网站| 亚洲视频久久| 亚洲破处大片| 免费国产自线拍一欧美视频| 亚洲一级黄色片| 最新成人在线| 激情欧美一区二区| 国产精品免费一区豆花| 欧美日韩亚洲一区三区| 嫩草影视亚洲| 久久综合五月|