首先,來看一下流媒體從制作到播放的整個(gè)過程吧。
流媒體需要什么樣的源數(shù)據(jù)?幾乎是任何數(shù)據(jù),你手頭的avi,rm等文件,甚至磁帶,或者剛從采集設(shè)備得到的模擬信號(hào)。
有源數(shù)據(jù)了,怎么處理呢?首先,如果是模擬信號(hào),就要先轉(zhuǎn)換成數(shù)字信號(hào)(直播往往是把剛采集到的模擬信號(hào)轉(zhuǎn)換成數(shù)字信號(hào)),然后就是按照需要的碼率進(jìn)行編碼。編碼需要編碼器,即codec。需要什么編碼器,就看你想要什么格式的文件。當(dāng)前流行的流媒體格式有三種:quick time, windows media technology(簡(jiǎn)稱wmt), real system。三種格式分屬不同的公司:quick time是蘋果公司的,后綴名是什么我也不清楚,因?yàn)椴怀=佑|;wmt是微軟的,一般以asf為后綴名;real system是real公司的,這種格式大家接觸得最多,rm、rmvb文件很常見。編碼成某種格式,還要看服務(wù)器上有沒有支持這種格式的服務(wù)端軟件,客戶端的播放器也要支持這種格式的播放,流媒體才能流起來。
編碼生成流媒體文件后,需要流媒體服務(wù)器進(jìn)行媒體的傳輸,主要是用特定的流媒體協(xié)議封裝數(shù)據(jù)包。
在列舉流媒體協(xié)議前,先看一下兩種通用的傳輸協(xié)議:tcp和udp。要問流媒體的數(shù)據(jù)傳輸和文件下載的數(shù)據(jù)傳輸有何不同,就是傳輸協(xié)議的不同。文件下載用的是tcp協(xié)議,tcp是有連接的協(xié)議,數(shù)據(jù)傳輸之前要建立連接,數(shù)據(jù)傳輸完后,連接才會(huì)斷開。tcp支持確認(rèn)重傳,能保證數(shù)據(jù)的完整性,因此只要下載完成,下載到客戶端的文件和服務(wù)器上的文件是一樣的,不會(huì)丟失了其中的某些數(shù)據(jù)。流媒體不能使用tcp協(xié)議,因?yàn)閠cp的重傳機(jī)制不能滿足流媒體對(duì)時(shí)間的要求,對(duì)流媒體來說,丟包也不會(huì)比視頻中斷的后果嚴(yán)重。流媒體使用udp協(xié)議。udp是無連接的協(xié)議,而且不需要確認(rèn)重傳,udp包發(fā)出之后,不需要等待接收方的確認(rèn),雖然可能丟失某些數(shù)據(jù),但能保證實(shí)時(shí)性。有種情況下,用udp傳輸?shù)牧髅襟w不得不轉(zhuǎn)換成tcp傳輸,是什么情況呢?如果你是內(nèi)網(wǎng)用戶,或處在公司的防火墻之后,就只能通過tcp來接收數(shù)據(jù),因?yàn)閡dp包會(huì)被防火墻拒收的。只不過這個(gè)tcp連接即使丟包也不重傳。
流媒體數(shù)據(jù)需要流媒體協(xié)議的封裝,根據(jù)格式不同,使用的協(xié)議也不同。有名的流媒體協(xié)議有四種:rtp, rtsp, rdp和mms。rtp以u(píng)dp為基礎(chǔ),擴(kuò)展了sequence number和time stamp等域。rtsp是rtp協(xié)議的擴(kuò)展,當(dāng)傳輸數(shù)據(jù)時(shí),使用rtp協(xié)議,當(dāng)傳輸控制數(shù)據(jù)時(shí),使用tcp連接。而rdp又是rtsp的擴(kuò)展,只是加強(qiáng)了控制協(xié)議。quick time就是使用rtp/rtsp傳輸媒體文件,而real system使用rtsp/rdp傳輸媒體文件。mms是微軟專用的協(xié)議,一開始,使用mmsu建立連接(mms和udp的結(jié)合),如果建立連接不成功,則轉(zhuǎn)用mmst(mms和tcp的結(jié)合)建立連接。wmt使用mms傳輸媒體文件。
如果沒有流媒體服務(wù)器,能不能實(shí)現(xiàn)邊下載邊播放的效果呢?答案是可以,就使用tcp上的http連接就可以。先把一些數(shù)據(jù)下載到緩沖區(qū)中,然后邊下載新的數(shù)據(jù)到緩沖區(qū),邊播放緩沖區(qū)已有的數(shù)據(jù)。這種流叫做http流,也叫假流。這就回到了我們開始提到的問題,我們看到的播客短片和pplive上的節(jié)目等其實(shí)都是http流,而不是真正的流媒體。
http流和真正的媒體流有什么區(qū)別呢?區(qū)別在很多方面:(1)首先看服務(wù)器,http流只需要web server就可以了,而真正的媒體流需要專用的媒體服務(wù)器。(2)再看協(xié)議,http流需要的協(xié)議從下到上為ip, tcp, http,而真正的媒體流需要ip, udp和專用的流媒體協(xié)議。(3)還有,因?yàn)閔ttp流使用的是tcp連接,所以如果丟包會(huì)重傳,而真正的媒體流不會(huì)重傳。也正是這個(gè)原因,如果撇開中斷等影響,我們通過http流看到的視頻質(zhì)量和服務(wù)器上的視頻質(zhì)量是一樣的,而通過真正的媒體流,其質(zhì)量會(huì)隨網(wǎng)絡(luò)狀況的不同而不同。(4)從啟動(dòng)延遲上看,http流的啟動(dòng)延遲要視網(wǎng)絡(luò)連接狀況,媒體碼率而定;而真正的媒體流啟動(dòng)延遲不會(huì)多于幾秒。(5)看http流的時(shí)候,你只能在已經(jīng)下載的視頻范圍內(nèi)拖動(dòng),而真正的流媒體可以在全片范圍內(nèi)拖動(dòng)。(6)最后,http流會(huì)把下載的媒體數(shù)據(jù)存入硬盤,而真正的媒體流不會(huì),它播放過的數(shù)據(jù)馬上丟棄了,這樣剛好保護(hù)了媒體作品的版權(quán)。
14:31 2007-5-30
聯(lián)系客服