RED5 - 流媒体协议基础知识

来源:互联网 发布:grpc python 编辑:程序博客网 时间:2024/05/22 00:13

流媒体简介

随着Internet的发展,单纯的文字和图形早已不能满足人们的需求,而是逐渐向音视频等多媒体方向发展。由于音视频文件包含大量的数据,在带宽受限的网络环境中,下载可能要耗费数十分钟甚至数小时。为了解决这个问题,流媒体诞生了。流媒体文件是目前非常流行的网络媒体格式之一,这种文件允许用户一边下载一边播放,从而大大减少了等待播放的时间。另外通过网络播放流媒体文件时,文件本身并不会在本地磁盘中存储,这样就节省了大量的磁盘空间开销。

流(Streaming)的定义非常广泛,主要是指通过网络传输多媒体数据的技术总称。其包含广义和狭义两种内涵:广义上的流媒体指的是使音频和视频形成稳定和连续的传输流和回放流的一系列技术、方法和协议的总称; 狭义上的流媒体是相对于传统的下载-回放方式而言的,指的是一种从Internet上获取音频和视频等多媒体数据的新方法, 它能够支持多媒体数据流的实时传输和实时播放。

目前,实现流媒体传输主要有两种方法: 顺序流(progressive streaming)传输和实时流(realtime streaming)传输,它们分别适合于不同的应用场合。

顺序流传输

顺序流传输采用顺序下载的方式进行传输,在下载的同时用户可以在线回放多媒体数据, 但给定时刻只能观看已经下载的部分, 不能跳到尚未下载的部分, 也不能在传输期间根据网络状况对下载速度进行调整。 由于标准的HTTP服务器就可以发送这种形式的文件, 也不需要其他特殊协议, 它经常被称作HTTP流式传输。 顺序流传输比较适合高质量的短片段,由于该文件在播放前观看的部分是无损下载的, 所以可以保证电影播放的最终质量。

实时流式传输

实时流式传输指保证媒体信号带宽与网络连接匹配, 使媒体可被实时观看到。 实时流与HTTP流式传输不同, 它需要专用的流媒体服务器与传输协议。 实时流式传输总是实时传送, 特别适合现场事件, 也支持随机访问, 用户可快进或后退以观看前面或后面的内容。 理论上, 实时流一经播放就可不停止, 但实际上, 可能发生周期暂停。

常见流媒体传输协议

RTMP (Real Time Messaging Protocol)

RTMP是Real Time Messaging Protocol(实时消息传输协议)的首字母缩写。 该协议基于TCP, 是一个协议族, 包括RTMP基本协议及RTMPT / RTMPS / RTMPE等多种变种。 RTMP是一种设计用来进行实时数据通信的网络协议, 主要用来在Flash/AIR平台和支持RTMP协议的流媒体/交互服务器之间进行音视频和数据通信。 它就像一个用来装数据包的容器, 这些数据既可以是AMF格式的数据, 也可以是FLV、MP3等音视频数据。 支持该协议的软件包括Adobe Media Server / Ultrant Media Server / Red5等。

它包括多种变种:
1. RTMP工作在TCP之上, 默认使用1935端口
2. RTMPE在RTMP的基础上增加了加密功能
3. RTMPT封装在HTTP请求之上, 可穿透防火墙
4. RTMPS类似RTMPT, 只是增加了TLS/SSL的安全功能

RTP/RTCP/RTSP协议

RTP

RTP是(Real-time Transport Protocol)的缩写, 是一个网络传输协议, 1996年由IETF多媒体传输工作小组在RFC1889中公布, 后在RFC3550中进行更新。 RTP协议详细说明了在互联网上传输音频和视频的标准数据包格式。 它一开始被设计为一个多播协议, 但后来被用在很多单播应用中。 RTP协议常用于流媒体系统(配合RTSP协议)。

RTP为数据提供了具有实时特征的端对端传输服务, 如在组播或单播网络服务下的交互式音视频或模拟数据。 应用程序通常在UDP上运行RTP以便使用其多路节点和校验服务; 这两种协议都提供了传输层协议的功能。 但是RTP可以与其他适合的底层网络或传输协议一起使用。 如果底层网络提供组播方式, 那么RTP可以使用该组播表传输数据到多个目的地。

RTP本身并没有提供按时发送机制或其他服务质量(QoS)保证, 它依赖于底层服务去实现这一过程。 RTP并不保证传送或防止无序传送, 也不确定底层网络的可靠性。 RTP实行有序传送, RTP中的序列号允许接收方重组发送方的包序列, 同时序列号也能用于决定适当的包位置, 例如: 在视频解码中, 就不需要顺序解码。

RTCP

RTCP(Real-time Transport Control Protocol)是RTP控制协议, 与RTP协议是一对姐妹协议, 为RTP提供数据分发质量反馈信息, 这是RTP作为传输协议的部分功能并且它涉及到了其他传输协议的流控制和拥塞控制。

RTCP为RTP源携带一个持久性传输层标识符, 称为规范名或CNAME。 由于一旦发现冲突或程序重启时, SSRC(同步源标识符)会随之改变, 所以接收方需要CNAME来跟踪每一个参与者。 同时接收方还要求CNAME能够与一组相关RTP会话中来自于给定参与者的多重数据流相关联, 例如同步视频和音频。

RTSP

RTSP(Real Time Streaming Protocol), RFC2326, 实时流传输协议, 是TCP/IP协议体系中的一个应用层协议, 由哥伦比亚大学、网景和RealNetworks公司提交的IETF RFC标准。 该协议定义了一对多应用程序如何有效地通过IP网络传送多媒体数据。 RTSP在体系结构上位于RTP和RTCP之上, 它使用TCP或UDP完成数据传输。 HTTP与RTSP相比, HTTP请求由客户机发出, 服务器做出响应; 使用RTSP时, 客户机和服务器都可以发出请求, 即RTSP可以是双向的。 RTSP是用来控制声音或影像的多媒体串流协议, 并允许同时多个串流需求控制, 传输时所用的网络通讯协定并不在其定义的范围内, 服务器可以自行选择使用TCP或UDP来传送串流内容, 它的语法和运作跟HTTP1.1类似, 但并不特别强调时间同步, 所以比较能容忍网络延迟。 而前面提到的允许同时多个串流需求控制(Multicast), 除了可以降低服务器端的网络用量, 更进而支持多方视频会议。 因为与HTTP1.1的运作方式相似, 所以代理服务器的快取功能也同样适用于RTSP, 并因RTSP具有重新导向功能, 可视实际负载情况来转换提供服务的服务器, 以避免过大的负载集中于同一服务器而造成延迟。

MMS

HLS

0 0
原创粉丝点击