什么是流媒體?
1.流媒體是指采用流的方式在Internet播放的格式。
2.流媒體指在Internet/Intranet中使用流式傳輸技術(shù)的聯(lián)系時(shí)基媒體斥难。如:音頻、視頻或者多媒體文件帘饶。
3.流媒體實(shí)現(xiàn)的關(guān)鍵技術(shù)就是流式傳輸哑诊。
4.流媒體傳輸方式:
(1):實(shí)時(shí)流式傳輸
(2):順序流式傳輸
什么是順序流式傳輸?
順序流式傳輸是順序下載及刻,在下載文件的同時(shí)用戶可觀看再線媒體镀裤,在給定時(shí)刻,用戶只能觀看已下載的那部分缴饭,而不能跳到還未下載的前頭部分暑劝,順序流式傳輸不象實(shí)時(shí)流式傳輸在傳輸期間根據(jù)用戶連接的速度做調(diào)整。
什么是實(shí)時(shí)流式傳輸颗搂?
實(shí)時(shí)流式傳輸指保證媒體信號(hào)帶寬與網(wǎng)絡(luò)連接配匹担猛,使媒體可被實(shí)時(shí)觀看到。實(shí)時(shí)流與HTTP流式傳輸不同,他需要專用的流媒體服務(wù)器與傳輸協(xié)議傅联。
流媒體技術(shù)原理先改?
流式傳輸?shù)膶?shí)現(xiàn)需要緩存。因?yàn)镮nternet以包傳輸為基礎(chǔ)進(jìn)行斷續(xù)的異步傳輸蒸走,對(duì)一個(gè)實(shí)時(shí)A/V源或存儲(chǔ)的A/V文件仇奶,在傳輸中它們要被分解為許多包,由于網(wǎng)絡(luò)是動(dòng)態(tài)變化的比驻,各個(gè)包選擇的路由可能不盡相同该溯,故到達(dá)客戶端的時(shí)間延遲也就不等,甚至先發(fā)的數(shù)據(jù)包還有可能后到别惦。為此朗伶,使用緩存系統(tǒng)來彌補(bǔ)延遲和抖動(dòng)的影響,并保證數(shù)據(jù)包的順序正確步咪,從而使媒體數(shù)據(jù)能連續(xù)輸出,而不會(huì)因?yàn)榫W(wǎng)絡(luò)暫時(shí)擁塞使播放出現(xiàn)停頓益楼。通常高速緩存所需容量并不大猾漫,因?yàn)楦咚倬彺媸褂铆h(huán)形鏈表結(jié)構(gòu)來存儲(chǔ)數(shù)據(jù):通過丟棄已經(jīng)播放的內(nèi)容,流可以重新利用空出的高速緩存空間來緩存后續(xù)尚未播放的內(nèi)容感凤∶踔埽——流式傳輸?shù)膶?shí)現(xiàn)需要合適的傳輸協(xié)議。由于TCP需要較多的開銷陪竿,故不太適合傳輸實(shí)時(shí)數(shù)據(jù)禽翼。在流式傳輸?shù)膶?shí)現(xiàn)方案中,一般采用HTTP/TCP來傳輸控制信息族跛,而用RTP/UDP來傳輸實(shí)時(shí)聲音數(shù)據(jù)闰挡。流式傳輸?shù)倪^程一般是這樣的:用戶選擇某一流媒體服務(wù)后,Web瀏覽器與Web服務(wù)器之間使用HTTP/TCP交換控制信息礁哄,以便把需要傳輸?shù)膶?shí)時(shí)數(shù)據(jù)從原始信息中檢索出來长酗;然后客戶機(jī)上的Web瀏覽器啟動(dòng)A/VHelper程序,使用HTTP從Web服務(wù)器檢索相關(guān)參數(shù)對(duì)Helper程序初始化桐绒。這些參數(shù)可能包括目錄信息夺脾、A/V數(shù)據(jù)的編碼類型或與A/V檢索相關(guān)的服務(wù)器地址。
A/VHelper程序及A/V服務(wù)器運(yùn)行實(shí)時(shí)流控制協(xié)議(RTSP)茉继,以交換A/V傳輸所需的控制信息咧叭。與CD播放機(jī)或VCRs所提供的功能相似,RTSP提供了操縱播放烁竭、快進(jìn)菲茬、快倒、暫停及錄制等命令的方法。A/V服務(wù)器使用RTP/UDP協(xié)議將A/V數(shù)據(jù)傳輸給A/V客戶程序(一般可認(rèn)為客戶程序等同于Helper程序)生均,一旦A/V數(shù)據(jù)抵達(dá)客戶端听想,A/V客戶程序即可播放輸出。
需要說明的是马胧,在流式傳輸中汉买,使用RTP/UDP和RTSP/TCP兩種不同的通信協(xié)議與A/V服務(wù)器建立聯(lián)系,是為了能夠把服務(wù)器的輸出重定向到一個(gè)不同于運(yùn)行A/VHelper程序所在客戶機(jī)的目的地址佩脊。實(shí)現(xiàn)流式傳輸一般都需要專用服務(wù)器和播放器蛙粘,其基本原理如圖所示。
常用流媒體格式
.mov .asf .3gp .viv .swf .rt .rp .ra .rm
流媒體播放方式
1.單播
——在客戶端與媒體服務(wù)器之間需要建立一個(gè)單獨(dú)的數(shù)據(jù)通道威彰,從一臺(tái)服務(wù)器送出的每個(gè)數(shù)據(jù)包只能傳送給一個(gè)客戶機(jī)出牧,這種傳送方式稱為單播。
2.組播
——IP組播技術(shù)構(gòu)建一種具有組播能力的網(wǎng)絡(luò)歇盼,允許路由器一次將數(shù)據(jù)包復(fù)制到多個(gè)通道上舔痕。
3.點(diǎn)播
——點(diǎn)播連接是客戶端與服務(wù)器之間的主動(dòng)的連接。在點(diǎn)播連接中豹缀,用戶通過選擇內(nèi)容項(xiàng)目來初始化客戶端連接伯复。用戶可以開始、停止邢笙、后退啸如、快進(jìn)或暫停流。
4.廣播
——廣播指的是用戶被動(dòng)接收流。在廣播過程中,客戶端接收流从隆,但不能控制流香拉。例如,用戶不能暫停、快進(jìn)或后退該流。廣播方式中數(shù)據(jù)包的單獨(dú)一個(gè)拷貝將發(fā)送給網(wǎng)絡(luò)上的所有用戶。
直播流具體代碼實(shí)現(xiàn)思路(共十一步)
1.初始化厌均,分配所有需要用到的資源。
2.登錄視頻服務(wù)器(難點(diǎn)-保持長(zhǎng)連接告唆」妆祝可以使用發(fā)送心跳包類似的方法實(shí)現(xiàn)長(zhǎng)連接)
3.申請(qǐng)網(wǎng)絡(luò)視頻
4.接受網(wǎng)絡(luò)視頻的數(shù)據(jù)包
5.創(chuàng)建緩沖區(qū),寫緩沖區(qū)
6.創(chuàng)建播放線程擒悬,讀緩沖區(qū)
7.解密模她,解密后通過回調(diào)把數(shù)據(jù)傳給解碼器進(jìn)行解碼
8.接受解密后的數(shù)據(jù),進(jìn)行解碼(目前常用的解碼器avcodec_decode_video2)
9.解碼成功懂牧,得到解碼后的數(shù)據(jù)YUV
10.把解碼后得到的YUV數(shù)據(jù)轉(zhuǎn)換為RGB格式
11.上屏顯示