(二)网络传输协议:网络摄像机传输协议、流媒体传输协议
简介
本来我要做C#d打开一个USB摄像头的程序,后来发现,我应该先了解“视频传输”这个概念。所以,我的调研如下:
那么好,我将在下章中,继续讨论 C#d打开一个USB摄像头的程序。本章节后面分析了一下网络协议。
摄像的诸多问题与回答,参考:https://iask.sina.com.cn/key/59bc2d3684aee545090ef712.html
一、网络摄像机
转发https://blog.csdn.net/caoshangpa/article/details/53142698
1.传输协议概述
网络摄像机又叫IP CAMERA(简称IPC)由网络编码模块和模拟摄像机组合而成。网络编码模块将模拟摄像机采集到的模拟视频信号编码压缩成数字信号,从而可以直接接入网络交换及路由设备。网络摄像机内置一个嵌入式芯片,采用嵌入式实时操作系统。网络摄像机是传统摄像机与网络视频技术相结合的新一代产品。摄像机传送来的视频信号数字化后由高效压缩芯片压缩,通过网络总线传送到Web服务器。网络上用户可以直接用浏览器观看Web服务器上的摄像机图像,授权用户还可以控制摄像机云台镜头的动作或对系统配置进行操作。网络摄像机能更简单的实现监控特别是远程监控、更简单的施工和维护、更好的支持音频、更好的支持报警联动、更灵活的录像存储、更丰富的产品选择、更高清的视频效果和更完美的监控管理。另外,IPC支持WIFI无线接入、3G接入、POE供电(网络供电)和光纤接入。
网络摄像机提供很多的基于IP网络的传输协议,以尽可能地保证音视频数据,PTZ控制数据网络传输质量。实时视频流经过IP网络传输,通过多种协议组合,适应各种复杂的网络传输环境。
RTP(Realtime Transport Protocol),实时传输协议,其专门针对实时流媒体而设计, RTP的基本功能是将几个实时数据流复用到一个UDP分组流中,这个UDP流可以被发送给一台主机(单播模式),也可以被传送给多台目标主机(多播模式)。因为RTP仅仅封装成常规的UDP,理论上路由器不会对分组有任何特殊对待,但现在高级的路由设备都有针对RTP协议优化选项。RTP协议的时间戳机制,不仅减少了抖动的影响,而且也允许多个数据流相互之间的同步,这样可以很方便地基于I/O事件对视频图像进行字幕添加,网络摄像机往往将音视频编码数据封装成RTP分组。
RTCP(Realtime Transport Control Protocol)实时传输控制协议,其是RTP的姊妹协议,它处理反馈、同步和用户界面等,但是不传输任何数据。它的主要功能是用来向源端提供有关延迟、抖动、带宽、拥塞和其它网络特性的反馈信息,编码进程可以充分利用这些信息。因此当网络状况较好时,可以提高数据速率(从而达到更好的质量),而当网络状况不好时,它可以减少数据速率。通过连续的反馈信息,编码算法可以持续地作相应的调整,从而在当前条件下尽可能地提供最佳的质量。
RTSP(Real Time Streaming Protocol)实时流协议,RTSP协议利用推式服务器(push server)方法,让音视频浏览端,发出一个请求,网络摄像机只是不停地向浏览端推送封装成RTP分组的音视频编码数据,网络摄像机可以用很小的系统开销实现流媒体传输。
HTTP(HyperText Transfer Protocol)超文本传输协议,网络摄像机通过HTTP协议提供Web访问功能,很方便地将音视频数据经过复杂网络传输,但实时音视频支持很不理想。
UDP(User Datagram Protocol)数据报协议,是最基本的网络数据传输协议,利用IP协议提供网络无连接服务,常用来封装实时性强的网络音视频数据,即使网络传输过程中发生分组丢失现象,在客户端也不会影响音视频浏览。
TCP(Transmission Control Protocol)传输控制协议,利用IP协议提供面向连接网络服务,为在不可靠的互联网络上提供一个可靠的端到端字节流而设计。TCP协议往往要在服务端和客户端经过多次“握手”才能建立连接,因此利用TCP传输实时性较强的音视频流开销较大,如果网络不稳定,音视频抖动的现象明显。利用其可靠性常用来传输网络摄像机管理命令,如PTZ,I/O设备控制命令。
2.传输协议组合
网络摄像机往往应用RTSP、RTP、RTCP、HTTP、UDP、TCP协议的不同组合来传输实时性较强的音视频流。常见的协议组合如下。
RTP+RTSP协议组合,这种协议组合(RTP可以用TCP、UDP协议封装,RTSP用TCP协议封装),在正常网络环境里,可以保证客户端浏览实时音视频,厂商往往推荐网络摄像机采用这种协议组合。一些网络设备也常常支持RTP+RTSP多播模式。
RTP/RTSP协议组合,RTP分组封装成RTSP分组,有些网络防火墙只让RTSP协议分组通过。但网络摄像机又要以RTP协议提供实时音视频。这种组合方式在没有办法的情况下增加了网络负载和客户端管理系统的复杂度。
RTP/RTSP/HTTP协议组合,在RTP/RTSP的数据基础上增加了HTTP封装,这种协议组合主要是为了适应网络防火墙只允许使用HTTP协议的网络环境。虽然网络负载加大,但网络摄像机可以适应更复杂的互联网环境。
UDP(TCP)协议,一些网络摄像机为了适应国内网络带宽状况不佳的状况,没有利用RTP+RTSP应用层协议封装音视频数据,对音视频流只采用UDP或TCP传输层协议封装。这样音视频流就可以利用很小的网络带宽传输流媒体。这种协议组合也可以提供类似RTP+RTSP高级功能,但对网络路由设备基于RTP+RTSP组合优化特性不能利用。
UDP(TCP)/HTTP协议组合,将音视频流数据封装成HTTP数据分组,然后用UDP(TCP)协议传输到客户端。这种协议方式可适应复杂的互联网环境,可以穿透大多数网络防火墙。
各种传输层协议组合保证了音视频和PTZ数据实时传输的可靠性,但网络摄像机内置的处理器计算能力限制,导致并发访问的用户数量有限。这样往往不能满足并发访问要求较高的应用环境,网络摄像机往往利用具备多播功能的网络传输设备,响应更多的并发访问要求。有些网络摄像机客户端软件功能强大,利用数据转发机制,充当可以响应更多并发访问用户的“虚拟网络摄像机”,这种方式适应于也适应PTZ网络摄像机。对大规模数字化视频监控网络建设有重要意义。
还有的网络摄像机提供一些FTP(文件传输协议)、SMTP(邮件传输协议)、DDNS(动态域名解析)协议,以增强网络摄像机在互联网环境应用。笔者观点,这些网络协议对安防监控系统没有太多的帮助,反而要引入好多外部FTP、SMTP、DNS服务器去配合网络摄像机,这样对整个数字安防监控系统的管理引入了新的复杂性,增加了不稳定性,可能要花更多的精力去管理非主要业务。有的网络摄像机也提供一些高级网络管理协议,如ICMP、SNMP、IGMP、ARP协议,帮助用户去管理网络。
3.应用现状
随着有线和无线网络带宽成倍的增加,网络视频传输的带宽成本将越来越小,大规模网络视频监控系统建设已成为可能。网络摄像机通过以太网接口将采集的音视频数据;I/O、PTZ控制数据经过IP网络传输到远程管理系统。网络摄像机的网络数据传输模块,所具备的功能决定了网络摄像机适用的网络类型、网络音视频延迟和抖动的处理能力、是否具备穿透防火墙以适应复杂的互联网环境。
4.以太网供电技术
新的室内网络摄像机采用以太网供电技术,减少了网络摄像机外部连接线缆。以太网供电(Power over Ethernet,PoE)是一种将供电集成到标准局域网设备中的技术。PoE技术遵循于IEEE 802.3af标准,并且在不降低网络数据通讯性能、缩小网络范围的基础上对网络设备进行供电。这一标准可在交换机端提供15.4W的电源,摄像机端为最大12.9W的电源。类似PTZ摄像机和快球的室外摄像机,它们的功率通常会超过上述的值,因而PoE功能显得不太适合。一些厂商也提供了非标准的产品来满足此类应用的需求,但需要注意的是,因为这些产品是非标准的,在不同品牌的产品间也就没有了互操作性。
5.无线网络技术
如今,尽管大多数建筑中都已经部署了有线网络,但有时候对客户来讲,无线网络解决方案在功能性和节约成本方面仍然具有很强的吸引力。例如,当网络布线工作必须要对内部建筑产生破坏才能完成时、或者在一些需要定期地改变摄像机位置,又不想每次重新布线的场所(例如零售商店),无线网络技术将变得非常有用。在另外一种常见应用场景中,无线网络技术能够方便地将两座建筑物或场所连接起来,而不需要昂贵和复杂的地面施工。
无线通信技术主要分为两大类:无线局域网(Wireless LAN,WLAN)是指跨越距离较短,通常位于室内的网络。无线局域网络标准已经非常完善,不同厂家生产的无线局域网设备也能够很好的协同工作;无线网桥(Wireless bridges)当需要通过高速链路连接不同的建筑物或场所时,则必须建立一条能够进行远距离高速传输的点对点链路。微波和激光是实现这种功能的两种常用技术。
无线局域网802.11x系列标准,802.11g标准是网络摄像机支持最普遍的无线网络标准,在室外环境下,它能够提供最大约24 Mbps实际吞吐量,最大有效距离为100米,该标准使用2.4 GHz波段,理论带宽可以达到54 Mbps。
网络摄像机提供的无线接入功能,由于无线网络通信本质方面的原因,在无线网络所覆盖的范围内,任何拥有一台无线设备的人都可以连接到网络中并使用共享设备,因此无线网络必须提供良好的安全机制。无线网桥用来连接地域空间跨度比较大和多个无线局域网络,采用微波技术的设备较多,我们应该着重考虑一下,如果在这样的环境里,网络摄像机是否支持移动IP。
6.安全性
网络摄像机的安全性很值得关注,在访问网络摄像机时,一般都提供多级用户管理机制和IP过滤机制,不同级别的用户(IP地址)有不同的访问权限,这种机制很好地满足了分布式网络监控系统的安全高效管理要求。
音视频流通过加密处理,可以有效地防止在公共网路传输过程中被窃听。一些网络摄像机在视频编码时采取了有限的加密措施,但增加了网络传输负载、客户端解码的复杂性和网络摄像机成本。而且*部门对这种网络摄像机的加密标准未必采纳。安防监控行业是否可以考虑将视频流的加密功能转移到其它辅助系统来完成,减少系统核心设备网络摄像机的工作负担,增强系统稳定性。
7.结语
随着网络摄像机快速的普及应用用,安防行业将迎来数字化革命,围绕着核心设备网络摄像机,将会出现具有更多的高新技术的产品,市场主流的音视频编码方案、具备很强的PTZ或输入输出设备管理能力、网络传输机制简单有效的网络摄像机,用这样的网络摄像机去建设稳定可靠的数字化安防监控系统,使人们从繁重的安防劳动中解放出来。
二、流媒体
类似的,流媒体也经过网路传输,也用到一些网络协议。比如RTSP/PNM/MMS/RTP/RTSP/RTCP等等。
参考1:
https://zhidao.baidu.com/question/548710323.html
流媒体的传输协议
大家在观看网上电影或者电视时,一般都会注意到这些文件的连接都不是用http或者ftp开头,而是一些rtsp或者mms开头的东西,为什么是这样呢?实际上,这些和http和ftp一样,都是数据在网络上传输的协议,只是它们是专门用来传输流式媒体的协议而已。下面,让我们来看一下现在使用的主要的流媒体协议:
1. RTSP(Real Time Streaming Protocol),实时流媒体协议,它是由RealNetworks和Netscape共同提出的,现在用于RealNetworks的Real Media产品中;
2. PNM(Progressive Networks Audio),这也是Real专用的实时传输协议,它一般采用UDP协议,并占用7070端口,但当你的服务器在防火墙内且7070端口被挡,且你的服务器把SmartingNetwork设为真时,则采用http协议,并占用默认的80端口;
3. MMS(Microsoft Media Server protocol),这是微软的流媒体服务器协议,MMS 是连接 Windows Media 单播服务的默认方法。
介绍了主要的三个,可能您还会问,Apple的QuickTime使用哪种协议呢?在多数情况下,QuickTime使用http协议,但实际上它也由标准的流媒体传输协议,这就是标准RTSP协议,而Real公司使用的RTSP是自己经过开发的。
在流媒体传输中,标准的协议就是RTP(Real time Transport Protocol,实时传输协议)、RTCP(Real-time Transport Control Protocol,实时传输控制协议)、RTSP(Real Time Streaming Protocol,实时流媒体协议)和RSVP(Resource Reserve Protocol, 资源预订协议),厂商们的产品都是在这些协议的基础上进行研究与开发,限于篇幅,在这里我们就不再深入讨论了。
参考2:
https://blog.csdn.net/adai7856/article/details/39961301
大家在观看网上电影或者电视时,一般都会注意到这些文件的连接都不是用http或者ftp开头,而是一些rtsp或者mms开头的东西,为什么是这样呢?实际上,这些和http和ftp一样,都是数据在网络上传输的协议,只是它们是专门用来传输流式媒体的协议而已。下面,让我们来看一下现在使用的主要的流媒体协议:
1. RTSP(Real Time Streaming Protocol),实时流媒体协议,它是由RealNetworks和Netscape共同提出的,现在用于RealNetworks的Real Media产品中;
2. PNM(Progressive Networks Audio),这也是Real专用的实时传输协议,它一般采用UDP协议,并占用7070端口,但当你的服务器在防火墙内且7070端口被挡,且你的服务器把SmartingNetwork设为真时,则采用http协议,并占用默认的80端口;
3. MMS(Microsoft Media Server protocol),这是微软的流媒体服务器协议,MMS 是连接 Windows Media 单播服务的默认方法。
介绍了主要的三个,可能您还会问,Apple的QuickTime使用哪种协议呢?在多数情况下,QuickTime使用http协议,但实际上它也由标准的流媒体传输协议,这就是标准RTSP协议,而Real公司使用的RTSP是自己经过开发的。
在流媒体传输中,标准的协议就是RTP(Real time Transport Protocol,实时传输协议)、RTCP(Real-time Transport Control Protocol,实时传输控制协议)、RTSP(Real Time Streaming Protocol,实时流媒体协议)和RSVP(Resource Reserve Protocol, 资源预订协议),厂商们的产品都是在这些协议的基础上进行研究与开发,限于篇幅,在这里我们就不再深入讨论了。
流媒体文件和发布格式
有了实时的传输协议,我们应该还能够想到,只有较小的文件才适合网络实时传输,那么,流媒体文件采用了什么样的压缩算法呢?
而使用Windows操作系统的朋友可以看到,我们观看网上流节目时,它们的后缀名一般是rm、asf、wmv等,这些就是流媒体的格式。流媒体文件格式经过特殊编码,不仅采用较高的压缩比,还加入了许多控制信息,使其适合在网络上边下载边播放,而不是等到下载完整个文件才能播放。
常见的流媒体格式大致有以下几种:
流媒体文件格式扩展(Video/Audio) 媒体类型与名称
asf Advanced Streaming format. (Microsoft).
rm Real Video/Audio 文件 (Progressive Networks).
ra Real Audio 文件 (Progressive Networks).
rp Real Pix 文件 (Progressive Networks).
rt Real Text 文件 (Progressive Networks).
swf Shock Wave Flash (Macromedia).
mov QuickTime(Apple公司格式)
viv Vivo Movie 文件(Vivo Software).
另外还有一个wmv格式,是Windows Media Video的简称,它与asf文件有稍许区别,wmv一般采用window media video/audio 格式,asf视频部分一般采用Microsoft MPG4 V(3/2/1?),音频部分是windows media audio v2/1,不过现在很多制作软件都没有把它们分开,所以直接更改后缀名就能够互相转换为对方格式。
制作完成的流媒体文件需要发布到网络上才能够被别人使用,这就需要以特定方式安排压缩好的流媒体文件,而安排流媒体文件的格式就被成为流媒体发布格式。常见的发布格式主要有以下几种:
流媒体发布格式扩展 媒体类型和名称
asf Advanced Streaming format.
smil Synchronised Multimedia Integration Language.
ram RAM File.
rpm Embedded RAM File.
asx ASF Stream Redirector/ASF流转向器文件
xml eXtensible Markup Language
MPEG-4与流媒体
说到流媒体就不能不提及MPEG-4。MPEG-4是当前讨论的焦点之一,只因为它能够在大的压缩比下实现近似DVD品质的视频和音频效果,这也是许多朋友认为MPEG-4格式肯定比rm清晰的原因。但事实上并不是如此,MPEG-4只是一种视频编码技术,它的清晰度也根据压缩时所选择的码率的不同有较大的改变(我们见到的MPEG-4格式文件通常为500Kbps压缩生成,质量当然高了),并且,MPEG-4还有多种压缩标准,如Microsoft的asf视频部分就是基于MPEG-4的Discrete Cosine Transform (DCT),另外还有DivX的免费MPEG-4版本(开始是**微软的格式而来)。至于音频部分,更是混乱,Microsoft采用windows media audio v2/1,DivX采用MP3或者更高质量的AC3等。相比而言,Real或者Apple的格式使用的是自己开发的编码,在相同码率,特别是低码率下,不见得就比MPEG-4差,采取高码率的rm格式照样清晰可人,所以大家以后说rm格式清晰度差的观念要改变一下:),至少也要加上条件。而且,最新的Helix Producer中的Real Video 9采用VP5压缩格式进行编码,这可比DivX优秀多了!
不过,流媒体服务器开始向MPEG-4格式靠拢是不争的事实,Real最新的Helix就开始支持mp4格式文件的服务,而RealOne Player更是只需安装一个插件便可实现MPEG-4格式的播放。
点播与广播
在架设流媒体服务器之前,我们一定要了解一些点播与广播的知识。
点播是客户端与服务器之间的主动的连接,在点播连接中,用户通过选择内容项目来初始化客户端连接,一个客户端从服务器接收一个媒体流(这个连接是唯一的,其它用户不能占用),并且能够对媒体进行开始、停止、后退、快进或暂停等操作,客户端拥有流的控制权,就像在看影碟一样。这种方式由于每个客户端各自连接服务器,服务器需要给每个用户建立连接,对服务器资源和网络带宽的需求都比较大。
广播指的是用户被动接收流。在广播过程中,客户端接收流,但不能控制流,用户不能暂停、快进或后退该流,广播使用的数据发送手段有单播与广播。使用单播发送时,服务器需要将数据包复制多个拷贝,以多个点对点的方式分别发送到需要它的那些用户,而使用广播方式发送,数据包的单独一个拷贝将发送给网络上的所有用户,而不管用户是否需要,上述两种传输方式会非常浪费网络带宽和服务器资源,因此产生了组播(多播)技术。
组播(多播)吸收了上述两种发送方式的长处,克服了上述两种发送方式的弱点,将数据包的单独一个拷贝发送给需要的那些客户,组播不会复制数据包的多个拷贝传输到网络上,也不会将数据包发送给不需要它的那些客户,保证了网络上多媒体应用占用网络的最小带宽。但组播不仅需要服务器端支持,更需要有多播路由器乃至整个网络结构的支持。
单播与组播(多播)
在上面我们已经了解了一些单播和组播的概念,这也是现在流媒体方面讨论的焦点之一。以我的认识,点播与广播是一组概念,它们和客户端媒体交互的手段;单播和组播又是另外一组概念,它们是流媒体数据在服务器端和网络上的传输方式。
单播发送时,需要在客户端与媒体服务器之间需要建立一个单独的数据通道,从一台服务器送出的每个数据包只能传送给一个客户机,每个用户必须分别对媒体服务器发送单独的查询,而服务器必须向每个用户发送所申请的数据包拷贝。这种巨大冗余会造成服务器沉重和网络带宽的沉重负担,响应需要很长时间,甚至出现不能服务的情况。单播可以用在点播和广播上。
组播发送时,服务器将一组客户请求的流媒体数据发送到支持组播技术的路由器上,然后由路由器一次将数据包根据路由表复制到多个通道上,再向用户发送。这时候,媒体服务器只需要发送一个信息包,所有发出请求的客户端都共享同一信息包,并且信息可以发送到任意地址的客户机,没有请求的客户机不会收到信息包,网络上传输的信息包的总量没有广播那么多,大大提高了服务器和网络线路的利用率。不过组播也有自己的特点,首先是必须要开始支持组播技术的路由器,另外就是一般只能用作广播,因为用作点播会存在用户控制问题。
参考3:
https://www.cnblogs.com/jiaoxiangjie/p/6736656.html
流媒体协议部分RTP、RTCP、RTSP、MMS、HLS、HTTP progressive streaming
流媒体协议:(RTP、RTCP、RTSP、MMS、HLS、HTTP progressive streaming)
当前在internet上传送音频和视频等信息主要有两种方式:
- 下载,完整下载一个视频,再去播放
- 流式传输,如优酷、爱奇艺等视频网址(土豆,优酷网的视频传输方法)
下面介绍的这些协议,都是流式传输
RTP
实时传输协议(Real-time Transport Protocol或简写RTP)是一个网络传输协议
RTP协议详细说明了在互联网上传递音频和视频的标准数据包格式。
它一开始被设计为一个多播协议,但后来被用在很多单播应用中。
RTP协议常用于流媒体系统(配合RTSP协议),视频会议和一键通(Push to Talk)系统(配合H.323或SIP),使它成为IP电话产业的技术基础。
RTP为Internet上端到端的实时传输提供时间信息和流同步,但并不保证服务质量,服务质量由RTCP来提供。
传输层:
RTP协议和RTCP(RTP控制协议)一起使用,而且它是创建在UDP协议上的。
RTCP
实时传输控制协议(Real-time Transport Control Protocol或RTP Control Protocol或简写RTCP)是实时传输协议(RTP)的一个姐妹协议。
RTCP为RTP媒体流提供信道外(out-of-band)控制。RTCP本身并不传输数据,但和RTP一起协作将多媒体数据打包和发送。RTCP定期在多媒体流会话参加者之间传输控制数据。
RTCP的主要功能是为RTP所提供的服务质量(Quality of Service)提供反馈。
RTCP收集相关媒体连接的统计信息,例如:传输字节数,传输分组数,丢失分组数,jitter,单向和双向网络延迟等等,网络应用程序即可利用RTCP的统计信息来控制传输的品质,比如当网络带宽高负载时限制信息流量或改用压缩比较小的编解码器。
传输层:
RTP 使用一个 偶数 UDP port ;而RTCP 则使用 RTP 的下一个 port,也就是一个奇数 port。
RTSP
即时串流协定(Real Time Streaming Protocol,RTSP)是用来控制声音或影像的多媒体串流协议,并允许同时多个串流需求控制
允许同时多个串流需求控制(Multicast),除了可以降低服务器端的网络用量,更进而支持多方视讯会议(Video Conference)。
因为与HTTP1.1的运作方式相似,所以代理服务器(Proxy)的缓冲功能(Cache)也同样适用于RTSP,并因RTSP具有重新导向功能,可视实际负载情况来转换提供服务的服务器,以避免过大的负载集中于同一服务器而造成延迟。
传输层:
传输时所用的网络通讯协定并不在其定义的范围内,服务器端可以自行选择使用TCP或UDP来传送串流内容,它的语法和运作跟HTTP 1.1类似,但并不特别强调时间同步,所以比较能容忍网络延迟。
RTSP 、RTP、RTCP的区别
https://www.zhihu.com/question/20278635
http://blog.csdn.net/shinichr/article/details/24111401
RTP: 一般用于多媒体数据的传输。
RTCP: 同RTP一起用于数据传输的监视,控制功能。
RTSP: 用于多媒体数据流的控制,如播放,暂停等。
为什么要搭配这些协议呢?
RTP位于传输层(通常是UDP)之上,应用程序之下,实时语音、视频数据经过模数转换和压缩编码处理后,先送给RTP封装成为RTP数据单元,RTP数据单元被封装为UDP数据报,然后再向下递交给IP封装为IP数据包。这么说RTP是没有保证传输成功的,
那怎么保证呢?就要用到RTCP。
RTCP消息含有已发送数据的丢包统计和网络拥塞等信息,服务器可以利用这些信息动态的改变传输速率,甚至改变净荷的类型。RTCP消息也被封装为UDP数据报进行传输。
严格来说:RTP、RTCP位于传输层(通常是UDP)之上,应用程序之下。
RTMP/RTMPS
RTMP(Real Time Messaging Protocol)实时消息传送协议是Adobe Systems公司为Flash播放器和服务器之间音频、视频和数据传输 开发的开放协议。
它有三种变种:
- 工作在TCP之上的明文协议,使用端口1935;
- RTMPT封装在HTTP请求之中,可穿越防火墙;
-
RTMPS类似RTMPT,但使用的是HTTPS连接;
RTMP协议(Real Time Messaging Protocol)是被Flash用于对象,视频,音频的传输.这个协议建立在TCP协议或者轮询HTTP协议之上.
RTMP协议就像一个用来装数据包的容器,这些数据既可以是AMF格式的数据,也可以是FLV中的视/音频数据.一个单一的连接可以通过不同的通道传输多路网络流.这些通道中的包都是按照固定大小的包传输的.
MMS
MMS(Microsoft Media Server)是一种串流媒体传送协议,用来访问并流式接收Windows Media服务器中.asf文件的一种协议。
MMS协议用于访问Windows Media发布点上的单播内容。MMS是连接Windows Media单播服务的默认方法。若观众在Windows Media Player中键入一个URL以连接内容,而不是通过超级链接访问内容,则他们必须使用MMS协议引用该流。MMS的预设埠(端口)是1755。
当使用 MMS 协议连接到发布点时,使用协议翻转以获得最佳连接。
- “协议翻转”始于试图通过 MMSU 连接客户端。 MMSU 是 MMS 协议结合 UDP 数据传送。
- 如果 MMSU 连接不成功,则服务器试图使用 MMST。MMST 是 MMS 协议结合 TCP 数据传送。
如果连接到编入索引的 .asf 文件,想要快进、后退、暂停、开始和停止流,则必须使用 MMS。不能用 UNC 路径快进或后退。若您从独立的 Windows Media Player 连接到发布点,则必须指定单播内容的 URL。
若内容在主发布点点播发布,则 URL 由服务器名和 .asf 文件名组成。例如:mms://windows_media_server/sample.asf。
- windows_media_server 是 Windows Media 服务器名,
- sample.asf 是您想要使之转化为流的 .asf 文件名。
HLS - HTTP live streaming (M3U8)
HTTP Live Streaming(HLS)是苹果公司(Apple Inc.)实现的基于HTTP的流媒体传输协议,可实现流媒体的直播和点播,主要应用在iOS系统,为iOS设备(如iPhone、iPad)提供音视频直播和点播方案。
HLS点播,基本上就是常见的分段HTTP点播,不同在于,它的分段非常小。
相对于常见的流媒体直播协议,例如RTMP协议、RTSP协议、MMS协议等,HLS直播最大的不同在于,直播客户端获取到的,并不是一个完整的数据流。HLS协议在服务器端将直播数据流存储为连续的、很短时长的媒体文件(MPEG-TS格式),而客户端则不断的下载并播放这些小文件,因为服务器端总是会将最新的直播数据生成新的小文件,这样客户端只要不停的按顺序播放从服务器获取到的文件,就实现了直播。
由此可见,基本上可以认为,HLS是以点播的技术方式来实现直播。由于数据通过HTTP协议传输,所以完全不用考虑防火墙或者代理的问题,而且分段文件的时长很短,客户端可以很快的选择和切换码率,以适应不同带宽条件下的播放。不过HLS的这种技术特点,决定了它的延迟一般总是会高于普通的流媒体直播协议。
M3U8
http://www.voidcn.com/blog/sqc3375177/article/p-1009883.html
1.M3U8是一种可扩展的播放列表文件格式。它是一个包含UTF-8编码文字的m3u播放列表。m3u是包含媒体文件URL的一个事实上的播放列表标准。这种格式被用来作为HTTP Live 媒体流索引文件的格式。
2.m3u8是一种视频列表格式,里面有真正的视频的链接,另外在m3u8里面还可以再嵌套一层m3u8
3.m3u8是视频列表,视频编码可以是h.264等。
4.m3u8并非苹果独占,m3u8这种列表其实编码格式是公开的。
progressive download
科普扫盲:live streaming vs. progressive download
从progressive download开讲 (这个概念比较宽泛,大体上包含了live streaming的概念)。就是说,不管对正在直播的视频或者其他非直播视频,用户可以下载到手机上,缓冲足够时间后开始播放。
在用户界面来讲,点击某视频的超链接后,以sdp为后缀的描述文件将会存到手机上,下载结束后,根据相关信息连接到对应的http服务器开始下载视频文件,并在缓冲足够时开始播放。用户只需下载一次就可反复播放
HTTP progressive streaming
https://groups.google.com/forum/#!topic/android-developers/4Z5TAn1HDsw
Flash vs. HTTP Progressive Streaming vs. HLS
Progressive streaming is like progressive download except that the
media file is partially cached in memory rather than writing to
permanent storage.
HTTP progressive streaming类似于progressive download的协议,Progressive streaming是把视频缓存在内存中,而不是永久存储设备中
when we discuss HTTP Progressive Streaming, we’re really talking about what amounts to a fancy buffered download,
流媒体测试地址
转载:https://www.vitamio.org/docs/Basic/2013/0508/14.html
HLS - Apple HTTP live streaming - m3u8
http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8
http://devimages.apple.com/iphone/samples/bipbop/gear1/prog_index.m3u8
http://live.3gv.ifeng.com/zixun.m3u8 (直播)
HTTP
http://www.modrails.com/videos/passenger_nginx.mov
http://wsmp32.bbc.co.uk/
RTSP
http://m.livestream.com (site)
rtsp://xgrammyawardsx.is.livestream-api.com/livestreamiphone/grammyawards
MMS
mms://video.fjtv.net/setv mms://ting.mop.com/mopradio mms://112.230.192.196/zb12