服务器搭建七——流媒体服务器架设

写在最前面的话:前面实验服务器搭建都很快完成了,但是这个因为涉及很多问题,所以一直到现在才把实验的过程写出来。最后测试还是失败的,中间经历很多错误什么。。。。编译。。。库文件。。。nginx。。。redis等等

1.测试环境

a)安装在虚拟机上的centos6.9
b)软件EasyDarwin、helix

2.流媒体传输原理

流媒体是指利用流式传输技术传送音频视频等连续媒体数据。核心是串流技术和数据压缩技术。
特点:连续性、实时性、时序性
传输方式:顺序流式传输、实时流式传输
实现流式传输需要缓存机制。这就是我们在看视频过程中会发现在我们电脑中缓存文件,并且当你看完一部电影,有些网站实际上就是已经把视频文件放到你电脑上面了,可以直接播放这个文件。还有些网站的缓存是分成好几个文件,分段传输,但是不是所有的缓存都可以用播放器再次播放的,因为缓存使用的时候有些会丢弃前面的播放的内容。最后我们看到的缓存文件是不完整的。

服务器搭建七——流媒体服务器架设_第1张图片
流媒体原理图

上图是在网络上面找的,主要是解释流媒体的原理,web服务知识为用户提供使用流媒体的操作界面,首先通过web页面操作之后,流媒体播放器与流媒体服务器直接连接,使用RTP/UDP传输协议。控制协议使用RTSP(tcp)协议554端口,数据的传输是基于UDP的RTP。
播放方式:单播(每个客户端都与流媒体服务器建立单独的数据通道),广播(直播节目,电视广播,用户不可以暂停快进后退,降低了服务器的压力),组播(将数据包发送给多个用户,保证数据包占用最小的带宽)现在网络视频网站,我们感觉自己可以暂停,快进,播放。网络电视节目也是可以后退。其实很多采用的都是组播方式。
再就是广播方式现在比较流行的就是直播平台实时直播。
流媒体压缩格式:AVI 、MPEG、REALVIDEO、QuickTime 、ASF和WMV

3. Helix Server的安装运行(失败了)

查询知道Helix Sever软件在yum列表是没有的,系统也不会自带需要下载安装。
并且是商业软件,使用需要付费的,我们测试可以使用试用评估的版本。当然也可以在网络上找寻免费的软件,下面是十款免费的:
  1.Free Cast:个使用Java语言编写的P2P的流媒体开源平台。 
  2.Easy Darwin:是款由国内开源流媒体团队开发和维护的开源流媒体平台框架。
  3.Live555:是个为流媒体提供解决方案的跨平台的C++开源项目,它实现了对标准流媒体传输协议如RTP/RTCP、RTSP、SIP等的支持。
  4.Red5是个采用Java开发开源的Flash流媒体服务器。它支持:把音频(MP3)和视频(FLV)转换成播放流;录制客户端播放流(只支持FLV);共享对象;现场直播流发布;远程调用。 
  5.Free UPnP Entertainment Service:是个开源的多平台通用的即插即用的音频、视频的媒体服务器,支持在线对ogg/vorbis,musepack/mpc,FLAC和AAC/MP3进行转码到MP3、mp2、wav或者pcm,还包括图片转换、缩放等。
  6.Cumulus Server:又名open rtmfp,是个完全开源和跨平台的可扩展的RTMFP服务器脚本。Cumulus Server在GPL框架下遵循速度、优势、跨平台、轻量和高质量代码。
  7.Open AMF:是免费的开放源码替代Macromedia的远程Java Flash。这是因为能够提供作为应用服务,以FlashMX的大媒体的专有解决方案。
  8.cmzacfunmsg:个修改自php-rtmp-client的开源软件,可以精确模拟flash客户端向FMS发送格式化的AMF消息,所以在没有flash插件的情况下也可以进行与FMS交互。
  9.Open Streaming Server:是个数字媒体传送器,主要功能包括支持mp4、3gp、WMF和qt文件格式;动态带宽适配;负载均衡。
  10.Ffmpeg:是套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。它包括了目前先的音/视频编码库libavcodec。
当然具体使用什么样软件根据自己需要来选择,本来是希望测试Helix Server但是没有下载到软件。到官网查询安装时候发现了如下文件信息:

服务器搭建七——流媒体服务器架设_第2张图片
helix已经更新

如果我在想使用之前的版本安装测试需要到其他找破解版本的安装,官网没有找到安装下载地方,和免费获得的地方,发送的邮件也没有结果:
服务器搭建七——流媒体服务器架设_第3张图片
现在的

搞了几天都没有结果。因此需要测试的朋友可以到其他地方下载;
redhat6
redhat5
这个两个都是14年的版本还可以下载但是没有许可信息。rhel6在redhat6或者是centos6中安装,rhel5在redhat5或centos5安装。下载之后解压出来如下图:

服务器搭建七——流媒体服务器架设_第4张图片
下载后文件

修改下 chmod 777 servinst_mobile_linux-rhel6-x86_64.bin的权限
运行安装 ./servinst_mobile_linux-rhel6-x86_64.bin

服务器搭建七——流媒体服务器架设_第5张图片
安装没有许可文件

没有授权文件测试。Windows上的测试大家可以自行百度网上有很多文章和版本。最流行的是两个版本9.0和11.

4. 下面测试安装EasyDarwin

可以在github上面下载EasyDarwin的代码,如下图所示DOWNLOAD ZIP文件

服务器搭建七——流媒体服务器架设_第6张图片
下载EasyDrawin

解压之后文件如下图。

服务器搭建七——流媒体服务器架设_第7张图片
解压文件

下面是编译脚本,需要赋予执行的权限 chmod +x Buildit 因为我的系统是64位的所以使用 ./Buildit x64

服务器搭建七——流媒体服务器架设_第8张图片
编译
编译

运行在过程中遇到报错,是C++11无法识别的问题。原因是我们系统安装的gcc-4.4.7-18.el6.x86_64 是这个版本需要更新到4.8.2,才可以支持。关于这个安装浪费了好长时间才安装上4.8.2的版本。至于怎么安装这里我就不在说明了。

编译报错

最后个人建议在网上找到编译后版本再部署,其实在github上面也有单独的版本,如果想用这个一定要搞清楚里面几个主要组件的关系:
  1. EasyCMS 开源的设备接入与管理服务,具体见https://github.com/EasyDarwin/EasyDarwin/tree/master/EasyCMS;
  2. EasyDarwin 核心流媒体服务!具体接口调用方法和流程见:https://github.com/EasyDarwin/EasyDarwin/tree/master/EasyDarwin;
  3.EasyCamera 设备端(摄像机、移动设备、桌面程序)对接EasyDarwin平台的方案,跨平台,支持Windows、Linux、ARM,具体接入方法见https://github.com/EasyDarwin/EasyCamera;
  4.EasyClient 是EasyDarwin开源流媒体云平台的客户端实现,项目地址:https://github.com/EasyDarwin/EasyClient 功能包含:Windows、Android、iOS、H5(支持微信)四个部分,其主要功能包括:“云平台设备列表获取;设备实时码流请求与播放;设备云台控制;设备语音对讲;”
  5. EasyNVR 摄像机(通用RTSP、Onvif摄像机)接入服务,具体接入方法见https://github.com/EasyDarwin/EasyNVR;

服务器搭建七——流媒体服务器架设_第9张图片
EasyDrawin结构关系

  EasyDarwin 是流媒体核心服务,需要和HTTP服务一起使用才能实现web页面访问的功能,这里是使用nginx。也就是说我们平时网络上使用视频播放功能其实都是使用浏览器先进入一个页面,点击视频播放之后才会和流媒体服务器通信。或者使用客户端和流媒体服务器连接。EasyCMS相当于一个设备管理器主要用来管理远程的设备,和设备怎么接入。既然是流媒体服务器,如果使用的现成的视频文件存储在数据库中就可以了。EasyCamera ,EasyNVR 都是实时获取远端视频信息,远端设备是通过CMS管理,视频文件通过EasyDarwin处理,放到数据库中。EasyClient是一个客户管理端实现对云平台的信息管理工作和视频播放,比如获取视频播放列表等等。那么我们如何访问播放视频呢,这就是HTTP要实现的了,或者做一个视频播放客户端直接和流媒体连接,现在比较火直播平台,就是通过摄像头获取信息,上传到EasyDarwin处理在经过推流,大家用网页或者客户端就可以看到了。当然这里面要实现各种问题,稳定性了,并发了,再就是加入打赏等等,但是整个平台大致流程是不变的,其他的业务需要在说吧。
  下面我会以网络上别人搭建好的nginx和EasyDarwin组合来说明,因我这边没有公共网络IP可以使用,可能无法实现视频实时获取,但是可以提供别人做好的APP客户端,非常简单的,只需要填下你的IP地址,设置好接口参数就可以。
下载地址: https://pan.baidu.com/s/1sluDEPn#list/path=%2F里面有windows和linux两个版本。
EasyCameraAPP下载地址: https://fir.im/EasyCamera
EasyClientAPP下载地址: https://fir.im/EasyClient
对于不需要云平台,只使用EasyDarwin流媒体服务器的用户,可以只运行其中的EasyDarwin。然后使用EasyPusher进行推流,EasyPlayer、VLC等播放器就可以直接播放。

文件
Paste_Image.png

上面是别人搭建好的内容pdf文档是说明文档。但是如果希望自己搭建的话可以,需要自己安装nginx和redis。然后需要使用源码进行编译,我上面自己编译时候发现GCC版本不对等等,用了很长时间才弄好。个人建议每个人可以去尝试编译,如果不行再使用别人编译好的这样是个学习的过程。至于nginx和redis不了解可以自行查找安装资料。也可以和我一样为了实验,使用别人配置好的,按照PDF里面内容运行测试。当然需要使用公网IP测试,可以找个阿里云,腾讯云什么去测试。

5.流媒体的配置文件

主要涉及到文件夹,如果是自行安装的nginx和redis是你自己安装的路径。


服务器搭建七——流媒体服务器架设_第10张图片
解压后文件

主要的配置文件:


服务器搭建七——流媒体服务器架设_第11张图片
EasyDarwin的配置文件
服务器搭建七——流媒体服务器架设_第12张图片
EasyCMS配置文件

Nginx的配置文件和网页目录,当然你自己安装话目录肯定不是这个了。具体你可以查看Nginx的文档去学习下。


服务器搭建七——流媒体服务器架设_第13张图片
nginx

不知道redis是什么的,去自行百度学习吧。你记住他是数据库就可以了。其他现在不知道没有关系


服务器搭建七——流媒体服务器架设_第14张图片
redis

需要修改的配置文件内容:
EasyDarwin(easydarwin.xml):
rtsp_port:10554
rtsp_wan_port:10554
Service_lan_port :10008
Service_wan_port:10008
Service_wan_ip:192.168.197.128(或者你的主机公网IP)
服务器搭建七——流媒体服务器架设_第15张图片
EasyDarwin的配置文件
服务器搭建七——流媒体服务器架设_第16张图片
EasyDarwin的配置文件

数据库连接的设置,如果数据库不在本地服务器还需要设置好ip,端口,登录密码


数据库部分
服务器搭建七——流媒体服务器架设_第17张图片
EasyCMS

至于nginx和redis的配置文件在这里不用修改,如果是自己安装请自行按照nginx和redis要求配置就可以了。这里nginx的服务端口是10080

服务器搭建七——流媒体服务器架设_第18张图片
nginx

Redis的端口好要和上面的一直6379。这样所有的配置文件就都修改好了。

6. 测试

我在测试遇到一个问题就是下面的报错信息。这个报错是说没有找到libpcre.so.3这个库文件,当我在上找的时候发现大家大部分都是libpcre.so.1的报错和我的还是不一样的,不断摸索之后,重新安装库文件,(重新安装PCRE)都没有成功解决。最后找到一篇和我的一样报错的文章是说是nginx编译的版本问题,也有可能我下载这个编译好的版本和我系统不兼容。因此我后面自行安装nginx之后在测试http提供服务的问题。再就是我们测试使用apache是否可以。但是数据库可以不使用redis可以使用mysql等等。

nginx报错

服务器搭建七——流媒体服务器架设_第19张图片
查询pcre

ldd $(which /usr/local/src/EasyDarwin/nginx/sbin/nginx)

服务器搭建七——流媒体服务器架设_第20张图片
报错

运行EasyDarwin,提示一些文件夹不存在,但是服务器已经成功了。
服务器搭建七——流媒体服务器架设_第21张图片
已经成功运行了

运行redis时候也遇到了错误,也是库文件的报错。因此后面也需要自行安装测试
redis

运行EasyCMS会报连接数据库的错误。
服务器搭建七——流媒体服务器架设_第22张图片
EasyCMS

虽然EasyDrawin已经可以运行,但是nginx和redis没有运行好,再就是EasyDrawin只有核心程序没有后天管理。Helix安装好之后是有后台管理的。
如果希望使用在EasyDrawin项目中有演示的网站,可以自行查看
也许你看到这里会很气愤你写了半天的文章,最后却没有测试成功,那你写出来干嘛,我想说这个是我学习的一个过程,在这次对流媒体服务器安装调试的过程中,学会到以下:
1)对于库文件有了一定的了解(以前只对windows系统有点了解)
2)对于编译安装有新的认识
3)再次发现做些事情,在网络找资料的能力很重要,使用google搜索可能找的解决方案更好,当然这是个人感觉,至于怎么使用,前面我在之前文章说过 翻墙的问题。

你可能感兴趣的:(服务器搭建七——流媒体服务器架设)