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

正文內(nèi)容

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

2025-03-30 10:16 上一頁面

下一頁面
 

【正文】 ....................... 56 附錄(其它核心代碼) ................................................... 1 嘉應(yīng)學(xué)院畢業(yè)論文 (設(shè)計(jì) ) 1 前 言 隨著多媒體網(wǎng)絡(luò)的發(fā)展, RTP/RTCP 在眾多領(lǐng)域也得到了深入的應(yīng)用,如 VOIP 電話、多媒體會(huì)議系統(tǒng)等應(yīng)用的出現(xiàn),也讓語音傳輸通信技術(shù)也得到了迅速的發(fā)展。 為此,本人在導(dǎo)師的指導(dǎo)下,詳細(xì)研究分析了 RTP/RTCP 協(xié)議,結(jié)合 RTP/RTCP 協(xié)議高實(shí)時(shí)性的特點(diǎn),利用現(xiàn)有的音頻編程和網(wǎng)絡(luò)編程知識(shí),設(shè)計(jì)和開發(fā)了這個(gè)基于 RTP的 linux實(shí)時(shí)語音通信系統(tǒng)。 第四章:介紹了 linux 音頻編程。嘉應(yīng)學(xué)院畢業(yè)論文 (設(shè)計(jì) ) 2 第一章 引言 實(shí)時(shí)數(shù)據(jù)傳輸?shù)陌l(fā)展 我們已經(jīng)步入一個(gè)高速發(fā)展的信息社會(huì), Inter 已經(jīng)成為很多人生活不可缺少的一部分。越來越多的實(shí)時(shí)多媒體應(yīng)用的出現(xiàn),極大的豐富了人們生活,如成為這幾年的熱點(diǎn)的 IP 電話,另外還有 VID、遠(yuǎn)程網(wǎng)絡(luò)教學(xué)、遠(yuǎn)程網(wǎng) 絡(luò)診斷和網(wǎng)絡(luò)多媒體會(huì)議業(yè)務(wù)、多媒體消息型業(yè)務(wù)等。會(huì)議還使用的另一個(gè)音頻軟件是 NeVoT(Network Voice Terminal),它是 等人在 90 年代初開發(fā)出來的。其中 Coolaudio 網(wǎng)絡(luò)電話于 1998 年推出,它是我國第一套自主版權(quán)且最有影響的 Inter 電話軟件??梢哉f,嘉應(yīng)學(xué)院畢業(yè)論文 (設(shè)計(jì) ) 3 實(shí)時(shí)多媒體數(shù)據(jù)傳輸研究已經(jīng)有了長足的進(jìn)步,制定了許多相關(guān)的傳輸協(xié)議,例如: RTP( Realtime Transport Protocol)和 RTCP(Realtime Transport Control Protocol),RTSP(Realtime Streaming Protocol),SIP(Session Initiation Protocol), RSVP(Resource Reserve Protocol),服務(wù)區(qū)分協(xié)議( DiffServ),多協(xié)議 標(biāo)記交換協(xié)議( MulitProtocol Label Switching, MPLS)等等,這些都是構(gòu)建當(dāng)前多媒體通信的主要協(xié)議。 TCP 不適合傳輸實(shí)時(shí)多媒體數(shù)據(jù) Inter 是建立在 TCP/IP 之上的計(jì)算機(jī)網(wǎng)絡(luò),它最初是為提供非實(shí)時(shí)數(shù)據(jù)業(yè)務(wù)而設(shè)計(jì)的。當(dāng)然在傳輸用于回放的視頻和音頻數(shù)據(jù)時(shí), TCP 也是一種選擇。下面具體分析網(wǎng)絡(luò)運(yùn)行一下 TCP和其他可靠傳輸層協(xié)議如 XTP 不適合實(shí)時(shí)傳輸?shù)膸讉€(gè)主要原因。這一過程將需要一個(gè)甚至更多的周期,這種重傳機(jī)制對于實(shí)時(shí)性要求較高的多媒體數(shù)據(jù)傳輸來說是災(zāi)難性的,因?yàn)榻邮詹坏貌坏却?重傳數(shù)據(jù)的到來,從而造成了延時(shí)和斷點(diǎn)。 ( 4) .報(bào)文頭的大小 TCP 和 XTP 報(bào)文頭都比 UDP 的報(bào)文頭大, TCP 和 的報(bào)文頭為 40 字節(jié), 為 32字節(jié),而 RTP 的固定報(bào)文頭為 12字節(jié),因而它們所能攜帶的信息占整個(gè)報(bào)文的比例相對來說比較小。它取消了重發(fā)校驗(yàn)機(jī)制,因此能夠達(dá)到 較高的通信速率,但不能保證報(bào)文的先后順序,也不能保證數(shù)據(jù)傳輸?shù)目煽啃浴M瑫r(shí)如果收發(fā)端能夠?qū)崟r(shí)了解網(wǎng)絡(luò)和傳輸狀況,就 可以適當(dāng)調(diào)節(jié)自己嘉應(yīng)學(xué)院畢業(yè)論文 (設(shè)計(jì) ) 5 的任務(wù),最終使得在接收端能夠達(dá)到最好的效果,由此引入 RTCP 傳輸控制協(xié)議對傳輸狀況進(jìn)行實(shí)時(shí)監(jiān)測和報(bào)告。 RTCP( Realtime Transport Control Protocol)實(shí)時(shí)傳輸控制協(xié)議,它提供服務(wù)質(zhì)量的統(tǒng)計(jì)信息及提供傳輸可靠性的保證和流量的擁塞控制機(jī)制。 RTP 協(xié)議包括 RTP( Realtime Transport Protocol)實(shí)時(shí)傳輸協(xié)議和 RTCP( Realtime Transport Control Protocol)實(shí)時(shí)傳輸控制協(xié)議這兩個(gè)協(xié)議。它不是典型意義上的傳輸層協(xié)議,因?yàn)樗⒉痪邆湟粋€(gè)典型傳輸協(xié)議的所有特點(diǎn)。首 先 RTP 可以利用 UDP 的多路復(fù)用功能來分別傳輸 RTP 數(shù)據(jù)包和 RTCP 控制包。當(dāng)然, RTP 還可以和其他合適的底層網(wǎng)絡(luò)和傳輸協(xié)議一起工作。 RTP 與各種網(wǎng)絡(luò)協(xié)議的關(guān)系 RTP 協(xié)議的三類主要應(yīng)用 ( 1)簡單的多播音頻會(huì)議 這里的多播主要指 IP 網(wǎng)絡(luò)的多播業(yè)務(wù)用于語音通信。當(dāng)一個(gè)與會(huì)者將要發(fā)言時(shí),其話音將以每 20 毫秒為一幀的間隔分成許多音頻數(shù)據(jù)包,并在數(shù)據(jù)包前加上 RTP 頭,然后按照 RTP 包頭 在前,數(shù)據(jù)在后的順序?qū)⑺鼈兎庋b在 UDP 包中。其計(jì)時(shí)信息是接收方按照會(huì)議中不同的 RTP源分別重建的。 RTCP 接收報(bào)告表明了這一與會(huì)者接收語音數(shù)據(jù)的效果,同時(shí)它可以用來控制自適應(yīng)編碼器。在 RTP 層音頻和視頻并沒有直接的聯(lián)系,除非某個(gè)特定的用戶需要在 RTCP 報(bào)文中使用相同的標(biāo)識(shí)將這兩個(gè) RTP 會(huì)話聯(lián)系起來。混合器( Mixer)是一個(gè) RTP 層的中繼設(shè)備,將它置于低速鏈路端,它對到來的音頻報(bào)文按 20 毫秒的間隔重新進(jìn)行同步,然后將重構(gòu)的音頻數(shù)據(jù)流混合成一路窄帶的數(shù)據(jù)流轉(zhuǎn)發(fā)給窄帶用戶。在防火墻內(nèi)外各安裝一個(gè)轉(zhuǎn)換器,當(dāng)外面的轉(zhuǎn)換器接收到安全的數(shù)據(jù)包后,將它們以隧道方式直接發(fā)送給防火墻內(nèi)的轉(zhuǎn)換器,由它轉(zhuǎn)發(fā)給防火墻內(nèi)的用戶。 RTP 數(shù)據(jù)包格式 2. 3. 1 RTP 數(shù)據(jù)包格式 RTP 報(bào)文頭格式(見 RFC3550 Page12): 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +++++++++++++++++++++++++++++++++ |V=2|P|X| CC |M| PT | sequence number | +++++++++++++++++++++++++++++++++ | timestamp | +++++++++++++++++++++++++++++++++ | synchronization source (SSRC) identifier | +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ | contributing source (CSRC) identifiers | | .... | +++++++++++++++++++++++++++++++++ 以上域具體意義如下: ( 1)版本 (V):2 比特 此域定義了 RTP 的版本 .此協(xié)議定義的版本是 2.(值 1被 RTP 草案版本使用 ,值 0 用在最初 vat語音工具使用的協(xié)議中 .) ( 2)填料 (P):1 比特 若填料比特被設(shè)置 ,此包包含一到多個(gè)附加在末端的填充比特 ,不是負(fù)載的一部分 .填料的最后一個(gè)字節(jié)包含可以忽略多少個(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比特 標(biāo)志的解釋由具體協(xié)議規(guī)定 .它用來允許在比特流中標(biāo)記重要的事件 ,如幀范圍 .規(guī)定該標(biāo)志在靜音后的第一個(gè)語音包時(shí)置位 . 嘉應(yīng)學(xué)院畢業(yè)論文 (設(shè)計(jì) ) 9 ( 6)負(fù)載類型 (PT):7 比特 此域定義了負(fù)載的格式 ,由具體應(yīng)用決定其解釋 .協(xié)議可以規(guī)定負(fù)載類型碼和負(fù)載格式之間一個(gè)默認(rèn)的匹配 .其他的負(fù)載類型碼可以通過非 RTP 方法動(dòng)態(tài)定義 .RTP 發(fā)射機(jī)在任意給定時(shí)間發(fā)出一個(gè)單獨(dú)的 RTP負(fù)載類型 。 嘉應(yīng)學(xué)院畢業(yè)論文 (設(shè)計(jì) ) 11 Linux 是一位芬蘭的年輕人 Linus Benedict Torvalds 于 1991 年 10 月在赫爾辛基大學(xué)對外正式發(fā)布一套操作系統(tǒng),它一種 Unix 風(fēng)格的操作系統(tǒng),在源代碼級上兼容絕大部分 Unix 標(biāo)準(zhǔn),是一個(gè)支持多用戶、多進(jìn)程、多線程、功能強(qiáng)大而且 執(zhí)行穩(wěn)定的操作系統(tǒng)。采用在計(jì)算機(jī)以太網(wǎng)上進(jìn)行點(diǎn)對點(diǎn)的通信模式。 數(shù)字音頻系統(tǒng)通過將聲波的波型轉(zhuǎn)換成一系列二進(jìn)制數(shù)據(jù),來實(shí)現(xiàn)對原始聲音的現(xiàn),實(shí)現(xiàn)這一步驟的設(shè)備常被稱為模 /數(shù)轉(zhuǎn)換器( A/D)。采樣就是每隔一定時(shí)間就讀一次聲音信號的幅度,而量化則是將采樣得到的聲音信號幅度轉(zhuǎn)換為數(shù)字值,從本質(zhì)上講,采樣是時(shí)間上的數(shù)字化,而量化則是幅度上的數(shù)字化。常用的音頻采樣頻率有 8kHz、 、 、 16kHz、 、 、48kHz 等,如果采用更高的采樣頻率,還 可以達(dá)到 DVD 的音質(zhì)。所以在電腦上錄音的本質(zhì)就是把模擬聲音信號轉(zhuǎn)換成數(shù)字信號。 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 開發(fā)的應(yīng)用程序。 ALSA 包含一系列內(nèi)核驅(qū)動(dòng)對不同的聲卡進(jìn)行支持,還提供了libasound 的 API 庫。 ALSA 擁有調(diào)用插件的能力對新設(shè)備提供擴(kuò)展,包括那些用軟件模擬出來的虛擬設(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)中語音的采集部分的實(shí)現(xiàn)。 exit(1)。在設(shè)置參數(shù)前,我們需要了解一下各個(gè)參數(shù)的含義以及一些基本概念。 ( 4)采樣率 (rate):每秒鐘采樣次數(shù),該次數(shù)是針對楨而言。不過多數(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)。 } ,錄音過程實(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ù)寫入音頻設(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, maxVolu
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1