流媒体传输分两类:实时流媒体 和 顺序流媒体
一般来说,如果视频为现场直播,或使用专用的流媒体服务器,或应用如RTSP等专用实时协议,即为实时流媒体传输;
如果使用普通的HTTP服务器,将音视频数据以从头至尾方式发送,则为顺序流媒体传输。
实时流传输既可传输实况直播,也可传输完整的音视频文件(专用协议流式)。
顺序流媒体不可用于实况直播,仅能传输完整的音视频文件(HTTP渐进式)。
区别 | 实时流 | 顺序流 |
音视频数据源 | 实时从录制设备上采集, 或(使用专用协议传输的)文件 | 可播放的音视频文件 |
服务器类型 | 专用流媒体服务器,如: QuickTime Streaming Server Real Server Windows Media Server Flash Media Server | 普通的HTTP服务器, 或FTP服务器 |
传输协议 | 专用协议 HLS或RTMP等 | 一般的HTTP协议, 与传输网页的协议相同 |
跳播 | 可随机访问任意片段 | 在给定时刻,用户只能观看已下载的那部分,而不能跳到还未下载的部分 |
主流的流媒体协议主要有: RTMP,HLS, RTSP等。
区别 | RTMP | HLS | RTSP |
全称 | Real Time Message Protocol | Http Live Stream | Real Time Streaming Protocol |
上层协议 | TCP或HTTP | HTTP | RTP,RTCP |
软件模型 | C\S | B\S | C\S |
研发主要来自 | Adobe | Apple | Microsoft |
针对客户端 | 支持Flash类产品 的浏览器 支持HTML5的浏览器 | 支持HTML5的浏览器 | 播放器 |
视频格式要求 | FLV, F4V | MP4 | 无 |
服务器要求 | 专用Flash服务器 Flash Media Server Red5 | 普通HTTP服务器 | 专用RTSP流媒体服务器 |
实况直播要求 | 专用编码器上传 Flash Media Encoder | 专用编码器上传 Apple开发工具 | 与服务器相关, 自定义上传 |
文件播放要求 | Flv ,F4V文件即可, 服务器会自动分解为 F4f 数据文件 f4x索引文件 | Ts数据文件, M3u8索引文件 | 与服务器相关, 与播放器相关 |
一,http渐进式下载原理(仅支持文件播放)
http边下载边播放,严格意义上讲,不是直播协议。他的原理是先下载文件的基本信息,音频视频的时间戳,再下载音视频数据,以播放mp4为例,先下载文件头,根据文件头指引下载文件尾,然后再下载文件的音视频数据。
播放方式:浏览器调用系统播放器播放;
使HTML5的Video标签,浏览器支持直接播放。
二,苹果支持的hls原理(实况直播 文件点播)
服务器端有三个组件:
其一:编码器(media encoder), 用于将设备输出的格式转为H264和AAC,并封装为MPEG-2传输流;
其二:流分段器(stream segmenter), 用于实况直播,将MPEG-2流分割为多个小片段后输出;
其三:文件分段器(file segmenter), 用于文件点播,将文件分隔为多个小片段后输出;
分发原理
数据经以上三部分处理后为.ts文件(媒体数据)及.m3u8文件(媒体数据索引)存在于服务器之上。 客户端访问.m3u8后按索引下载.ts文件进行播放。
下面为某m3u8文件内容:
#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
根据这个文件,播放器会依次下载sample_100k-1.ts,sample_100k-2.ts,sample_100k-3.ts
HLS的文件点播
1.使用苹果开发工具“文件分段器”将基于H264和AAC或MP3的MPEG4分段,
生成.ts和.m3u8文件,存储于普通服务器上。
2.苹果应用程序或苹果浏览器可以通过访问.m3u8文件获取到索引,
并下载所需要的数据片段来播放。
HLS的实况直播
1. 使用苹果开发工具“流分段器”将基于H264、AAC、MP3的MPEG2传输流分段,
可使用其它工具将MPEG4音视频文件加载到MPEG2传输流当中。
生成.ts和.m3u8文件,存储于普通服务器上。
2.
三,AdobeFlash 支持的RTMP协议(支持文件播放 和 实况直播)
必须采用Flash服务器FMS(FlashMedia Server) 或RED5.
FMS的文件点播
1. 服务器将F4v 或 Flv文件转化为RTMP流或HTTP流
2. 客户端获取RTMP流,提取相应的Flv 或 F4v文件片段进行播放。
FMS的实况直播
1. 设备端将数据转化为F4v片段,通过RTMP流上传到服务器
2. 服务器转发RTMP流到客户端
3. 客户端获取RTMP流,提取数据片段播放。
四,RTSP协议
RTSP为纯粹的传输控制协议。
RTSP协议本身不与它负载的媒体数据相关。
RTSP协议需要自定义客户端向服务器发送RTSP命令。
联系客服