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

正文內(nèi)容

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

  

【正文】 sion III 目 錄 前 言 ................................................................ 1 第一章 緒論 ......................................................... 2 項(xiàng)目概述 .......................................................... 2 編寫(xiě)目的 ....................................... 錯(cuò)誤 !未定義書(shū)簽。 網(wǎng)絡(luò)教學(xué)提出的背景與意義 .......................................... 3 提出的背景 ..................................... 錯(cuò)誤 !未定義書(shū)簽。 C/S 結(jié)構(gòu)特點(diǎn) ................................... 錯(cuò)誤 !未定義書(shū)簽。 IIS [11] ......................................... 錯(cuò)誤 !未定義書(shū)簽。 第三章 系統(tǒng)分析 .................................................... 10 引言 ............................................................ 10 系統(tǒng)目標(biāo) ........................................................ 11 系統(tǒng)的可行性分析 ................................. 錯(cuò)誤 !未定義書(shū)簽。 性能需求 ....................................... 錯(cuò)誤 !未定義書(shū)簽。目前只實(shí)現(xiàn)了單播功能,即點(diǎn)對(duì)點(diǎn)的通信。 Inter 中流動(dòng)的“比特”所代表的內(nèi)容已從原來(lái)的數(shù)據(jù)逐漸向多媒體演變。該軟件最初使用的是 vat協(xié)議,但是在 RTP 協(xié)議制定出來(lái)后也開(kāi)始支持 RTP 協(xié)議了。在這些協(xié)議中, RTP 和 RTCP 主要負(fù)責(zé)實(shí)時(shí)數(shù)據(jù)以及實(shí)現(xiàn)最基本的傳輸控制,本設(shè)計(jì)就是 Linux 下基于 RTP協(xié)議的實(shí)時(shí)音頻傳輸?shù)膶?shí)現(xiàn)。如果有足夠大的緩沖區(qū)和充足的網(wǎng)絡(luò)帶寬,比如在局域網(wǎng)內(nèi),在 TCP 協(xié)議上,接近實(shí)時(shí)的傳輸也是可能的。 ( 3) .TCP 的擁塞控制機(jī)制 TCP 擁塞控制機(jī)制在探測(cè)到有數(shù)據(jù)包丟失時(shí),它就會(huì)減少它的擁塞窗口。因?yàn)橐纛l、視頻碼流比傳統(tǒng)數(shù)據(jù)對(duì)實(shí)時(shí)性要求更高,即使少量的時(shí)延,對(duì)音頻、視頻播放來(lái)說(shuō)也是無(wú)法忍受的,但它們對(duì)于少量的包丟失卻不太敏感。 第二章 RTP/RTCP 協(xié)議介紹 實(shí)時(shí)傳輸協(xié)議的簡(jiǎn)單介紹 RTP 全名是 Realtime Transport Protocol(實(shí)時(shí)傳輸協(xié)議)。例如: RTP 沒(méi)有連接的概念,它必須建立在底層的面向連接的或無(wú)連接的傳輸協(xié)議之上;本身不依賴于特別的地址格式,而需要底層傳輸協(xié)議支持成幀和分段。例如它也可以在 TCP 或 ATM 等其它協(xié)議之上工作。 RTP 包頭可以指明語(yǔ)音編程類型(如 PCM, ADPCM或 LPC),以便發(fā)送方在會(huì)議過(guò)程中改變編碼的類型了。另外,用戶也可以使用名字以外的其它表示信息,這要視控制帶寬的情況而定。這些新的報(bào)文可以按照單播或多播的形式發(fā)送給接收者。此域不用來(lái)復(fù)用不同的媒體流 . ( 7)序列號(hào)( sequence number) :16 比特 每發(fā)送一個(gè) RTP 數(shù)據(jù)包 ,序列號(hào)加一 ,接收機(jī)可以據(jù)此檢測(cè)包損和重建包序列 .序列號(hào)的初始值是隨機(jī)的 (不可預(yù)測(cè) ),以使即便在源本身不加密時(shí) (有時(shí)包要通過(guò)翻譯器 ,它會(huì)這樣做 ),對(duì)加密算法泛知的普通文本攻擊也會(huì)更加困難 . ( 8)時(shí)間標(biāo)志( timestamp) :32 比特 時(shí)間標(biāo)志反映了 RTP 數(shù)據(jù)包中第一個(gè)比特的抽樣瞬間 .抽樣瞬間必須由隨時(shí)間單調(diào)和線形增長(zhǎng)的時(shí)鐘得到 ,以進(jìn)行同步和抖動(dòng)計(jì)算 .時(shí)鐘的分辨率必須滿足要求的同步準(zhǔn)確度 ,足以進(jìn)行包到達(dá)抖動(dòng)測(cè)量 .時(shí)鐘頻率與作為負(fù)載傳輸?shù)臄?shù)據(jù)格式獨(dú)立 ,在協(xié)議中或定義此 格式的負(fù)載類型說(shuō)明中靜態(tài)定義 ,也可以在通過(guò)非 RTP 方法定義的負(fù)載格式中動(dòng)態(tài)說(shuō)明 .若 RTP 包周期性生成 ,可以使用由抽樣時(shí)鐘確定的額定抽樣瞬間 ,而不是讀系統(tǒng)時(shí)鐘 .例如 ,對(duì)于固定速率語(yǔ)音 ,時(shí)間標(biāo)志鐘可以每個(gè)抽樣周期加 語(yǔ)音設(shè)備從輸入設(shè)備讀取覆蓋 160 個(gè)抽樣周期的數(shù)據(jù)塊 ,對(duì)于每個(gè)這樣的數(shù)據(jù)塊 ,時(shí)間標(biāo)志增加 160,無(wú)論此塊被發(fā)送還是被靜音壓縮 . 時(shí)間標(biāo)志的起始值是隨機(jī)的 ,如同序列號(hào) .多個(gè)連續(xù)的 RTP 包可能由同樣的時(shí)間標(biāo)志 ,若他們?cè)谶壿嬌贤瑫r(shí)產(chǎn)生 .如屬于同一個(gè)圖象幀 .若數(shù)據(jù)沒(méi)有按照抽樣的 順序發(fā)送 ,連續(xù)的 RTP 包可以包含不單調(diào)的時(shí)間標(biāo)志 ,如 MPEG 交織圖象幀 . ( 9)同步源( SSRC) :32 比特 SSRC 域用以識(shí)別同步源 .標(biāo)識(shí)符被隨機(jī)生成 ,以使在同一個(gè)RTP會(huì)話期中沒(méi)有任何兩個(gè)同步源有相同的 SSRC識(shí)別符 .盡管多個(gè)源選擇同一個(gè) SSRC識(shí)別符的概率很低 ,所有 RTP 實(shí)現(xiàn)工具都必須準(zhǔn)備檢測(cè)和解決沖突 .若一個(gè)源改變本身的源傳輸?shù)刂?,必須選擇新的 SSRC 識(shí)別符 ,以避免被當(dāng)作一個(gè)環(huán)路源 . ( 10)有貢獻(xiàn)源( CSRC)列表 :0 到 15項(xiàng) ,每項(xiàng) 32 比特 CSRC 列表識(shí)別在此包中負(fù)載的有貢獻(xiàn)源 .識(shí)別符的數(shù)目在 CC 域中給定 .若 有貢獻(xiàn)源多于 15個(gè) ,僅識(shí)別 15個(gè) .CSRC 識(shí)別符由混合器插入 ,用有貢獻(xiàn)源的 SSRC 識(shí)別符 .例如語(yǔ)音包 ,混合產(chǎn)生新包的所有源的 SSRC 標(biāo)識(shí)符都被陳列 ,以期在接收機(jī)處正確指示交談?wù)?. 注意: 前 12個(gè)字節(jié)出現(xiàn)在每個(gè) RTP包中 ,僅僅在被混合器插入時(shí) ,才出現(xiàn) CSRC 識(shí)別符列表 . 嘉應(yīng)學(xué)院畢業(yè)論文 (設(shè)計(jì) ) 10 RTP 報(bào)文擴(kuò)展頭格式(見(jiàn) RFC3550 Page18): 0 1 2 3 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 +++++++++++++++++++++++++++++++++ | defined by profile | length | +++++++++++++++++++++++++++++++++ | header extension | | .... | 若 RTP頭中的擴(kuò)展比特位 X置 1,則一個(gè)長(zhǎng)度可變的頭擴(kuò)展部分被加到 RTP固定頭之后 ,頭擴(kuò)展包含 16比特的長(zhǎng)度域 ,指示擴(kuò)展項(xiàng)中 32 比特字的個(gè)數(shù) ,不包括 4個(gè)字節(jié)擴(kuò)展頭 (因此零是有效值 ).RTP 固定頭之后只允許有一個(gè)頭擴(kuò)展 .為允許多個(gè)互操作實(shí)現(xiàn)獨(dú)立生成不同的頭擴(kuò)展 ,或某種特定實(shí)現(xiàn)有多種不同的頭擴(kuò)展 ,擴(kuò)展項(xiàng)的前 16 比特用以識(shí)別標(biāo)識(shí)符或參數(shù) .這 16比特的格式由具體實(shí)現(xiàn)的上層協(xié)議定義 .基本的 RTP 說(shuō)明并不定義任何頭擴(kuò)展本身。具體的過(guò)程是:上層通過(guò)麥克風(fēng)采集音頻數(shù)據(jù),然后采用 G729a 進(jìn)行音頻壓縮,發(fā)送方 RTP 協(xié)議從上層接收音頻數(shù)據(jù)(這里采用 PCM 編碼),封裝成 RTP 數(shù)據(jù)包發(fā)送給下層協(xié)議 UDP, UDP 提供 RTP 和 RTCP 的分流, RTP 使 用一個(gè)偶數(shù)號(hào)端口,相應(yīng)的 RTCP 使用其后的奇數(shù)號(hào)端口。下面介紹幾個(gè)在進(jìn)行音頻編程時(shí)經(jīng)常需要用到的技術(shù)指標(biāo): ( 1) .采樣頻率 采樣頻率是指將模擬聲音波形進(jìn)行數(shù)字化時(shí),每秒鐘抽取聲波幅度 樣本的次數(shù)。反之,在播放時(shí)則是把數(shù)字信號(hào)還原成模擬聲音信號(hào)輸出。雙聲道又稱為立體聲,在硬件中有兩條線路,音質(zhì)和音色都要優(yōu)于單聲道,但數(shù)字化后占據(jù)的存儲(chǔ)空間的大小要比單聲道多 一倍。 OSS/Lite 從 開(kāi)始并入內(nèi)核,嘉應(yīng)學(xué)院畢業(yè)論文 (設(shè)計(jì) ) 14 現(xiàn)在大家使用的聲卡驅(qū)程默認(rèn)都是 OSS/Lite 中的。用這些進(jìn)行寫(xiě)程序不需要打開(kāi)設(shè)備等操作,所以編程人員在寫(xiě)程序的時(shí)候不會(huì)被底層的東西困擾。 ~CWavPlayer()。 void print_wav() const。} snd_pcm_t *get_handle() const { return handle。 //設(shè)備句柄 snd_pcm_uframes_t period_size。 } } snd_pcm_open 是 Alsa 庫(kù)提供的打開(kāi)設(shè)備調(diào)用函數(shù),這里我們指定打開(kāi)缺省的音頻設(shè)備,并根據(jù)參數(shù) mode 將設(shè)備置為錄音或是播放狀態(tài),如果參數(shù) mode 是 SND_PCM_STREAM_ PLAYBACK,則為打開(kāi)播 放設(shè)備;如果參數(shù) mode 是 SND_PCM_STREAM_CAPTURE,則為打開(kāi)錄音設(shè)備。 ( 5)周期 (period):音頻設(shè)備一次處理所需要的楨數(shù),對(duì)于音頻設(shè)備的數(shù)據(jù)訪問(wèn)以及音頻數(shù)據(jù)的存儲(chǔ),都是以此為單位。 //設(shè)備初始化 snd_pcm_hw_params_set_access(handle, hw_params, SND_PCM_ACCESS_RW_INTERLEAVED)。 //設(shè)置通道數(shù) int dir = 0。 } if (buffer_time 500000) buffer_time = 500000。 } snd_pcm_hw_params(handle, hw_params)。 //獲取采樣位數(shù) bit_per_frame = bit_per_sample * channels。 //把采集到的音頻數(shù)據(jù)放到 sendBuffer 緩沖區(qū)里,通過(guò) RTP 封裝然后發(fā)送 if (r == EAGAIN || (r = 0 amp。 exit(1)。 if (rc == EPIPE) { usleep(202100)。 int result。 snd_mixer_elem_t *elem。 snd_pcm_uframes_t period_size = ()。 } else if (r == ESTRPIPE) { std::cout Need suspend /n。 size_t result = 0。format)。period_time, 0) 0) { std::cerr Error snd_pcm_hw_params_set_period_time_near/n。buffer_time, 0) 0) { 嘉應(yīng)學(xué)院畢業(yè)論文 (設(shè)計(jì) ) 18 std::cerr Error snd_pcm_hw_params_get_buffer_time_max/n。 break 。hw_params)。 ( 3)楨 (frame):楨記錄了一個(gè)聲音單元,其長(zhǎng)度為樣本長(zhǎng)度與通道數(shù)的乘積 。handle, default, mode, 0)) 0) { std::cerr snd_pcm_open: std::endl。 //周期長(zhǎng)度( bytes) 嘉應(yīng)學(xué)院畢業(yè)論文 (設(shè)計(jì) ) 16 uint32_t bit_per_frame。other)。 //打開(kāi)音頻設(shè)備 void wav_record(uint16_t dtimes, int fd)。 //構(gòu)造函數(shù) CWavPlayer(CWavPlayer amp。它包含內(nèi)核驅(qū)動(dòng)集合, API 庫(kù)和工具對(duì)Linux 聲音進(jìn)行支持。由于 Hannu 的“逃跑”, RH 資助 Alan Cox 增強(qiáng) Hannu 開(kāi)發(fā)的驅(qū)動(dòng)程序,并使它們完全模塊化。采樣位數(shù)越高,信號(hào)的動(dòng)態(tài)范圍越大,數(shù)字化后的音頻信號(hào)就越可能接近原始信號(hào),但所需要的存貯空間也越大。我們首先要知道:電腦中的聲音文件是用數(shù)字 0和 1來(lái) 表示的。 數(shù)字音頻涉及到的概念非常多,對(duì)于在 Linux 下進(jìn)行音頻編程的程序員來(lái)說(shuō),最重要的是理解聲音數(shù)字化的兩個(gè)關(guān)鍵步驟:采樣和量化。 系統(tǒng)實(shí)現(xiàn)的基本原理和框架結(jié)構(gòu) 本系統(tǒng)主要實(shí)現(xiàn)音頻數(shù)據(jù)的實(shí)時(shí)傳輸通話。轉(zhuǎn)換器的一個(gè)應(yīng)用例子是嘉應(yīng)學(xué)院畢業(yè)論文 (設(shè)計(jì) ) 8 連接一些只能使用 IP/UDP 的主機(jī)和只能使用 STII 主機(jī),或者對(duì)單個(gè)信源的視頻流進(jìn)行逐包的編碼翻譯,而不作重新同步或混合。 ( 3)混合器和轉(zhuǎn)換器 當(dāng)某一與會(huì)者采用低速鏈路接入會(huì)議,而大部分與會(huì)者采用高速鏈路接入,如果讓每個(gè)與會(huì)者使用窄帶,低質(zhì)量的語(yǔ)音編碼器,這顯然不是一個(gè)很好的解決辦法,這時(shí)就需要使用“混合器”。因此每個(gè)與會(huì)者的應(yīng)用程序都周期性地廣
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1