freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于rtp的linux實(shí)時(shí)語(yǔ)音通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文(文件)

 

【正文】 .... | +++++++++++++++++++++++++++++++++以上域具體意義如下: (1)版本(V):2比特 .(值1被RTP草案版本使用,值0用在最初vat語(yǔ)音工具使用的協(xié)議中.) (2)填料(P):1比特 若填料比特被設(shè)置,此包包含一到多個(gè)附加在末端的填充比特,或者在底層數(shù)據(jù)單元中傳輸多個(gè)RTP包. (3)擴(kuò)展(X):1比特 若設(shè)置擴(kuò)展比特,固定頭(僅)后面跟隨一個(gè)頭擴(kuò)展. (4)CSRC計(jì)數(shù)(CC):4比特 CSRC計(jì)數(shù)包含了跟在固定頭后面CSRC識(shí)別符的數(shù)目. (5)標(biāo)志(M):1比特 ,. (6)負(fù)載類(lèi)型(PT):7比特 此域定義了負(fù)載的格式,。Linux是一位芬蘭的年輕人Linus Benedict Torvalds于1991年10月在赫爾辛基大學(xué)對(duì)外正式發(fā)布一套操作系統(tǒng),它一種Unix風(fēng)格的操作系統(tǒng),在源代碼級(jí)上兼容絕大部分Unix標(biāo)準(zhǔn),是一個(gè)支持多用戶、多進(jìn)程、多線程、功能強(qiáng)大而且執(zhí)行穩(wěn)定的操作系統(tǒng)。采用在計(jì)算機(jī)以太網(wǎng)上進(jìn)行點(diǎn)對(duì)點(diǎn)的通信模式。數(shù)字音頻系統(tǒng)通過(guò)將聲波的波型轉(zhuǎn)換成一系列二進(jìn)制數(shù)據(jù),來(lái)實(shí)現(xiàn)對(duì)原始聲音的現(xiàn),實(shí)現(xiàn)這一步驟的設(shè)備常被稱為模/數(shù)轉(zhuǎn)換器(A/D)。采樣就是每隔一定時(shí)間就讀一次聲音信號(hào)的幅度,而量化則是將采樣得到的聲音信號(hào)幅度轉(zhuǎn)換為數(shù)字值,從本質(zhì)上講,采樣是時(shí)間上的數(shù)字化,而量化則是幅度上的數(shù)字化。常用的音頻采樣頻率有8kHz、16kHz、48kHz等,如果采用更高的采樣頻率,還可以達(dá)到DVD的音質(zhì)。所以在電腦上錄音的本質(zhì)就是把模擬聲音信號(hào)轉(zhuǎn)換成數(shù)字信號(hào)。8位代表2的8次方256,16 位則代表2的16次方64K。 (3).聲道數(shù)聲道數(shù)是反映音頻數(shù)字化質(zhì)量的另一個(gè)重要因素,它有單聲道和雙聲道之分。目前Linux 有三個(gè)主流的聲卡驅(qū)動(dòng)程序集:OSS/Lite(也稱為OSS/Free)、OSS/Full(商業(yè)軟件)、ALSA(自由軟件)?,F(xiàn)在 Alan Cox 是內(nèi)核聲卡驅(qū)程集的維護(hù)人。OSS/Full 完全兼容以前基于 OSS/Lite 開(kāi)發(fā)的應(yīng)用程序。ALSA 包含一系列內(nèi)核驅(qū)動(dòng)對(duì)不同的聲卡進(jìn)行支持,還提供了libasound的API庫(kù)。 ALSA 擁有調(diào)用插件的能力對(duì)新設(shè)備提供擴(kuò)展,包括那些用軟件模擬出來(lái)的虛擬設(shè)備。other)。 void write_wav_header(int fd, int dtime = 20)。 //采集音頻數(shù)據(jù) void prepare_wav_params(const int dtime)。 void set_pcm_mixer()。 public: uint32_t get_chunk_byte() const { return chunk_byte。 //采樣率 uint16_t bit_per_sample。 //幀大小 snd_pcm_t *handle。下面介紹一下系統(tǒng)中語(yǔ)音的采集部分的實(shí)現(xiàn)。 exit(1)。在設(shè)置參數(shù)前,我們需要了解一下各個(gè)參數(shù)的含義以及一些基本概念。(4)采樣率(rate):每秒鐘采樣次數(shù),該次數(shù)是針對(duì)楨而言。不過(guò)多數(shù)情況下,我們只需要使用交錯(cuò)模式就可以了。 snd_pcm_hw_params_any(handle, hw_params)。 case 2:snd_pcm_hw_params_set_format(handle, hw_params, SND_PCM_FORMAT_S16_LE)。 } snd_pcm_hw_params_set_channels(handle, hw_params, channels)。dir)。 exit(1)。buffer_time, 0) 0) { std::cerr Error snd_pcm_hw_params_set_buffer_time_near/n。 exit(1)。dir)。 bit_per_sample = snd_pcm_format_physical_width(format)。},錄音過(guò)程實(shí)際上就是從音頻設(shè)備中讀取數(shù)據(jù)信息并保存。 while (count 0) { r = snd_pcm_readi(handle, sendBuffer, count)。 snd_pcm_wait(handle, 1000)。 } else if (r 0) { std::cout Error snd_pcm_readi: snd_strerror(r) std::endl。 sendBuffer += r * bit_per_frame / 8。 //將pBuffer接收到得音頻數(shù)據(jù)寫(xiě)入音頻設(shè)備 while((rc = snd_pcm_writei(handle, pBuffer, period_size)) 0) { std::cout rc = rc std::endl。 } else if (rc 0) { perror(error from writei\n)。 long minVolume, maxVolume。 mixer = NULL。 } if ((result = snd_mixer_selem_register(mixer, NULL, NULL)) 0) { std::cerr snd_mixer_selem_register std::endl。 snd_mixer_close(mixer)。 elem = snd_mixer_elem_next(elem)) { if (snd_mixer_elem_get_type(elem) == SND_MIXER_ELEM_SIMPLE amp。maxVolume)。minVolume, amp。 } }}。 snd_mixer_selem_set_capture_switch_all(elem, 1)。 snd_mixer_selem_set_playback_volume_all(elem, maxVolume)。 snd_mixer_selem_is_active(elem)) { snd_mixer_selem_get_playback_volume_range(elem, amp。 } for (elem = snd_mixer_first_elem(mixer)。 mixer = NULL。 snd_mixer_close(mixer)。 if ((result = snd_mixer_open(amp。 } }} 音量調(diào)整相關(guān)操作初始化麥克風(fēng)及本機(jī)音量調(diào)節(jié)器相關(guān)代碼:void CWavPlayer::set_pcm_mixer(){ snd_mixer_t *mixer。 /* EPIPE means underrun */ //perror(underrun occurred\n)。 snd_pcm_t *handle = ()。 } if (r 0) { result += r。 snd_pcm_prepare(handle)。amp。 size_t count = period_size。 //計(jì)算幀大小 chunk_byte = (uint32_t)period_size * bit_per_frame / 8。 snd_pcm_hw_params_get_format(hw_params, amp。 snd_pcm_hw_params_get_period_size(hw_params, amp。 } if (snd_pcm_hw_params_set_period_time_near(handle, hw_params, amp。 period_time = buffer_time / 4。 if (snd_pcm_hw_params_get_buffer_time_max(hw_params, amp。 snd_pcm_hw_params_set_rate_near(handle, hw_params, amp。 case 3:snd_pcm_hw_params_set_format(handle, hw_params, SND_PCM_FORMAT_S24_LE)。 //設(shè)置為交錯(cuò)模式 switch(bit_per_sample/8) //設(shè)置采樣位數(shù) { case 1:snd_pcm_hw_params_set_format(handle, hw_params, SND_PCM_FORMAT_U8)。 snd_pcm_hw_params_malloc(amp。交錯(cuò)模式(interleaved):是一種音頻數(shù)據(jù)的記錄方式,在交錯(cuò)模式下,數(shù)據(jù)以連續(xù)楨的形式存放,即首先記錄完楨1的左聲道樣本和右聲道樣本(假設(shè)為立體聲格式),再開(kāi)始楨2的記錄。(2)通道數(shù)(channel):該參數(shù)為1表示單聲道,2則是立體聲。如果設(shè)備打開(kāi)成功,pcm_handle便指向該設(shè)備句柄。 if ((rc = snd_pcm_open(amp。 //
點(diǎn)擊復(fù)制文檔內(nèi)容
職業(yè)教育相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1