流媒體傳輸分兩類(lèi):實(shí)時(shí)流媒體 和 順序流媒體
一般來(lái)說(shuō),如果視頻為現(xiàn)場(chǎng)直播,或使用專(zhuān)用的流媒體服務(wù)器,或應(yīng)用如RTSP等專(zhuān)用實(shí)時(shí)協(xié)議,即為實(shí)時(shí)流媒體傳輸;
如果使用普通的HTTP服務(wù)器,將音視頻數(shù)據(jù)以從頭至尾方式發(fā)送,則為順序流媒體傳輸。
實(shí)時(shí)流傳輸既可傳輸實(shí)況直播,也可傳輸完整的音視頻文件(專(zhuān)用協(xié)議流式)。
順序流媒體不可用于實(shí)況直播,僅能傳輸完整的音視頻文件(HTTP漸進(jìn)式)。
區(qū)別 | 實(shí)時(shí)流 | 順序流 |
音視頻數(shù)據(jù)源 | 實(shí)時(shí)從錄制設(shè)備上采集, 或(使用專(zhuān)用協(xié)議傳輸?shù)模┪募?/span> | 可播放的音視頻文件 |
服務(wù)器類(lèi)型 | 專(zhuān)用流媒體服務(wù)器,如: QuickTime Streaming Server Real Server Windows Media Server Flash Media Server | 普通的HTTP服務(wù)器, 或FTP服務(wù)器 |
傳輸協(xié)議 | 專(zhuān)用協(xié)議 HLS或RTMP等 | 一般的HTTP協(xié)議, 與傳輸網(wǎng)頁(yè)的協(xié)議相同 |
跳播 | 可隨機(jī)訪(fǎng)問(wèn)任意片段 | 在給定時(shí)刻,用戶(hù)只能觀(guān)看已下載的那部分,而不能跳到還未下載的部分 |
主流的流媒體協(xié)議主要有: RTMP,HLS, RTSP等。
區(qū)別 | RTMP | HLS | RTSP |
全稱(chēng) | Real Time Message Protocol | Http Live Stream | Real Time Streaming Protocol |
上層協(xié)議 | TCP或HTTP | HTTP | RTP,RTCP |
軟件模型 | C\S | B\S | C\S |
研發(fā)主要來(lái)自 | Adobe | Apple | Microsoft |
針對(duì)客戶(hù)端 | 支持Flash類(lèi)產(chǎn)品 的瀏覽器 支持HTML5的瀏覽器 | 支持HTML5的瀏覽器 | 播放器 |
視頻格式要求 | FLV, F4V | MP4 | 無(wú) |
服務(wù)器要求 | 專(zhuān)用Flash服務(wù)器 Flash Media Server Red5 | 普通HTTP服務(wù)器 | 專(zhuān)用RTSP流媒體服務(wù)器 |
實(shí)況直播要求 | 專(zhuān)用編碼器上傳 Flash Media Encoder | 專(zhuān)用編碼器上傳 Apple開(kāi)發(fā)工具 | 與服務(wù)器相關(guān), 自定義上傳 |
文件播放要求 | Flv ,F4V文件即可, 服務(wù)器會(huì)自動(dòng)分解為 F4f 數(shù)據(jù)文件 f4x索引文件 | Ts數(shù)據(jù)文件, M3u8索引文件 | 與服務(wù)器相關(guān), 與播放器相關(guān) |
一,http漸進(jìn)式下載原理(僅支持文件播放)
http邊下載邊播放,嚴(yán)格意義上講,不是直播協(xié)議。他的原理是先下載文件的基本信息,音頻視頻的時(shí)間戳,再下載音視頻數(shù)據(jù),以播放mp4為例,先下載文件頭,根據(jù)文件頭指引下載文件尾,然后再下載文件的音視頻數(shù)據(jù)。
播放方式:瀏覽器調(diào)用系統(tǒng)播放器播放;
使HTML5的Video標(biāo)簽,瀏覽器支持直接播放。
二,蘋(píng)果支持的hls原理(實(shí)況直播 文件點(diǎn)播)
服務(wù)器端有三個(gè)組件:
其一:編碼器(media encoder), 用于將設(shè)備輸出的格式轉(zhuǎn)為H264和AAC,并封裝為MPEG-2傳輸流;
其二:流分段器(stream segmenter), 用于實(shí)況直播,將MPEG-2流分割為多個(gè)小片段后輸出;
其三:文件分段器(file segmenter), 用于文件點(diǎn)播,將文件分隔為多個(gè)小片段后輸出;
分發(fā)原理
數(shù)據(jù)經(jīng)以上三部分處理后為.ts文件(媒體數(shù)據(jù))及.m3u8文件(媒體數(shù)據(jù)索引)存在于服務(wù)器之上。 客戶(hù)端訪(fǎng)問(wèn).m3u8后按索引下載.ts文件進(jìn)行播放。
下面為某m3u8文件內(nèi)容:
#EXTM3U
#EXT-X-TARGETDURATION:30
#EXTINF:30,
http://192.169.1.176/sample_100k-1.ts
#EXTINF:30,
http://192.169.1.176/sample_100k-2.ts
#EXTINF:30,
http://192.169.1.176/sample_100k-3.ts
#EXT-X-ENDLIST
根據(jù)這個(gè)文件,播放器會(huì)依次下載sample_100k-1.ts,sample_100k-2.ts,sample_100k-3.ts
HLS的文件點(diǎn)播
1.使用蘋(píng)果開(kāi)發(fā)工具“文件分段器”將基于H264和AAC或MP3的MPEG4分段,
生成.ts和.m3u8文件,存儲(chǔ)于普通服務(wù)器上。
2.蘋(píng)果應(yīng)用程序或蘋(píng)果瀏覽器可以通過(guò)訪(fǎng)問(wèn).m3u8文件獲取到索引,
并下載所需要的數(shù)據(jù)片段來(lái)播放。
HLS的實(shí)況直播
1. 使用蘋(píng)果開(kāi)發(fā)工具“流分段器”將基于H264、AAC、MP3的MPEG2傳輸流分段,
可使用其它工具將MPEG4音視頻文件加載到MPEG2傳輸流當(dāng)中。
生成.ts和.m3u8文件,存儲(chǔ)于普通服務(wù)器上。
2.
三,AdobeFlash 支持的RTMP協(xié)議(支持文件播放 和 實(shí)況直播)
必須采用Flash服務(wù)器FMS(FlashMedia Server) 或RED5.
FMS的文件點(diǎn)播
1. 服務(wù)器將F4v 或 Flv文件轉(zhuǎn)化為RTMP流或HTTP流
2. 客戶(hù)端獲取RTMP流,提取相應(yīng)的Flv 或 F4v文件片段進(jìn)行播放。
FMS的實(shí)況直播
1. 設(shè)備端將數(shù)據(jù)轉(zhuǎn)化為F4v片段,通過(guò)RTMP流上傳到服務(wù)器
2. 服務(wù)器轉(zhuǎn)發(fā)RTMP流到客戶(hù)端
3. 客戶(hù)端獲取RTMP流,提取數(shù)據(jù)片段播放。
四,RTSP協(xié)議
RTSP為純粹的傳輸控制協(xié)議。
RTSP協(xié)議本身不與它負(fù)載的媒體數(shù)據(jù)相關(guān)。
RTSP協(xié)議需要自定義客戶(hù)端向服務(wù)器發(fā)送RTSP命令。
聯(lián)系客服