火币网官网地址

主页 > 洞察 > 开发资讯 > 网站开发
  • 直播网站开发 的技术是如何实现的(下)?

    adinnet / 2017-10-12 13:22 /网站开发

    直播网站开发 的技术是如何实现的呢,前面我们已经介绍和总结了一些观点,今天再看看剩下的总结吧。

    五、解决方案  

    1、直播业务一般采用组播的网络方式来实现。所谓组播就是利用一种协议将IP数据包从一个信息源传送到多个目的地,将信息的拷贝发送到一组地址,送达所有想要接收它的接收者。    

    2、IP组播是将IP数据包“尽更大努力”传输到一个构成组播群组的主机集合,群组的各个成员可以分布于各个独立的物理网络上。IP组播群组中成员的关系是动态的,主机可以随时加入和退出群组,群组的成员关系决定了主机是否接收送给该群组的组播数据包,不是某群组的成员主机也能向该群组发送组播数据包。同单播或广播相比,组播效率非常高,因为任何给定的链路至多用一次,可以节省网络带宽和资源。  

    3、目前比较成熟的直播一般采用HLS和RTMP协议。  

    4、HTTP Live Streaming(HLS)是苹果公司(Apple Inc.)实现的基于HTTP的流媒体传输协议,可实现流媒体的直播和点播,主要应用在iOS系统,为iOS设备(如iPhone、iPad)提供音视频直播和点播方案。  

    5、相对于常见的流媒体直播协议,例如RTMP协议、RTSP协议、MMS协议等,HLS直播更大的不同在于,直播客户端获取到的,并不是一个完整的数据流。HLS协议在服务器端将直播数据流存储为连续的、很短时长的媒体文件(MPEG-TS格式),而客户端则不断的下载并播放这些小文件,因为服务器端总是会将更新的直播数据生成新的小文件,这样客户端只要不停的按顺序播放从服务器获取到的文件,就实现了直播。由此可见,基本上可以认为,HLS是以点播的技术方式来实现直播。由于数据通过HTTP协议传输,所以完全不用考虑防火墙或者代理的问题,而且分段文件的时长很短,客户端可以很快的选择和切换码率,以适应不同带宽条件下的播放。目前比较方便又好用的是用 HTTP 渐进下载方法。HTML5 是直接支持这个。   

    6、RTMP(Real Time Messaging Protocol)是专门用来传输音视频数据的流媒体协议,更初由Macromedia 公司创建,后来归Adobe公司所有,是一种私有协议,主要用来联系Flash Player和RtmpServer,如FMS, Red5, crtmpserver等。RTMP协议可用于实现直播、点播应用,通过FMLE(Flash Media Live Encoder)推送音视频数据至RtmpServer,可实现摄像头实时直播。  

    7、RTMP协议是被Flash用于对象,视频,音频的传输.该协议建立在TCP协议或者轮询HTTP协议之上,RTMP协议就像一个用来装数据包的容器,这些数据可以是AMF格式的数据,也可以是FLV中的视/音频数据,一个单一的连接可以通过不同的通道传输多路网络流.这些通道中的包都是按照固定大小的包传输的。  

    8、HLS更适合跨平台,多终端,支持PC终端,Android安卓终端,iOS苹果终端,WindowsPhone终端, RTSP协议,RTMP其实就是flash的服务器 ,这应该是实时性更好的了,如果要想实时性要求很高,比如0.5s以内,这个是不错的选择。两者搭配起来使用会适合绝大部分使用场景。  

    9、流媒体技术服务器常用部署方式(crtmpserver集群)流服务器常使用crtmpserver作为原型,为主播提供推流服务,为用户提供拉流服务。流服务分为源管理节点(SM),源节点(SP)以及边缘节点(EP)。三种类型的节点为层级关系。  

    10、一般主播通过dns获取源节点的ip,向源服务器推流。源服务器收到主播流之后,向源管理上报该主播的流信息(每个主播有唯一的id号)。用户从边缘节点拉流,边缘节点向所设定的唯一上级源服务器拉取某个流编号的数据。源节点通过与源管理节点通信之后,确定该流id的来源,源节点取得主播推流的源服务器ip后,直接与该源节点通信,拉取流。  

    11、流媒体是一个特殊的网络应用系统,它与一般Web应用不同,其更大特点就是需要高速处理并发视频流数据。流媒体系统对服务器I/O通道吞吐率要求是极为严格的,其数据流量是非常巨大的。  

    12、使用者端的电脑上创造一个缓冲区,于播放前预先下载一段资料作为缓冲,于网络实际连接速度小于播放所耗用资料的速度时,播放程序就会取用这一小段缓冲区内的资料,避免播放的中断,也是的播放品质得以维持。  

    13、流媒体系统对于视频点播并发流的负载要求非常强大,单一服务器无法承担大量并发数据流的负载。想要合理解决这些问题,升级设备、改变拓补并不是很有效,相对巧妙的方式是采用负载均衡技术,用多个设备共同完成任务。针对访问请求负载均衡设备根据服务器数量使用特定的分发策略进行统一分发调配,从而使所有的硬件设备都能发挥其更大处理能力。

    14、随着物理和应用的集中,服务器上所要处理的数据量不断增大,同时并发连接数量会越来越多。若处理资源不够,在未超出系统容量时,往往是客户的请求回应越来越慢,可容纳的同时连接数量逐渐减小,系统性能严重下降。当超出系统容量后,系统出现故障导致服务中断。为应对日益增多的业务量,系统的可扩展性尤为重要。

    15、流媒体服务都会使用一个TCP连接(如RTSP协议)进行带宽的协商和流速的控制,通过UDP将流数据返回客户。负载均衡机拥有IP及Cookie的会话保持功能,保证来自同一客户的TCP和UDP连接会被转发到集群中同一台媒体服务器,使得媒体服务准确无误地运行。

    16、实现流媒体负载均衡,将流量分发到不同的服务器较少单台服务的并发,对服务器的硬件是否正常工作进行检查;服务器负载则对应用服务端口进行检查,一旦服务器的该应用服务端口异常则自动将访问请求转移到正常的服务器进行响应,  

    17、CDN缓存视频,努力尝试把更多的功能移到边缘服务器,以便能给用户更快速的体验。

    本文结束

上一篇:文库APP开发 随时阅读各类技术文档 下一篇:直播网站开发的技术是如何实现的(上)?