分析:直播流媒体服务器分析

项目GitHub开源地址:https://github.com/makewheels-zzq/ml-live

前言:

上篇文章主要介绍了,传输协议。以及一个流媒体SRS。

SRS不必赘述,在对比一下其他流媒体以便做技术选型.

流媒体服务器-SRS

可看此文章:

点我,文章末尾有SRS介绍

流媒体服务器-NginxRtmp

Nginx介绍:

详细介绍点我
在这里插入图片描述
NginxRtmp项目地址:
https://github.com/arut/nginx-rtmp-module

NginxRtmp项目优点:

1.RTMP / HLS / MPEG-DASH实时流

2.RTMP视频点播FLV / MP4,可从本地文件系统或HTTP播放

3.流中继支持分布式流:推拉模型

4.在多个FLV中记录流

5.H264 / AAC支持

6.FFmpeg在线转码

7.HTTP回调(发布/播放/记录/更新等)

8.在某些事件上运行外部程序(exec)

9.HTTP控制模块,用于记录音频/视频和丢弃客户端

10.先进的缓冲技术可将内存分配保持在最低水平,以实现更快的流传输和较低的内存占用

11.事实证明可以与Wirecast,FMS,Wowza,JWPlayer,FlowPlayer,StrobeMediaPlayback,ffmpeg,avconv,rtmpdump,flvstreamer等一起使用

12.XML / XSL中的机器和人类可读形式的统计信息

13.Linux / FreeBSD / MacOS / Windows

流媒体服务器-AdobeFms

介绍:
Flash Media Server (简称FMS)为Adobe公司开发。可用于用户之间相互通讯,它集成了Flash多媒体交互的特性,又具有实时音频和视频流传输等特点。
特性:
FMS在2010后的产品已经支持了最新的P2P特性,使Flash可以利用P2P技术来传输以及观看视频。
  支持的协议主要为:
(1).RTMP
  (2).RTMFP(P2P协议)
  两种协议的差异:
  其原理不同的是如何通过网络进行通信的协议。RTMFP是基于用户数据 ​​报协议(UDP),而RTMP是基于传输控制协议(TCP)。基于UDP的协议都在基于TCP协议的一些具体的好处是,提供实时流媒体,如减少延迟和开销,和更大的容忍丢弃/丢失的包而实现低成本的可靠性。与RTMP对比,RTMFP还支持发送数据直接从一个Adobe Flash Player到另一个客户端而不通过服务器中转。服务器端与客户端必须始终保存初始连接,可用于提供到其他系统服务器端的数据转发或网关。

现今市场上已有的产品大部分支持的是RTMP协议,如:开源的Red5使用的就是RTMP协议。

目前市场上同时支持RTMP以及RTMFP协议的产品:
(1).Adobe Flash Media Server(FMS)——Adobe公司推出的同时支持RTMFP和RTMP协议的服务器端产品。
(2).八百里flash p2p流媒体系统(P2PS)——苏州八百里网络科技推出的同时支持RTMP以及RTMFP协议的视频服务器,提供了比较全面的功能支持

不推荐使用这个.因为收费贵,支持并发性能差,并且比较老旧

流媒体服务器-Red5

介绍:
在这里插入图片描述
特性:

  1. Red5 is an Open Source Flash Server written in Java that supports:

  2. Streaming Video (FLV, F4V, MP4, 3GP)

  3. Streaming Audio (MP3, F4A, M4A, AAC)

  4. Recording Client Streams (FLV and AVC+AAC in FLV container)

  5. Shared Objects

  6. Live Stream Publishing

  7. Remoting

  8. Protocols: RTMP, RTMPT, RTMPS, and RTMPE

  9. Additional features supported via plugin:

  10. WebSocket (ws and wss)

  11. RTSP (From Axis-type cameras)

  12. HLS

流媒体服务器-WebRTC

介绍:
在这里插入图片描述

特点

1.WebRTC实现了基于网页的视频会议,标准是WHATWG 协议,目的是通过浏览器提供简单的javascript就可以达到实时通讯(Real-Time Communications (RTC))能力。
2.WebRTC(Web Real-Time Communication)项目的最终目的主要是让Web开发者能够基于浏览器(Chrome\FireFox…)轻易快捷开发出丰富的实时多媒体应用,而无需下载安装任何插件,Web开发者也无需关注多媒体的数字信号处理过程,只需编写简单的Javascript程序即可实现,W3C等组织正在制定Javascript 标准API,目前是WebRTC 1.0版本,Draft状态;另外WebRTC还希望能够建立一个多互联网浏览器间健壮的实时通信的平台,形成开发者与浏览器厂商良好的生态环境。同时,Google也希望和致力于让WebRTC的技术成为HTML5标准之一,可见Google布局之深远。
3.WebRTC提供了视频会议的核心技术,包括音视频的采集、编解码、网络传输、显示等功能,并且还支持跨平台:windows,linux,mac,android。

流媒体服务器对比

上述这些就是主流流媒体服务器.下文我将对比作出方案选择.

历史对比:
在这里插入图片描述
网络协议对比

在这里插入图片描述
核心功能对比:

在这里插入图片描述
安装部署对比:
在这里插入图片描述
体系架构对比:

在这里插入图片描述
CDN友好性对比:

在这里插入图片描述
代码量对比:
在这里插入图片描述

所以这里推荐使用SRS作为流媒体服务器.这篇文章有SRS安装教程.包含了直播环境的一系列搭建.
--------------------------------------------------------------点我,直播环境安装篇

发布了79 篇原创文章 · 获赞 9 · 访问量 7256

猜你喜欢

转载自blog.csdn.net/qq_37870369/article/details/105365188