亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 網絡通信 > 正文

基于VoIP的媒體采集/播放的設計考慮

2019-11-03 08:59:20
字體:
來源:轉載
供稿:網友
代雯蕾 黃桂金

華中科技大學電信系 武漢430074


  摘 要 在Voip(Voice Over IP,基于IP的話音)服務當中,媒體的采集/播放質量將直接影響到通話質量。本文詳細描述了基于VoIP的媒體采集/播放的設計實現,以及需要注意的一些問題。

  關鍵詞 VoIP RTP(Realtime Transport PRotocol,實時傳輸協議) 音頻 視頻

  1 背景

  隨著寬帶互聯網的普及和技術的巨大進步,VoIP技術已經成為了能夠與傳統電話服務和PBX產品的相匹敵的技術。VoIP終端將音頻、視頻模擬信號進行抽樣、編碼處理成壓縮幀,然后轉換為IP包進行傳輸,從而達到了在IP網上進行多媒體通信的目的。本文將從VoIP對媒體采集/播放的要求出發,分析可能影響采集/播放的性能的幾個因素并提出解決方法。

  2 VoIP的媒體采集/播放要求

  VoIP通常采用G.723.1或G.728等音頻編碼方式,要求能夠提供采樣頻率為8000Hz,每樣本點為13比特以上的采集能力。因此,音頻采集需輸出指定時間間隔(20~200ms,缺省值為20 ms)、采樣頻率為8000Hz、每樣本點為16比特的音頻數據。對應的,音頻播放將得到一定時間間隔、采樣頻率為8000Hz、每樣本點為16比特的音頻數據。

  視頻編碼通常采用H261和H263兩種方式,要求以1/30秒的時間間隔提供一個完整的一幀符合CIF(Common Intermediate Format,畫面大小為352 * 288)、QCIF(Quarter-CIF,176 * 144)或者SQCIF(sub-QCIF,128 * 96)格式的原始視頻數據。對應的,視頻播放將得到固定時間間隔、完整的一幀符合CIF、QCIF或者SQCIF格式的視頻數據。

  3 VoIP的媒體封裝要求

  原始媒體流經過編碼后,按一定規則被切割成段,繼而進行RTP封裝。RTP包帶有一個固定包頭:

  其中,采集模塊關心的只是timestamp字段。 timestamp為時間戳,表示音頻/視頻數據的采樣時刻,其初值隨機。對于音頻數據,其分辨率為1/8000秒,對于視頻數據,要求其分辨率為1/90000秒。

  4 可能影響系統性能的幾個因素及解決方法

  評價系統的性能,必須從兩個方面來考慮,即處理時間和占用的內存空間。下面就可能影響系統性能的幾個因素進行討論,并提出解決方法。

  4.1 采集/播放與其他模塊之間的數據交互

  采集的媒體數據將發送至音頻/視頻編碼部分,為了避免反復申請/釋放內存,編碼模塊應盡可能地在采集模塊發送的數據塊內就地編碼,而不是另申請一塊數據存放編碼后的數據(在視頻編碼中,若某幀與上一幀差別太大,該幀編碼后的數據量可能無法裝入一個RTP包當中,必須分為多個RTP包發送,這種情況下,另外申請空間無法避免)。同時,由于編碼后的數據還會做RTP封裝,為了避免反復拷貝,采集模塊發送至編碼模塊的數據塊應為RTP包頭留有余地。

  考慮到編碼算法(如H.263,G.728,G.723.1)需要從采集模塊得到時間戳,原始數據長度,視頻幀號等信息,所以需要定制一個結構來存放這些數據,稱之為編碼信息結構。因此,采集模塊發送到編碼模塊的數據塊內,首先存放的是一個聯合(Union),該聯合中包括RTP包頭結構和編碼信息結構。接下來存放的才是原始媒體數據。

  根據編碼方式的不同,RTP包頭的長度也可能不同,如G.728僅有一個RTP固定包頭,而H.263和H.261需先添加一個RTP載荷頭,再添加固定包頭。出于對可擴展性的考慮,在數據塊的結構中需有一個字段來指示“有用的”數據相對與本數據塊的偏移量。

  4.2 音頻采集/播放模塊的內部結構

  采集模塊為音視頻會議提供數據源,因此音視頻數據采集的實時性非常重要。在實現方法上,采用系統開銷較小的方式。以Windows系統為例,可以采用Waveform Audio SDK來完成音頻采集,用VFW SDK來完成視頻采集,而不選用DirectShow。同樣地,音視頻的播放也可通過上述兩類SDK來完成。

  由于人類對聲音比較敏感,所以為了保證音頻采集/播放的連續性與均勻性,音頻采集和播放都應申請一個環形緩沖區以存放待編碼/播放的音頻數據塊地址。之所以存放數據塊地址而不直接將音頻數據填入,是因為若直接填入數據,采集側每次將數據發送至編碼模塊時,需要將數據從緩沖區內拷出;同時播放側每次從同步模塊接收音頻數據時,亦需要將數據從消息中拷入緩沖區。這樣做對性能有一定的影響。為了減少拷貝,可在緩沖區內僅存放數據塊的地址,在音頻采集模塊向音頻編碼模塊,或者是同步模塊向音頻播放發送數據時,只需指出該數據塊的地址及音頻數據偏移量即可,而不需要重復拷貝。

  在實時操作系統系統環境下,音頻采集/播放模塊可分為兩個獨立的任務或線程,即音頻采集和音頻播放。其中,音頻采集線程還擁有一個子線程,即數據發送線程,該線程的任務是實時地將采集完畢的音頻數據發送至音頻編碼模塊;音頻播放線程也擁有一個子線程,即數據播放線程,該線程的任務是實時地將音頻數據從播放緩沖區取出,送至音頻驅動以供播放。

  音頻采集模塊在收到采集啟動消息后,將待采集數據塊(為了保證采集的連續性,這里需要是多個數據塊)的地址告知驅動,并通知驅動開始采集;當一塊數據塊采集完成后,數據發送線程將采集的數據取出發送給音頻編碼實體,并申請下一塊數據送給驅動。音頻播放模塊在收到播放啟動消息后,并不馬上播放,而是先將同步模塊發來的數據填入播放(環形)緩沖區。在填到一個門限值后,從緩沖區的第一塊數據開始,將多個數據塊的地址送往驅動,并通知驅動開始播放;每當一塊數據播放完成后,數據播放線程都取出下一塊數據送給驅動。

  4.3 線程的同步與互斥

  由于音頻的采集和播放都是由兩個線程協作完成的,因此線程間的同步與互斥是重點。在音頻采集線程和數據發送線程之間,音頻播放線程和數據播放線程之間需要進行同步,也就是說,當一個數據塊采集/播放完畢時,需要以某種方式告知數據發送/播放線程去取下一個數據塊。

  對于VoIP的應用來說,通知的實時性最為重要。首先考慮回調函數方式,它的實時性最高,但在一些系統中(如Windows),在回調函數中調用音頻驅動的某些函數可能會引起死鎖;其次是事件通知方式,即在數據發送線程中,等待“采集完成”事件的發生,一旦采集完成,該事件即被置為“有事件”狀態,這種方式的實時性較好,只是獲取數據塊索引的方式略為麻煩(因為送往驅動待采集/播放的數據不止一塊);采集完成后,驅動亦可向指定的線程發送消息,但由于消息機制的實時性不高,所以不作考慮。因此,一般采用事件進行通知的方式來完成同步和互斥。

  5 時間戳的產生

  根據協議規定,音頻時間戳的分辨率為1/8000秒,視頻時間戳的分辨率為1/90000秒,因此需要采用高精度的計數器(其分辨率不低于1/90000秒)。由于音視頻時間戳要求的分辨率不同,在沒有兩個計數器的情況下,可以用一個計數器來得到兩種時間戳。

  首先獲取計數器頻率Freq。在啟動采集時,查詢計數器的初使值,保存在一個靜態變量當中。接下來通過md5算法產生一個32bit的隨機數賦予timeStamp作為第一個RTP包的時間戳。每當有數據塊采集完成,查詢當前計數器的值,計算與計數器初始值的差值CntGap,將這個差值與計數器周期相乘得到實際時間差timeGap,即:

  timeGap = (double)( (double) CntGap / Freq),將這個時間差除以RTP時間戳的周期1/8000(1/90000),再加上時間戳的初值,即得到本次采集的時間戳。

  6 結束語

  由于音/視頻數據的采集/播放性能直接關系到通話質量,所以高性能的VoIP終端離不開高性能的媒體采集/播放模塊。本文提出了影響音/視頻數據的采集/播放性能的一些因素,并討論了以Windows操作系統為例的設計方法。在其他平臺上開發VoIP終端時,采集/播放模塊與操作系統的接口由于實際平臺的不同將會有所差異,但本方案提出的模塊內部結構,與周圍模塊的接口等與平臺無關,因此仍有一定的參考價值。

  
----《中國數據通信》

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲欧美一区二区三区久久| 久久久亚洲国产| 色综合久久天天综线观看| 日韩欧美在线观看| 日本免费一区二区三区视频观看| 亚洲偷熟乱区亚洲香蕉av| 欧美成年人视频| 久久亚洲精品毛片| 久热精品视频在线观看一区| 欧美激情亚洲自拍| 中文字幕精品av| 欧美黑人xxxⅹ高潮交| 久久久爽爽爽美女图片| 欧美精品在线观看| 欧美多人乱p欧美4p久久| 51午夜精品视频| 欧美性xxxxxx| 亚洲国产精品va| 91av在线国产| 国产精品久久一区主播| xxxx欧美18另类的高清| 久久久久久久久久久网站| 国产日产久久高清欧美一区| 国产91色在线|| 成人精品视频99在线观看免费| 国产精品福利在线观看网址| 亚洲成人激情在线观看| 91av在线国产| 97色伦亚洲国产| 日韩在线免费av| 欧美激情一区二区久久久| 久久男人的天堂| 久久露脸国产精品| 国产视频精品一区二区三区| 亚洲最大的av网站| 91国偷自产一区二区三区的观看方式| 亚洲一区亚洲二区| 午夜精品美女自拍福到在线| 国产美女久久精品| 日韩综合视频在线观看| 欧美午夜xxx| 高清日韩电视剧大全免费播放在线观看| 亚洲精品国产拍免费91在线| 97激碰免费视频| 精品成人久久av| 国产精品美女久久久久av超清| 色偷偷偷亚洲综合网另类| 精品国产区一区二区三区在线观看| 久久综合伊人77777| 国产精品精品视频| 成人中文字幕+乱码+中文字幕| 亚洲精品电影在线观看| 国产精品日韩在线| 日韩在线免费高清视频| 欧美富婆性猛交| 亚洲欧美一区二区三区在线| 久久综合色88| 欧美午夜宅男影院在线观看| 久久99亚洲热视| 91精品国产99久久久久久| 欧美极品少妇xxxxⅹ免费视频| 最近2019年手机中文字幕| 91精品久久久久久久| 国产精品成av人在线视午夜片| 色综合天天狠天天透天天伊人| 中文字幕免费精品一区高清| 超碰日本道色综合久久综合| 亚洲精品在线91| 久久久久九九九九| 中文字幕精品久久| 国产日本欧美一区二区三区| 久久久久久久电影一区| 亚洲黄色www| 疯狂欧美牲乱大交777| 亚洲色图13p| 久久国产视频网站| 亚洲人成伊人成综合网久久久| 91国内精品久久| 久久精品国产91精品亚洲| 久久精品国产亚洲7777| 国产欧美日韩精品在线观看| 国产主播在线一区| 欧美精品手机在线| 国产网站欧美日韩免费精品在线观看| 人人澡人人澡人人看欧美| 国产精品视频网站| 亚洲第一男人天堂| 国产精品午夜视频| 在线看片第一页欧美| 国产精品永久免费观看| 亚洲香蕉成视频在线观看| 成人av在线亚洲| 欧美成人精品不卡视频在线观看| 午夜精品一区二区三区在线视| 高清欧美一区二区三区| 欧洲日韩成人av| 欧美激情第一页xxx| 成人久久久久久久| 7m第一福利500精品视频| 亚洲国产精品资源| 91国产在线精品| 日韩av综合中文字幕| 欧美成人免费在线观看| 亚洲成人久久久久| 久久久天堂国产精品女人| 欧美日韩另类在线| 日本精品一区二区三区在线| 日韩大胆人体377p| 狠狠干狠狠久久| 夜夜嗨av一区二区三区免费区| 欧美成人中文字幕| 国产精品aaa| 中文字幕国产精品| 欧美日韩亚洲一区二区三区| 91在线直播亚洲| 91夜夜揉人人捏人人添红杏| 欧美激情精品久久久久| 欧美日韩亚洲系列| 亚洲天堂av在线播放| 日韩欧美中文免费| www.亚洲成人| xvideos亚洲人网站| 欧美高跟鞋交xxxxhd| 日韩有码视频在线| 亚洲性69xxxbbb| 精品视频在线播放| 欧美成人免费一级人片100| 自拍亚洲一区欧美另类| 亚洲激情视频在线播放| 日韩av不卡电影| 亚洲天堂视频在线观看| 亚洲第一福利视频| 黑人精品xxx一区| 精品久久在线播放| 欧美日本中文字幕| 成人黄色av播放免费| 国产精品va在线播放| 国产日韩欧美在线| 日韩av在线网| 亚洲人免费视频| 亚洲美女黄色片| 高跟丝袜欧美一区| 中日韩美女免费视频网址在线观看| 国产精品欧美激情| 欧美成人一区二区三区电影| 日韩欧美国产中文字幕| 日本国产一区二区三区| 亚洲综合中文字幕在线| 欧美专区国产专区| 日韩欧美在线视频免费观看| 国产福利视频一区| 日韩av网站导航| 91精品视频观看| 国产亚洲人成网站在线观看| 色av中文字幕一区| 欧美日韩国产一区二区| 欧洲美女免费图片一区| 欧美激情xxxx性bbbb| 亚洲人成网站在线播| 亚洲天堂av综合网| 国产综合视频在线观看| 久久激情视频久久| 高清视频欧美一级| 91精品国产成人www|