搭建免费网络直播系统

来源:互联网 发布:php判断是否为素数 编辑:程序博客网 时间:2024/05/01 02:13

随着移动互联网的普及与网络直播的火爆,现在人人都能做网络直播,做网络直播可以采用手机APP做直播,也可以采用PC端的软件来做直播。由于手机APP通常是平台绑定的,因此用手机做直播只能在该APP绑定的平台进行发布,无法搭建自己的网络直播平台。在此笔者仅以如何搭建自己的直播平台的思路来发表意见。

笔者从事网络直播已经5年多了,从2011年开始,笔者就一直从事网络直播平台的维护,期间积累了些许粗浅的经验,在此仅抛砖引玉。

做网络直播需要三大软件模块,如下:

1)前端编码器软件

用于视频信号的采集、编码与传输。是视频直播的源头,没有前端编码器软件,就无法产生内容。

2)流媒体服务器

用于接收前端编码器编码的直播媒体流,并进行网络转发,最终观众的播放器与流媒体服务器进行通信,由流媒体服务器对用户提供直播服务。

3)直播管理平台

用于管理直播频道、用户信息、日志等应用性的功能,用户通过这个模块提供的功能来查询频道、登录,通过浏览器来接收直播。

 

以上三个模块,在做直播时必不可少,现在简单罗列笔者已经使用过的软件(仅为免费软件,收费软件暂时不做重点,或者忽略)。

一、前端编码软件

1)Flash Media Live Encoder 3.2

   由著名的Adobe公司出品,值得信赖,Adobe好长时间已经停止更新了,时代比较久远了,但仍旧不失为一个好用的编码器软件。

网址:http://www.adobe.com

2)Open Broadcaster Software

   开源并且免费的直播软件,是当前非常流行的直播软件,很多游戏直播就采用它,例如斗鱼直播。

       网址:http://www.obsproject.com

3)iAVCast(串流直播)

       国内串流直播团队开发的免费直播软件,免费但不开源。

网址:http://www.iavcast.com


二、流媒体服务器

      1)Adobe Media Server 4.5

       Adobe公司研发的专业直播服务器,不开源,不免费。但借助于互联网,你可以自己找到解决办法,您懂的。笔者曾经一直用这个软件做直播服务器。

       2)Red5

       开源免费的直播系统,采用Java开发,可以移植到任何平台,但需要安装Java虚拟机。

       3)Nginx RTMP Module

       由战斗民族俄罗斯人开发的Nginx的附加模块,功能强大,性能优越,但可惜只能在Linux下使用,用起来还是有点不方便。

       4)CRtmpServer

       开源并免费的直播服务器软件,性能也很优越,需要在Linux下编译。

三、直播管理平台

       找了一圈,没有发现开源或者免费的,因此笔者自己开发,采用PHP,框架采用Thinkphp,目前已经能够支持多屏直播了。以后会介绍。

 

 

流媒体服务器与直播管理平台的选型在笔者的其它文章中有阐述,本文仅阐述前端编码软件的选型与比较,仅代表本人的观点,具体请您自己参考相关软件文档。

选择直播编码器的必要条件是:

1)必须支持H264编码,支持MP3或者AAC编码。

H264:又称AVC(高级视频编码),是当前移动终端首选的编码标准。

MP3:是音频编码标准,大家都熟悉,不多说。

AAC:即高级音频编码,比MP3音质还好,是做直播的首选,它有AAC-LC与HE-AAC连个档次,AAC-LC是地复杂度的AAC,兼容性好,HE-AAC是高效能AAC,压缩度高,音质与AAC-LC相当。

2)支持RTMP推流

RTMP:是实时消息协议的简称,有Adobe公司开发,虽然没有变成国际标准,但它是事实上的工业标准,无论哪个公司,只要做直播,就得用它,当今的手机直播APP推流所用的协议都是RTMP协议。

 

以下从功能到性能方便逐一介绍以上3款免费的编码推流直播软件:

1) Flash Media Live Encoder 3.2(以后简称FMLE)


2) Open Broadcaster Software(以后简称OBS)



3) iAVCast(串流直播)(以后简称串流直播)



从界面上来看,3款软件主界面操作起来都相对比较简单,Flash Media LiveEncoder 3.2

的所有设置界面都放在主见面里了,功能一目了然,容易上手。但Open Broadcaster Software与iAVCast(串流直播)都有自己的独立设置界面。

点击OpenBroadcaster Software的设定按钮将出现它的设置界面如下:




Open Broadcaster Software的设置界面里包含了不少功能。

 

点击iAVCast(串流直播)的设置按钮出现的界面如下:



iAVCast(串流直播)的设置界面里也隐藏了不少功能。

笔者通过反复使用,仔细比较,得出以下比较成果。


比较项

FLME  

OBS

串流直播

备注

编码标准

H264编码

 

MP3编码

 

AAC-LC编码

FLME需要插件可以支持

HE-AAC编码

 

H265编码

 

MPEG-4 编码

 

MPEG-2 编码

 

文件录制格式

FLV

MP4、FLV

MP4、FLV、TS

 

码流输出

多码流输出

3

1

4

 

多服务器推送

2

1

2

 

RTMP协议发布


 

UDP协议发布


 

HTTP协议发布

 

RTMP发布验证

RTMP推流时支持服务器端验证

录制文件规则命名

根据设置的规则命名文件

文件元数据注入

 

高性能硬件加速编码

NVENC硬件加速


NVidia的显卡编码

QSV硬件加速

Intel的集成显卡编码

CUDA硬件加速

NVidia显卡的GPU编码

图像预处理与优化

亮度对比度调节

 

台标叠加

OBS支持图片叠加

原始台标擦除

 

字幕叠加


 

滚动字幕功能

 

滚动字幕计划任务


 

美白功能

实质为图像亮度增强

美颜功能

实质为图像颜色叠加

上下左右切边

 

动画图片叠加


 

动画图片格式

 

Gif

Gif、APNG、ANI

 

多场景切换

 

多个来源叠加

 

网络协议与服务

UDP协议服务

 

HTTP协议服务

 

RTSP/RTP

 

UDP加密组播

 

其它功能

抓取缩略图

 

多配置文件

 

编码状态统计

 

开机自启动

 


以上仅仅是从功能上进行了客观对比,对比的版本均为笔者书写这篇稿子时官方最新版本,后续版本的变化笔者无法预知。

 

通过长时间的使用,笔者发现未编码时OBS消耗的内存最高,FLME消耗的内存最少,笔者分析,可能是OBS功能最丰富,FLME功能最少的原因。在编码时,发现FLME消耗的内存最多,串流直播的内存最小。

编码一个720P的节目时,OBS与串流直播占的CPU均比较少,FLME占的CPU比较高,可能是FLME的编码器比较老旧的原因吧。

由于OBS不具备多码流编码,通过对比FLME与串流直播同时编码1080P,720P,480P三个码流的情况下,FLME占用的CPU资源明显高于串流直播,由于FLME没有硬件加速编码功能,因此没有进行硬件加速功能编码的对比。

通过一个星期的长期运行,OBS崩溃3册,串流直播与FLME稳定正常。

 

另外笔者发现,FLME与串流直播更容易上手,而OBS比较专业,OBS里面的某些参数至今笔者还没有完全弄明白,因此笔者觉得OBS更适合于专业用户,不过网络上有很多OBS的教程,要用好OBS也不算难。

 

在此,笔者做个总结:

1)  IPTV,选择FLME与串流直播更合适,因为能够长期运行不死机。

2)  做现场直播与游戏直播,选择OBS与串流直播更合适,因为他们功能多。

3)  要往多个平台推送节目,只能选择FLME与串流直播。

4)  作为编码服务器来使用,应该选择FLME与串流直播,因为他们均能关闭预览功能,而且稳定。

5)  如果要用硬件加速编码,请选用OBS与串流直播。

 

 对流媒体服务器的对比笔者将在下一篇文章里给出。本文仅代表个人观点,如有不妥,欢迎指正。

后续将比较Red5、Nginx Rtmp Module与CRtmpServer。由于FMS是收费版本,暂不比较。




3 0
原创粉丝点击