RTP音視頻同步中NTP的作用

RTP音視頻同步中NTP的作用

多媒體通信同步方法肚逸,主要有時(shí)間戳同步法爷辙、同步標(biāo)記法彬坏、多路復(fù)用同步法三種。下面主要討論時(shí)間戳同步法膝晾,特別是RTP時(shí)間戳同步栓始。內(nèi)容包括RTP媒體間同步的實(shí)現(xiàn),為什么需要RTCP的NTP時(shí)間來(lái)實(shí)現(xiàn)媒體間同步血当?沒(méi)有RTCP幻赚,能實(shí)現(xiàn)RTP媒體間的同步嗎?DirectShow時(shí)間戳和RTP時(shí)間戳的區(qū)別臊旭,MPEG2-TS流的時(shí)間戳等坯屿。本文只簡(jiǎn)單討論時(shí)間戳同步的原理,不涉及具體的實(shí)現(xiàn)方法巍扛,如音頻幀和視頻幀時(shí)間戳的計(jì)算方法领跛,怎樣根據(jù)時(shí)間戳去做音視頻的呈現(xiàn)等。

根據(jù)RTP規(guī)范撤奸,不同的RTP媒體流是分開(kāi)傳輸?shù)姆驼眩沂褂酶髯元?dú)立的時(shí)間戳進(jìn)行同步。假設(shè)在一次視頻點(diǎn)播中胧瓜,傳輸兩路RTP媒體流矢棚,一路視頻,一路音頻府喳。根據(jù)視頻幀時(shí)間戳蒲肋,可以實(shí)現(xiàn)視頻流內(nèi)同步,這很好理解钝满,通過(guò)視頻幀時(shí)間戳可以計(jì)算出相鄰視頻幀的時(shí)間間隔兜粘,也就是視頻幀之間的相對(duì)時(shí)間關(guān)系很容易通過(guò)時(shí)間戳來(lái)確定,按照這個(gè)間隔去呈現(xiàn)視頻弯蚜,就可以獲得較好的效果孔轴。同理,音頻流也可以實(shí)現(xiàn)自身的同步碎捺。

那么音頻和視頻這兩路媒體間如何實(shí)現(xiàn)同步呢路鹰?我們只使用音視頻的RTP時(shí)間戳,看能否實(shí)現(xiàn)媒體間的同步收厨。音視頻的RTP時(shí)間戳的增長(zhǎng)速率一般是不同的晋柱,但沒(méi)關(guān)系,知道了具體的單位后诵叁,兩者是可以通過(guò)單位換算聯(lián)系起來(lái)的雁竞。如下圖:

image.png

現(xiàn)在來(lái)看,這種方法好像可以實(shí)現(xiàn)同步黎休,因?yàn)橐粢曨l被映射到同一個(gè)時(shí)間軸上了浓领,音頻和視頻幀間的相對(duì)關(guān)系很清楚玉凯。慢著,RTP規(guī)范要求時(shí)間戳的初始值應(yīng)該是一個(gè)隨機(jī)值联贩,那么假設(shè)音頻幀時(shí)間戳的初始值是隨機(jī)值1234漫仆,視頻幀時(shí)間戳的初始值是隨機(jī)值5678,看起來(lái)應(yīng)該是下面這樣:

image.png

這么做合適嗎泪幌?我們把音頻幀時(shí)間戳1234和視頻幀時(shí)間戳5678對(duì)應(yīng)到絕對(duì)時(shí)間軸的0上盲厌,我們這么做的理由是什么?你可能會(huì)說(shuō)祸泪,因?yàn)槟鞘堑谝粋€(gè)音頻幀和第一個(gè)視頻幀吗浩,所以可以對(duì)應(yīng)到同一個(gè)點(diǎn)上,在第一幅圖中我們就是這么做的没隘,把音頻幀時(shí)間戳0和視頻幀時(shí)間戳0對(duì)應(yīng)到絕對(duì)時(shí)間軸的0上懂扼。但是RTP規(guī)范并沒(méi)有規(guī)定第一個(gè)視頻幀的時(shí)間戳和第一個(gè)音頻幀的時(shí)間戳必須或者應(yīng)該對(duì)應(yīng)到絕對(duì)時(shí)間軸的同一個(gè)點(diǎn)上,從整個(gè)RTP規(guī)范中不能直接得出這樣的結(jié)論右蒲,也推導(dǎo)不出這樣的結(jié)論阀湿。

我們上面兩幅圖所做的轉(zhuǎn)換是不正確的,為什么呢瑰妄?因?yàn)樵谧鲛D(zhuǎn)換時(shí)陷嘴,隱含了一個(gè)假設(shè),我們想當(dāng)然地認(rèn)為這個(gè)假設(shè)是成立的间坐,實(shí)際上它并不總是成立灾挨。這個(gè)假設(shè)就是第一個(gè)視頻幀和第一個(gè)音頻幀的時(shí)間戳應(yīng)該對(duì)應(yīng)到同一個(gè)點(diǎn)上,即無(wú)論它們時(shí)間戳是多少竹宋,都應(yīng)該在同一時(shí)間播放劳澄。

僅僅使用RTP時(shí)間戳是無(wú)法實(shí)現(xiàn)媒體間同步的,根本的原因是音頻時(shí)間軸和視頻時(shí)間軸是完全獨(dú)立的逝撬,通過(guò)音頻幀和視頻幀的時(shí)間戳浴骂,無(wú)法確定一個(gè)視頻幀和一個(gè)音頻幀的相對(duì)時(shí)間關(guān)系,也就是無(wú)法把它們都準(zhǔn)確定位在絕對(duì)時(shí)間軸上宪潮,只能準(zhǔn)確定位一個(gè)。

要實(shí)現(xiàn)RTP媒體間同步趣苏,需要借助于RTCP狡相,在RTCP的SR包中,包含有<NTP時(shí)間食磕,RTP時(shí)間戳>對(duì)尽棕,音頻幀RTP時(shí)間戳和視頻幀RTP時(shí)間戳通過(guò)<NTP時(shí)間,RTP時(shí)間戳>對(duì)彬伦,都可以準(zhǔn)確定位到絕對(duì)時(shí)間軸NTP上滔悉,音頻幀和視頻幀的相對(duì)時(shí)間關(guān)系就可以確定下來(lái)了伊诵。

上面提到,我們的那個(gè)隱含的假設(shè)并不總是成立回官,那就是說(shuō)它有成立的時(shí)候曹宴。那是不是說(shuō)當(dāng)它成立時(shí),我們就可以不用RTCP來(lái)做媒體間同步了歉提?答案是笛坦,基本上可以這么認(rèn)為。

例如苔巨,對(duì)于RTP實(shí)時(shí)流版扩,在發(fā)送端媒體間就同步的很好,在接收端只需做少許處理侄泽,不需要RTCP礁芦,就可以實(shí)現(xiàn)媒體間同步。當(dāng)然悼尾,這只是少數(shù)例外柿扣。因?yàn)镽TP規(guī)范并不包括這個(gè)假設(shè),所以我們還是按照RTP規(guī)范來(lái)做吧诀豁。

下面說(shuō)一下DirectShow和MPEG2-TS的時(shí)間戳窄刘。DirectShow中的時(shí)間戳和RTP中的時(shí)間戳,除了單位不一樣舷胜,計(jì)算方法不一樣外娩践,本質(zhì)的區(qū)別就是DirectShow中的音頻幀和視頻幀時(shí)間戳使用的是同一個(gè)時(shí)間軸,所以不需要借助其他的東西烹骨,僅僅使用音頻幀時(shí)間戳和視頻幀時(shí)間戳就可以實(shí)現(xiàn)媒體間同步翻伺。MPEG2-TS流中也有時(shí)間戳,它的時(shí)間戳和RTP及DirectShow的時(shí)間戳都不同沮焕,TS流中的音頻幀和視頻幀時(shí)間戳使用的也是同一個(gè)時(shí)間軸吨岭,TS流中的音頻和視頻是復(fù)用的,這在一定程度上就起到了同步的作用峦树,所以它并不是在每個(gè)幀上都打時(shí)間戳辣辫,比如它的PTS時(shí)間戳就是每隔0.1秒一個(gè),缺失的時(shí)間戳是通過(guò)其他時(shí)間戳插值計(jì)算出來(lái)的魁巩。

(dengzikun)

文章轉(zhuǎn)載自:羅索實(shí)驗(yàn)室 [http://www.rosoo.net/a/201101/10776.html]

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末急灭,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子谷遂,更是在濱河造成了極大的恐慌葬馋,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異畴嘶,居然都是意外死亡蛋逾,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門窗悯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)区匣,“玉大人,你說(shuō)我怎么就攤上這事蟀瞧〕了蹋” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵悦污,是天一觀的道長(zhǎng)铸屉。 經(jīng)常有香客問(wèn)我,道長(zhǎng)切端,這世上最難降的妖魔是什么彻坛? 我笑而不...
    開(kāi)封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮踏枣,結(jié)果婚禮上昌屉,老公的妹妹穿的比我還像新娘。我一直安慰自己茵瀑,他們只是感情好间驮,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著马昨,像睡著了一般竞帽。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上鸿捧,一...
    開(kāi)封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天屹篓,我揣著相機(jī)與錄音,去河邊找鬼匙奴。 笑死堆巧,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的泼菌。 我是一名探鬼主播谍肤,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼哗伯!你這毒婦竟也來(lái)了谣沸?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤笋颤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體伴澄,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡赋除,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了非凌。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片举农。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖敞嗡,靈堂內(nèi)的尸體忽然破棺而出颁糟,到底是詐尸還是另有隱情,我是刑警寧澤喉悴,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布棱貌,位于F島的核電站,受9級(jí)特大地震影響箕肃,放射性物質(zhì)發(fā)生泄漏婚脱。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一勺像、第九天 我趴在偏房一處隱蔽的房頂上張望障贸。 院中可真熱鬧,春花似錦吟宦、人聲如沸篮洁。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)袁波。三九已至,卻和暖如春辰狡,著一層夾襖步出監(jiān)牢的瞬間锋叨,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工宛篇, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留娃磺,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓叫倍,卻偏偏與公主長(zhǎng)得像偷卧,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子吆倦,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容