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

正文內(nèi)容

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

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

下一頁面
 

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