大家好,今天来为大家解答nginx流媒体服务器这个问题的一些问题点,包括直播媒体实时流实现也一样很多人还不知道,因此呢,今天就来为大家分析分析,现在让我们一起来看看吧!如果解决了您的问题,还望您关注下本站哦,谢谢~
一、Nginx***rtmp***直播媒体实时流实现
Nginx-rtmp直播媒体实时流实现概览
在构建一个IPCamera项目服务器过程中,为了解决P2P穿透和NAT设备限制问题,以及IPv4资源的限制,选择了主流的RTMP协议作为服务器转发方案。这个过程中,Nginx的rtmp插件被选为实现实时流转发的核心工具。
文章首先介绍了项目的需求,包括自建RTMP流媒体服务器和利用云厂商服务,以及为了支持非流媒体数据传输而设计的媒体转发服务。接着,通过详细步骤展示了如何从GitHub和编译Nginx-rtmp-module,并配置Nginx.conf以支持RTMP协议。
文章还提及了Nginx-rtmp模块的HTTP异步通知回调功能,通过SpringBoot搭建HTTP服务接收RTMP回调,以及客户端如何通过i*cast.的推流软件进行推流。Nginx-rtmp的鉴权方法,包括自定义auth函数或通过HTTP回调状态码进行验证,也在文中有所涉及。
尽管本文没有详述RTMP鉴权的具体实现,但提示了涉及数据库的房间号功能和初步的HTTP请求判断逻辑。最后,文章提到了Windows环境的便利*,并分享了一些相关配置说明、参考资源和Nginx-RTMP的Windows二进制。
二、nginx流媒体卡顿
卡顿原因有很多种,可以尝试以下方法解决。
1、检查服务器*能:确保服务器的硬件资源足够,如CPU、内存、带宽等。
2、调整Nginx配置:使用了SSL加密,需要确保SSL配置正确,并且使用了合适的加密套件和证书。
3、检查网络带宽:确保网络带宽足够,并且没有其他大量占用带宽的应用程序。
4、优化媒体文件:媒体文件本身质量较差,或者编码方式不适合流媒体传输,也会导致卡顿。可以尝试优化媒体文件的质量或编码方式等。
三、流媒体服务器的sewise软件系统
sewise流媒体服务器软件系统是一整套流媒体编码、分发和存储的软件系统,包含直播、点播、虚拟直播、剪切、转码、视频管理系统。这些软件支持多屏多系统播放,终端客户使用手机、平板、电脑、电视等终端,ios、安卓、windows、linux等系统,都能支持播放。 UMS通过使用RTMP协议向Flash Player传输或接收多种比特率的直播/点播媒体流、数据以及远程调用信息.UMS服务器支持基于Adobe Flash/AIR技术平台的流媒体点播/直播及其他功能.
AMS流媒体服务系统是一套完整的基于IP网络的音视频应用平台,采用模块化,跨平台的架构设计,采用自主研发的高*能流媒体服务引擎,支持多种主流流媒体协议(RTP、RTSP、RTMP、、HLS等);支持直播、点播、录播等多种应用模式;支持PC机、手机、机顶盒等多种接入终端。方便用户建立多种应用模式.
2.1.使用UMSMonitor配置UMS服务
UMSMonitor是一款专门用于管理Ultrant MediaServer服务器软件的工具软件,使用它可以方便地启动、停止、重启Ultrant Media Server服务,并可以设置各种运行参数。您可以通过鼠标右键Windows托盘右下角的蚂蚁图标来弹出系统菜单,见下图:
弹出上图菜单后,用鼠标左键选取“打开Ultrant Media Server Monitor”选项,即可弹出UMSMonitor的主控界面,如下图:
在UMSMonitor软件主控界面上,您可以通过左边的“服务状态”列表查看已经安装的UMS相关服务及其工作状态,要管理其中某一项服务,您需要先选中左边的列表项,然后找到右边的三个服务控制按钮,分别是“启动服务”、“停止服务”、“重启服务”,这三个按钮分别对应的功能是:启动UMS相关服务、停止UMS相关服务、重启UMS相关服务。在UMSMonitor软件主控界面上,您需要先选中“Ultrant Media Server(UMS)”项,然后通过鼠标左键右边的“配置服务”按钮来进入Ultrant Media Server服务器软件配置界面。配置界面如下图:
配置完成后,您需要“应用”以确认修改,然后“确定”使修改立刻生效,此时软件会提示您是否重启Ultrant Media Server服务以使修改生效,选择“确定”是配置生效。
2.2.测试点播功能
要使用点播功能,您需要自己准备一个FLV格式的视频文件,并将其拷贝至任一媒体库路径下(媒体库路径可以通过UMSMonitor来添加),或将该FLV格式视频文件所在路径添加至媒体库路径。
视频文件及媒体库路径准备好后,请确保修改的设置已经生效,以及文件名没有冲突。如果您使用的是安装程序自带的Nginx Web服务器,请将nginx安装目录下html子文件夹中的vod.html文件用记事本打开;如果您使用已有的Web服务器,请将Web服务器根目录下的UMS\vod.html用记事本打开,找到下述代码:
so.addVariable('file','6rooms.flv');
so.addVariable('start','0');
so.addVariable('streamer','rtmp://127.0.0.1:1935/vod');
将127.0.0.1改为您当前服务器的IP;如果您使用自己准备的FLV格式视频文件,请将vod.html文件中上述代码中的“6rooms.flv”改为您自己准备的视频文件名称。
如果您使用安装程序自带的Nginx Web服务器,您可以通过浏览器访问服务器IP}/vod.html来访问点播页面;如果您使用您的计算机原有的Web服务器,您可以通过浏览器访问服务器IP}/UMS/vod.html来访问点播页面。
播放页面正常出现后,播放器即可播放。
2.3.测试直播功能
您可以使用Adobe公司提供的免费软件Adobe Flash Media Live Encoder3.1来测试UltrantMedia Server软件的直播功能。
2.3.1安装Adobe Flash Media Live Encoder3.1
安装过程及帮助详见Adobe官方网站。
2.3.2准备摄像设备
您可以使用USB网络摄像头或专业的视频采集卡(需要Adobe Flash Media Live Encoder3.1程序能够识别)来作为视频源。
2.3.3使用Adobe Flash Media Live Encoder3.1发布直播流
打开Adobe Flash MediaLive Encoder3.1软件,确保视频采集设备和音频采集设备能正常工作,正常工作的硬件设备看似应该如下图所示:
请正确设置好坐图红色矩形框所标注的位置,其中,FMS URL位置处的URL应该为”rtmp://{UltrantMedia Server所在服务器IP}/live”,Stream位置处应该为”livestream”。设置完成后,要首先按下”Connect”按钮,如果“Connect”按钮上的文字变成“Disconnect”,则表明连接成功;然后按最下边红色矩形框标注的“Start”按钮,以启动直播发布。正常工作的Adobe Flash Media LiveEncoder3.1看似应该如下图所示:
2.3.4查看直播视频
如果您使用的是安装程序自带的NginxWeb服务器,请将nginx安装目录下html子文件夹中的live.html文件用记事本打开;如果您使用已有的Web服务器,请将Web服务器根目录下的UMS\live.html文件用记事本打开,找到下述代码:
so.addVariable('file','livestream');
so.addVariable('streamer','rtmp://127.0.0.1:1935/live');
将127.0.0.1改为您当前服务器的IP;如果您重新命名了发布的视频流的名称,请将live.html文件中上述代码中的“livestream”改为您自己命名的视频流的名称。
如果您使用安装程序自带的Nginx Web服务器,您可以通过浏览器访问服务器IP}/live.html来访问直播页面;如果您使用您的计算机原有的Web服务器,您可以通过浏览器访问服务器IP}/UMS/live.html来访问直播页面。 UMS支持可伸缩的无限级连直播集群组网功能,通过简单的可视化配置,您就可以将多台装有UMS服务器软件的服务器组成一个统一的直播网络群,其中的每一个节点都可以对外提供一致的直播服务。
3.1使用UMSMonitor管理工具配置直播集群组网功能
打开UMSMonitor的服务配置界面,找到其中的”CDN配置”选项页,如下图:
如果您选择“使用直播流转发服务器功能”,则UMS可以作为直播流转发服务器使用。当您选择“应用”配置,选择“确定”并重启服务使配置生效后,您当前配置的UMS服务器软件将自动连接到上级UMS直播源服务器的同步和端口,以获取直播同步信息。注意:您必须启用上级UMS服务器的“使用直播流服务器功能”,也就是启用上级UMS服务器同等的上述配置页面的下半部分选项。只有在与上级UMS服务器的同步端口和同步口令一致的情况下,当前配置的UMS服务器才能连接到上级直播源服务器的同步端口,才能进行直播信息同步。
“上级直播源服务器服务”理论上与“上级直播源服务器同步”是一致的,都是上级服务器的(当设置UMS的对外视频直播服务IP与UMS对外直播同步服务IP不一致的情况除外),“上级直播源服务器服务端口”就是上级UMS服务器在UMSMonitor配置工具服务配置页面中的“基本配置”页面上的“IP和端口”栏中设置的监听端口,上级UMS通过这个端口对外提供视频数据直播服务。当前配置的UMS服务器也是从上级服务器的对外视频数据直播服务端口获取实时视频直播数据,并经由本地转发的。
启用本地的“使用直播流源服务器功能”后,当前配置的UMS服务器即可作为直播源服务器,为下级UMS服务器提供直播信息同步服务和直播视频流传输服务。
UMS服务器在进行上下级组网同步直播信息和直播数据流的同时,还能对用户提供视音频数据的点播和直播功能。下图描绘的是使用UMS进行直播组网后的效果图:
从版本1.8.9开始,Ultrant Media Server引入了一种新的服务器程序,即媒体内容访问控制服务器(UMAS,即Ultrant Media Aess Service)。UMAS为Ultrant Media Server服务器系统提供了强大而灵活的网络授权功能,可以有效地保护您的媒体内容。
4.1 UMAS服务模式介绍
UMAS是一个口令生成与管理服务器软件。UMAS提供访问口令的生成、管理与分发功能,并提供友好的开发集成接口。UMAS与UMS对外服务主程序的协作图如下:
或见下图:
4.2配置UMAS及UMS以使用访问控制功能
您可以通过UMSMonitor程序来配置UMAS服务,以及配置UMS与UMAS的连接参数。
4.2.1配置UMAS服务
请首先确保UMAS服务已经安装。打开UMSMonitor配置工具(方法见2.2),您可以从已安装的服务列表中查看UMAS服务是否已经安装。要配置UMAS服务,先用鼠标选中Ulrant Media Aess Service(UMAS)行,面板右边的“配置服务”按钮,即会弹出UMAS服务的配置页面,如下图。其中,口令分发服务相关参数影响UMS主服务程序与UMAS服务的连接,包括口令分发服务配置栏目和口令分发服务连接设置栏目;口令获取服务相关参数影响通过HTTP连接接口创建并返回口令功能,该部分设置包括口令获取服务配置和口令获取服务连接设置栏目。要获取各个参数的使用方法,请将鼠标移动至相关文本框,您可以通过界面提示信息来修改参数。
注意:这里设置的IP是UMAS服务要绑定的IP,通常设置为0.0.0.0,即绑定任意;两个端口值分别是UMAS要监听的口令分发服务端口和口令获取服务端口,配置适当的UMS服务主程序将连接到口令分发服务端口与UMAS进行通信,Web系统集成则需要后端服务脚本通过口令获取服务端口创建和获取访问控制口令。与上述两个端口对应的口令则是服务的接入口令。
4.2.2配置UMS以连接UMAS
要配置UMS服务,请打开UMSMonitor配置工具(方法见2.2),先用鼠标选中Ulrant Media Server(UMS)行,面板右边的“配置服务”按钮,即会弹出UMS服务的配置页面,再选中“综合配置”页面,如下图所示。
上图中,右下角的“媒体访问控制配置”包含了需要配置的若干选项。其中,UMAS服务器是UMAS服务器软件对外提供服务的IP(注意:这个IP跟章节3.2.1配置的UMAS的绑定不是一回事);UMAS服务器端口应与章节3.2.1中配置的分发服务器端口一致;UMAS服务器口令应与章节3.2.1中配置的分发服务器口令一致。
注意:一旦您选定连接访问控制服务器(UMAS)选项,对于所有访问该UMS服务的连接,均需提供正确的访问控制口令才能访问媒体内容,否则将无法继续访问媒体内容。该功能必须与UMAS一起使用,您需要参照章节3.2.1和章节3.3来设计您的内容管理系统。
4.3 UMAS内部集成接口
UMAS为方便与现有web系统集成,设计为通过标准HTTP请求创建并获取口令,在此同时,UMAS会自动将新生成的访问口令分发到连接至自身的UMS服务器。UMAS与web系统以及UMS主服务器程序可以分别部署在不同的硬件服务器上。参数中文释义参数项说明页面 gettoken UMAS提供的获取访问口令的接口页面(内部虚拟页面)。服务接入口令 token外部应用访问口令获取接口必须提供的接入口令,该口令通过UMSMonitor程序设置,是为了防止不合法用户使用口令获取功能。应用名称 设置要获取的口令所能访问的应用名称,如果不设置该参数,则获取的口令可以访问所有可用应用。有效时间 duration设置要获取的口令的有效时间,超过有效时间的访问口令将不再起作用。(数值类型:整数;单位:秒)使用次数 limit设置要获取的口令的使用次数,超过使用次数的访问口令将不再起作用。(数值类型:整数;单位:次)。
注意:如果一个访问口令在有效次数内超过有效时间,其仍会失去有效*。返回格式 format设置UMAS返回的口令的格式。(数值类型:枚举(xml和json),如果不设置则返回文本类型)。返回的xml格式举例:
<?xml version=1.0 encoding=utf-8?>
<Token>CiQY56Fy6X65ltXH</Token>
返回的json格式举例:
{Token:xDDR4V07Iqyn3n}
返回的文本格式举例:
39VvZGpnrmVcsSiZ 4.4.接口使用示例
在使用之前请先确保UMAS服务器程序在正常运行,并开启相关的防火墙端口。您需要先向UMAS管理员获取UMAS对外提供服务的IP和端口值,以及服务访问口令,通过下述形式访问UMAS服务以获取媒体访问控制口令(protocol仅支持HTTP):
{protocol}://{umas_ip}:{umas_port}/gettoken?token={umas_token}&=vod&duration=100&limit=10&format=xml
4.5.媒体访问控制口令的使用
媒体访问控制口令是一个16位的字符串,在播放器与UMS主服务器程序建立RTMP连接的时候使用,使用方式如下(protocol仅支持rtmp、rtmpe):
{protocol}://{ums_ip}:{ums_port}/{_name}?token={从UMAS获取的媒体访问控制口令}