流媒体协议.之(RTP,RTCP,RTSP,RTMP,HTTP)(一)

闲着没事做,记录一下开发项目用过的协议,项目中,大多是是实时显示播放的,通过私有协议,传输到上位机,实时播放,延时小于200ms,仿照这些协议,定义的数据格式。如果用这些协议,有时延时会比较大,这些协议适合做直播,延时3s,也不会怎么样,看直播的都知道,有几秒的延时,但是实时播放,不太适合。

总结自网络,自己记的笔记

一、流媒体概述

这几年来,视频直播、游戏直播、竞赛直播等已经成为互联网行业的大热话题,本文主要和大家谈谈直播协议、视频推流等技术内容。

所谓流媒体是指采用流式传输的方式在 Internet 播放的媒体格式。流媒体又叫流式媒体,它是指把实时的视频流或音频流传送到服务器,服务器再把视频流或音频流当成数据包发出,传送到网络上。用户通过解压设备对这些数据进行解压后,节目就会像发送前那样显示和播放出来。

流式传输方式是将视频和音频等多媒体文件经过特殊的压缩方式分成一个个压缩包,由服务器向用户计算机连续、实时传送。在采用流式传输方式的系统中,用户不必像非流式播放那样等到整个文件全部下载完毕后才能看到当中的内容,而是只需要经过几秒钟或几十秒的启动延时即可在用户计算机上利用相应的播放器对压缩的视频或音频等流式媒体文件进行播放,剩余的部分将继续进行下载,直至播放完毕。

二、流媒体协议

常见的有这些协议(RTP,RTCP,RTSP,RTMP,HTTP)。这些都是应用层协议,在tcp、udp之上。实时传输协议(RTP)和实时控制协议(RTCP)
在这里插入图片描述

在这里插入图片描述

一个典型的流媒体传输过程方式如下,具体后面讲。
在这里插入图片描述

一个rtsp协议的客户端和服务端的方式如下。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

http协议方式
在这里插入图片描述

有了上面的概念,再来学习它们的区别。

流媒体直播协议

1、RTP :

RTP (Real-time Transport Protocol)

RTP是用于Internet上针对多媒体数据流的一种传输层协议。结合下图看,RTP 协议和 RTP 控制协议 RTCP 一起使用,
而且它是建立在 UDP 协议上的。RTP 不像http和ftp可完整的下载整个影视文件,它是以固定的数据率在网络上发送数据,
客户端也是按照这种速度观看影视文件,当影视画面播放过后,就不可以再重复播放,除非重新向服务器端要求数据。

为啥要用udp,做个音视频传输的都知道,网络不稳定时,丢了数据,也没关系,顶多画面花屏,如果用tcp重传,那就卡顿了,一直在发送几秒前的视频,没有实时性了。

在这里插入图片描述

2、RTCP

RTCP:Real-time Transport Control Protocol 或 RTP Control Protocol或简写 RTCP)

RTCP即实时传输控制协议,是实时传输协议(RTP)的一个姐妹协议。RTP 协议和 RTP控制协议(RTCP) 一起使用,
而且它是建立在UDP协议上的。

rtcp是传输控制命令的,rtp是传输数据的。

3、RTSP

RTSP:(Real Time Streaming Protocol)

RTSP是用来控制声音或影像的多媒体串流协议,RTSP 提供了一个可扩展框架,使实时数据,如音频与视频的受控、点播成为可能。媒体数据使用rtp,rtcp协议。一般使用udp作为传输层。适合IPTV场景。数据源包括现场数据与存储在剪辑中的数据。该协议目的在于控制多个数据发送连接,为选择发送通道,如UDP、多播UDP与TCP提供途径,并为选择基于RTP上发送机制提供方法传输时所用的网络通讯协定并不在其定义的范围内,服务器端可以自行选择使用TCP或UDP来传送串流内容,比较能容忍网络延迟。rtsp用来建立连接,控制传输的。RTSP以C/S模式工作,它是一个多媒体播放控制协议,主要用来使用户在播放流媒体时可以像操作本地的影碟机一样进行控制,即可以对流媒体进行暂停/继续、后退和前进等控制
RTSP 与 RTP 最大的区别在于:RTSP 是一种双向实时数据传输协议,在播放文件非实时流时,它允许客户端向服务器端发送请求,如回放、快进、倒退等操作。当然,RTSP 可基于 RTP 来传送数据,还可以选择 TCP、UDP、组播 UDP 等通道来发送数据,具有很好的扩展性。它时一种类似与http协议的网络应用层协议。RTSP在制定时较多地参考了HTTP/1.1协议,甚至许多描述与HTTP/1.1完全相同。RTSP之所以特意使用与HTTP/1.1类似的语法和操作,在很大程度上是为了兼容现有的Web基础结构,正因如此,HTTP/1.1的扩展机制大都可以直接引入到RTSP中。

4、RTMP

RTMP(Real Time Messaging Protocol)

Macromedia 开发的一套视频直播协议,现在属于 Adobe。和 HLS 一样都可以应用于视频直播,基于TCP不会丢失。区别是 RTMP 基于 flash 无法在 iOS 的浏览器里播放,但是实时性比 HLS 要好。RTMP实时消息传送协议是 Adobe Systems 公司为 Flash 播放器和服务器之间音频、视频和数据传输 开发的开放协议。iOS 代码里面一般常用的是使用 RTMP 推流,可以使用第三方库 librtmp-iOS 进行推流,librtmp 封装了一些核心的 API 供使用者调用。
RTMP 协议也要客户端和服务器通过“握手”来建立 RTMP Connection,然后在Connection上传输控制信息。RTMP 协议传输时会对数据格式化,而实际传输的时候为了更好地实现多路复用、分包和信息的公平性,发送端会把Message划分为带有 Message ID的Chunk,每个Chunk可能是一个单独的Message,也可能是Message的一部分,在接受端会根据Chunk中包含的data的长度,message id和message的长度把chunk还原成完整的Message,从而实现信息的收发。

5、HTTP协议

HTTP的视频协议,主要是在互联网普及之后。在互联网上看视频的需求下形成的。
最初的HTTP视频协议,没有任何特别之处,就是通用的HTTP文件渐进式下载。本质就是下载视频文件,而利用视频文件本身的特点,就是存在头部信息,和部分视频帧数据,就完全可以解码播放了。显然这种方式需要将视频文件的头部信息放在文件的前面。有些例如faststart工具,就是专门做这个功能的。
但是最为原始的状态下,视频无法进行快进或者跳转播放到文件尚未被下载到的部分。这个时候对HTTP协议提出了range-request的要求。这个目前几乎所有HTTP的服务器都支持了。range-request,是请求文件的部分数据,指定偏移字节数。在视频客户端解析出视频文件的头部后,就可以判断后续视频相应的帧的位置了。或者根据码率等信息,计算相应的为位置。
优点:
HTTP Live Streaming 还有一个巨大优势:自适应码率流播(adaptive streaming)。效果就是客户端会根据网络状况自动选择不同码率的视频流,条件允许的情况下使用高码率,网络繁忙的时候使用低码率,并且自动在二者间随意切换。这对移动设备网络状况不稳定的情况下保障流畅播放非常有帮助。实现方法是服务器端提供多码率视频流,并且在列表文件中注明,播放器根据播放进度和下载速度自动调整。使用起来也非常简单。
缺点:
实时性相对较差,直播的时候延迟比较高。

6、HLS

HLS:HTTP Live Streaming(HLS)

HLS是苹果公司(Apple Inc.)实现的基于HTTP的流媒体传输协议,可实现流媒体的直播 和点播 ,主要应用在iOS系统,为iOS设备(如iPhone、iPad)提供音视频直播和点播方案。
HLS 点播,基本上就是常见的分段HTTP点播,不同在于,它的分段非常小。相对于常见的流媒体直播协议,例如RTMP协议、RTSP 协议、MMS 协议等,HLS 直播最大的不同在于,直播客户端获取到的,并不是一个完整的数据流。
HLS 协议在服务器端将直播数据流存储为连续的、很短时长的媒体文件(MPEG-TS格式),而客户端则不断的下载并播放这些小文件,因为服务器端总是会将最新的直播数据生成新的小文件,这样客户端只要不停的按顺序播放从服务器获取到的文件,就实现了直播。由此可见,基本上可以认为,HLS 是以点播的技术方式来实现直播。由于数据通过 HTTP 协议传输,所以完全不用考虑防火墙或者代理的问题,而且分段文件的时长很短,客户端可以很快的选择和切换码率,以适应不同带宽条件下的播放。不过HLS的这种技术特点,决定了它的延迟一般总是会高于普通的流媒体直播协议。

7、WebRTC:

web端实现流媒体的协议。google刚推出WebRTC的时候巨头们要么冷眼旁观,要么抵触情绪很大。使用RTP协议传输

8、RTMP
RTMP(Real Time Messaging Protocol)实时消息传送协议

是Adobe Systems公司为Flash播放器和服务器之间音频、视频和数据传输开发的开放协议。

它有三种变种:
1)工作在TCP之上的明文协议,使用端口19352)RTMPT封装在HTTP请求之中,可穿越防火墙;
3)RTMPS类似RTMPT,但使用的是HTTPS连接;
  RTMP协议(Real Time Messaging Protocol)是被Flash用于对象
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值