直播服务器的搭建以及感想

4 篇文章 0 订阅

Red5与EasyDarwin

主流开源流媒体服务器有哪些?
流媒体解决方案 Live555(C++)
流媒体平台框架 EasyDarwin(C++)
实时流媒体播放服务器程序DarwinStreamingSrvr(C++)
流媒体实时传输开发包 jrtplib
多媒体处理工具 ffmpeg
多媒体编码工具包Libav
Flash流媒体服务器 Red5(Java)
流媒体服务器 Open Streaming Server (Java)
FMS流媒体服务器(Adobe,收费的)
Wowza流媒体服务器(Java)
开源流媒体平台FreeCast(Java)

最近几天一直在忙着搭建直播服务器,为什么要做这个呢?你肯定会问。这几个月打天天狼人杀,想研究下期中视频直播的奥秘与细节。从刚开始的什么都不懂,到现在会使用,只能说是会使用,因为细节上的技术都没有去研究,现在下个文章来纪念一下。


直播间: imove.vlove.me


Red5的整体结构 利用的是RTMP协议,ffmpeg推送+Red5+VLC拉流,这个架构在WIndows服务器上比较方便。
EasyDarwin的整体结构 利用的是RTSP协议,可以用OBS+EasyDarwin+VLC拉流,这个框架相对Red5来说更灵活,但是需要认真去研究,才能利用好Easy的7大框架。(可以RTMP转发)


Red5搭建过程:

  1. 安装并配置JDK(JDK,不是JRE,配置环境变量时注意空格)
  2. 下载并安装Red5
    下载地址:http://www.red5.org/red5-server/
    然后解压到C
    修改conf下的red5.properties可以修改IP和端口
    HTTP是打开Red5的Demo页面用的,RTMP是用于在直播,视频播放等流服务时候使用的协议。

3.配置文件
这里写图片描述
配置完成后,双击Red5目录下的red5.bat即可启动Red5服务器。
启动完成后,输入http://114.115.210.91:5080,出现画面则表示成功。(如果不改配置文件,用http://localhost:5080即可)

三. 视频直播
1. 下载Demo
上图首页的最下面第二行有个红色的Install,点击可进入Demo的安装页面。
这里写图片描述

直播和流媒体播放都要用到”oflaDemo”,选择后点击”Install”安装即可。
安装完成后,在webapps下面出现oflaDemo文件夹。这里写图片描述
这里写图片描述

  1. 设置并发布直播
    进入发布设置界面:http://114.115.210.91:5080/demos/publisher.html
    这里写图片描述

在有摄像头,话筒的情况下,点击Video,在Device中选择摄像头,并点击Start,出现视频画面。
声音同视频,在Audio中设置。
这里写图片描述

回到Server画面,在Location中输入rtmp://114.115.210.91:5080/oflaDemo,地址与red5.properties中的rtmp协议的设置必须相同。
点击Connect,右侧出现NetConnection.Connect.Success ,说明连接服务器成功。

点击Publish页面中的Publish按钮即可对外发布直播。
View页面就是观看的直播,稍微有点延迟。
修改Name可以改变发布的名称。(相当于房间名)

同时可以用VLC拉流,或者HTML播放器做直播。


EasyDarwin搭建过程:

1、获取EasyDarwin最新版本

在Github:https://github.com/EasyDarwin/EasyDarwin 中获取最新的EasyDarwin版本源码,自行编译成需要的可执行文件,也可以直接在 https://github.com/EasyDarwin/EasyDarwin/releases 中下载已经归档的相应版本进行部署;

最好的选择就是:从归档版本中获取可执行文件或者获取源码编译成可执行文件,未归档的版本可能正在开发迭代中,各个模块都可能不是很完善;
2、编译EasyDarwin可执行文件

【如果直接下载已经编译好的Release归档版本,可跳过此步骤】

Windows版本编译,可以直接用Visual Studio 2015打开源码文件中的:/EasyDarwin-master/EasyDarwin/WinNTSupport/EasyDarwin.sln解决方案文件,编译出exe可执行文件EasyDarwin.exe,也可以用更高版本的vs进行编译,vs向下兼容,所以编译应该不是什么大问题,可能会有部分编译选项需要调整,这个根据实际情况调整即可,可以肯定的是,源码编译都是没有问题的;
经常会有开发者在编译完成后直接vs运行出现无法运行xxx.lib或者缺少xxx.dll的问题,建议好好补补基础知识:

vs调试运行需要设置EasyDarwin项目为启动项;
运行缺少dll时,可以将dll复制到vs的EasyDarwin.vcproj同级目录,或者设置EasyDarwin.vcproj项目熟悉,将dll路径以环境变量的形式添加到vs: EasyDarwin
Linux版本编译(gcc4.8+,support c++ 11),将从Github获取的EasyDarwin源码zip文件进行unzip解压,再进行具体编译:
cd ./EasyDarwin-master/EasyDarwin/
chmod +x ./Buildit
./Buildit (./Buildit i386 or ./Buildit x64编译出相应版本的可执行文件)
cd ./x64 (or cd ./Release)
3、配置easydarwin.xml

EasyDarwin主要的几个配置项:

rtsp_port:EasyDarwin RTSP服务监听的端口;

service_lan_port:HTTP RESTful服务端口;

enable_cloud_platform:是否接入云平台,true表示接入redis,由EasyCMS负载均衡;

4、运行EasyDarwin

Windows调试运行:

EasyDarwin.exe -c ./easydarwin.xml -d

Windows服务方式运行:

我们在EasyDarwin\WinNTSupport目录提供一段脚本install service.bat,运行,我们就创建了一个叫做EasyDarwin的Windows服务了,通过系统服务(services.msc)可以查看到。 注:Windows不同版本可能稍有差异,建议在命令行运行bat脚本,而不是直接双击运行,这样能看到具体出错原因!

Linux调试运行

./easydarwin -c ../WinNTSupport/easydarwin.xml -d

Linux后台服务方式运行

./easydarwin -c /etc/streaming/easydarwin.xml &

注:无论是Windows还是Linux运行EasyDarwin,以Debug模式运行时,-c后面带的配置文件路径可以是相对路径也可以是绝对路径,但是以服务/后台方式运行,就必须是用绝对路径!
5、检查EasyDarwin是否部署成功

通过访问EasyDarwin RESTful接口可以初步判断EasyDarwin流媒体服务器是否已经运行起来了,例如我们可以访问:http://[ip]:[http_service_port]/api/v1/getserverinfo 接口查看EasyDarwin是否运行响应,后面的版本我们会增加一个获取EasyDarwin整体运行配置信息RESTful接口,这样在外部就能查看EasyDarwin是否读取到了正确的用户配置:

{
“EasyDarwin” : {
“Body” : {
“Hardware” : “x86”,
“InterfaceVersion” : “v1”,
“RunningTime” : “2 Days 4 Hours 51 Mins 41 Secs”,
“Server” : “Server: EasyDarwin/7.2 (Build/16.1231; Platform/Win32; Release/EasyDarwin; State/Development; )”
},
“Header” : {
“CSeq” : “1”,
“ErrorNum” : “200”,
“ErrorString” : “Success OK”,
“MessageType” : “MSG_SC_SERVER_INFO_ACK”,
“Version” : “v1”
}
}
}

Web后台

Web后台默认登录账户admin,密码admin,代码中固定的,您可以根据自己的需求进行用户名、密码管理。
web后台地址: http://ip:8088或者http://ip:10080 , 其中ip为运行EasyDarwin服务器的ip地址。
web后台代码在nginx目录下。
调用方法

点播

EasyDarwin RTSP版本的流媒体服务器不支持点播,只有商用版本EasyDarwin才支持点播!!

直播转发

直接通过标准RTSP/RTP推送流程(ANNOUNCE/SETUP/PLAY/RTP)向EasyDarwin推送音视频数据进行转发和分发,例如rtsp_port配置为8554,那我们可以直接用EasyDarwin EasyPusher或者live555 DarwinInjector向8554端口进行直播推送,推送后,我们可以通过 rtsp://[ip]:[http_service_port]/api/v1/getrtsplivesessions 接口获取当前正在进行RTSP直播的列表;


相比来说,自己的服务器的带宽,以及转发能力都不如直接用第三方的直播服务器,比如七牛,阿里,腾讯,网易等等,小规模的业务用自己的服务器,是可以承受的,如果量很大的话,10W+,需要做负载均衡,又需要购买服务器,所以如果要直播的话,最好还是用第三方。


#参考文献:https://github.com/EasyDarwin
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值