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

来源:互联网 发布:路由器和交换机 知乎 编辑:程序博客网 时间:2024/06/05 22:30

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 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 音乐酒吧客人老是要上台唱歌怎么办 高一孩子学习没有动力家长怎么办 我不想当公司监事法人不同意怎么办 领导让我当组长我不想当怎么办 如果你是班委你不想当了怎么办 孩子读初一爱和同学打架怎么办 陌陌情感连线部分功能被限制怎么办 华为荣耀7x密码忘了怎么办 华为荣耀7x应用锁密码忘了怎么办 同学群里有人发低俗信息怎么办 小孩读英语绘本大人不会翻译怎么办 东西掉到手刹缝里面了怎么办 泰拉瑞亚猩红之地蔓延到家里怎么办 三星r.467玩dnf闪退怎么办 美团外卖不小心撞到汽车怎么办 如果你在战场上遇到华裔美军怎么办 衣服洗完了干了后发黄怎么办 毛衣起球怎么办学会这几个小妙招 小车没电了打不着火怎么办 老婆花钱大手大脚又要我给钱怎么办 住酒店手机id被劫持了怎么办 孩子老是送玩具给别的小朋友怎么办 老板总想和我谈人生怎么办gl 导师让用师姐的数据写论文怎么办 签了平面模特协议想违约怎么办 福州96年以前社保手册丢了怎么办 被老师缴的手机弄没了怎么办 户口在成都医保在德阳生孩子怎么办 微课掌上通看不到孩子班级圈怎么办 微课掌上通的录音错误是怎么办 微课视频录制ppt里面音乐怎么办 老师在街上和别人吵起来了怎么办 手机录屏传到爱剪辑变成竖屏怎么办 尔雅通识课程考试忘记做了怎么办 尔雅通识课过了课程完成时间怎么办 微信账号没冻结登录不了怎么办 微信解封电话号码没有电话号怎么办 ps中智能对象不能直接编辑怎么办 工资低奖金高银行流水不够怎么办 我水费交了自来水公司不给开怎么办 艺考文化分数差4分二本怎么办