免费流媒体服务器软件 如何搭建一个局域网流媒体服务器
大家好,关于免费流媒体服务器软件很多朋友都还不太明白,今天小编就来为大家分享关于如何搭建一个局域网流媒体服务器的知识,希望对各位有所帮助!
流媒体服务器的sewise软件系统
sewise流媒体服务器软件系统是一整套流媒体编码、分发和存储的软件系统,包含直播、点播、虚拟直播、剪切、转码、视频管理系统。这些软件支持多屏多系统播放,终端客户使用手机、平板、电脑、电视等终端,ios、安卓、windows、linux等系统,都能支持播放。 UMS通过使用RTMP协议向Flash Player传输或接收多种比特率的直播/点播媒体流、数据以及远程调用信息.UMS服务器支持基于Adobe Flash/AIR技术平台的流媒体点播/直播及其他功能.
AMS流媒体服务系统是一套完整的基于IP网络的音视频应用平台,采用模块化,跨平台的架构设计,采用自主研发的高性能流媒体服务引擎,支持多种主流流媒体协议(RTP、RTSP、RTMP、http、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服务器,您可以通过浏览器访问http://{服务器IP地址}/vod.html来访问点播页面;如果您使用您的计算机原有的Web服务器,您可以通过浏览器访问http://{服务器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服务器,您可以通过浏览器访问http://{服务器IP地址}/live.html来访问直播页面;如果您使用您的计算机原有的Web服务器,您可以通过浏览器访问http://{服务器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 Access 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 Access 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程序设置,是为了防止不合法用户使用口令获取功能。应用名称 app设置要获取的口令所能访问的应用名称,如果不设置该参数,则获取的口令可以访问所有可用应用。有效时间 duration设置要获取的口令的有效时间,超过有效时间的访问口令将不再起作用。(数值类型:整数;单位:秒)使用次数 limit设置要获取的口令的使用次数,超过使用次数的访问口令将不再起作用。(数值类型:整数;单位:次)。
注意:如果一个访问口令在有效次数内超过有效时间,其仍会失去有效性。返回格式 format设置UMAS返回的口令的格式。(数值类型:枚举(xml和json),如果不设置则返回文本类型)。返回的xml格式举例:
<?xml version=1.0 encoding=utf-8?>
<Token>CiQY56Fy6X65ltXH</Token>
返回的json格式举例:
{Token:xDDcnR4V07Iqyn3n}
返回的文本格式举例:
39VvZGpnrmVcsSiZ 4.4.接口使用示例
在使用之前请先确保UMAS服务器程序在正常运行,并开启相关的防火墙端口。您需要先向UMAS管理员获取UMAS对外提供服务的IP地址和端口值,以及服务访问口令,通过下述形式访问UMAS服务以获取媒体访问控制口令(protocol仅支持HTTP):
{protocol}://{umas_ip}:{umas_port}/gettoken?token={umas_token}&app=vod&duration=100&limit=10&format=xml
4.5.媒体访问控制口令的使用
媒体访问控制口令是一个16位的字符串,在播放器与UMS主服务器程序建立RTMP连接的时候使用,使用方式如下(protocol仅支持rtmp、rtmpe):
{protocol}://{ums_ip}:{ums_port}/{app_name}?token={从UMAS获取的媒体访问控制口令}
如何搭建一个局域网流媒体服务器
所谓流媒体技术,是指将连续的影像和声音信息经过压缩处理后放在网站服务器上,让用户能够一边下载一边观看、收听(即所谓的“在线欣赏”),而不需要等整
个压缩文件下载到自己的机器上才可以欣赏的网络传输技术。目前,在这个领域中的竞争者主要有微软、RealNetworks、Apple三家公司,例如微
软新近发布了Windows Media Services 9、RealNetworks公司新近发布的Helix
Platform、Apple新近发布的Darwin streaming server 4.1,意图在流媒体领域大干一场。
一般来说,一个完整的流媒体服务系统需要三个部分组成:编码器、流服务器和播放器。编码器通过对内容来源(如MP3文件或者麦克风输入)进行编码,并将编
码过的内容发送到流服务器;流服务器再将它们发布到Internet,这样客户端的播放器只要连接到流服务器就可以进行在线播放了。
利用Winamp架设MP3网络电台
当我们静静地在欣赏美妙的MP3音乐时,你是否曾经考虑过将这些原本属于个人的MP3音乐通过网络在局域网内进行发布,甚至还可以通过Internet进
行发布?这样就可以让遍布世界的朋友们与你一起共享MP3音乐之旅。其实,要做到这一点并不难,你只要将本机创建为一台MP3流媒体服务器,将自己所喜爱
的MP3音乐不停播放,然后通知朋友们访问你的这台MP3服务器就可以了。
说起MP3的播放,使用最广泛的莫过于Winamp了。对于MP3流媒体服务这个领域,Winamp的开发者Nullsoft公司当然不会放弃,专门发布
了面向MP3的流服务器SHOUTcast Server。虽然它的功能没有Windows Media Server和Real
Server强大,但它不仅对硬件的要求极低,更关键的是完全免费,使用起来没有后顾之忧。另外你还需要下载一个名为SHOUTcast DSP
Plug-in的插件,只有安装了这个不起眼的插件,Winamp才能支持流媒体服务。
首先打开Winamp(请注意版本号必须在2.22以上),切换到“Options”|“Preferences”|
“DSP/Effect”标签页,选中“Nullsoft SHOUTcast Source DSP
v1.8.2a[dsp_sc.dll]”下的“Configure”按钮。打开“SHOUTcast
Source”窗口,选择“Output”标签页,如图1所示,在“Address”栏内填入本机的IP地址。如果你想在Internet上广播MP3音
乐,则必须键入本机的外部IP地址,然后就可以从程序组中运行SHOUTcast
DAAS(GUI)程序以启动SHOUTcast服务。这时系统会自动连接到服务器,接下来请返回图1窗口点击“Connect”按钮。如果连接成功,该
按钮会变为“disconnect”字样,这样我们就完成了在本机架设MP3流服务器的全部过程。
架设REAL格式的视频点播中心
如果是架设视频点播服务器,那么选择Real格式是非常明智的。因为RealProducer Plus这款功能强大的软件操作相当简单,每次使用时会弹出一个向导对话框进行操作提示。目前最新版本是10.0,我们只要选择8.5.1以上的版本即可。
从“工具”菜单下选择“创建网页”命令,此时会弹出一个如图2所示的向导式对话框,点击“前进”按钮选择你希望用于创建Web页面的Real多媒体文件。
随后RealProducer会询问是创建“弹出式播放器”还是“嵌入式播放器”,一般建议选择后者,因为这样所需要的系统资源更低,当然启动速度也更
快。至于播放器的界面,可以选择“标准播放器”,很快就可以创建成功。
最后,RM文件对象所在的目录会增加一些文件,请将这些文件与RM对象一起上传,不过要注意保证RM文件与HTML文件在同一目录下,否则播放器可能无法找到播放对象。
架设WMP流媒体服务器
微软的手伸得很长,什么领域都要插足一下。凭借着Windows操作系统的影响力,Windows Media Player市场占有率越来越高,而微软的*.asf、*.wmv、*.wma、*.avi等格式也开始被越来越多的用户所接受。
架设WMP流媒体服务器,你需要安装Windows Media
Encoder才行,目前最新版本是9.0简体中文版。如图3所示,我们应该在这里选择“广播实况事件”,接着选择用来编码的音频和视频设备。注意请事先
将音频和视频设备与计算机正确连接,否则会无法检测到。接着你还需要指定服务和发布点,当然也可以使用现有的发布点。然后Windows Media
Encoder会自动创建服务器,并给出HTTP连接地址与局域网内部地址,请记住这些内容,最后点击“开始”按钮正式启动WMP流媒体服务器。
接下来,我们就可以将刚才记下的HTTP连接地址与局域网内部地址告诉给朋友们。他们只要打开IE,输入正确的IP地址和端口号,很快就可以访问WMP流媒体服务器。
架设QT流媒体服务器
平时,我们见到的大多是打造MWF(矢量地图窗口文件,Map Window
File)或RM流服务器,可是你可知道QuickTime(以下简称QT)流媒体服务器应该如何来打造吗?其实,借助苹果的QuickTime
Streaming Server工具,我们可以在短时间内快速打造出一台QT流服务器。
首先我们要准备一些工具,QuickTime媒体播放工具当然是必不可少的。目前最新版本是6.5简体中文版,到处都可以找到,或者直接到苹果公司的网站
下载,并且需要在服务器和客户端同时安装。Perl语言解析器,最低版本要求是5.0以上。QuickTime Streaming
Server与用户见面最早是在1999年,当时以其开放源代码和基于标准的实时传输协议/实时流协议(RTP/RTSP)引擎深深地动摇了流媒体工业的
基础,目前的最新版本是5.0,下载文件共9.2MB。
从地址可以免费下载,但你必须拥有Apple的注册用户名才能登录(注册是免费的),这里有Mac OS X、Red
Hat、Solaris、Windows
NT/2000/XP等版本可供选择。下载回来的是一个自解压文件,释放后执行Install.bat运行安装程序,运行过程在命令提示符窗口中完成,最
后还需要设置登录用户名、密码,如图4所示,当看到“Setup
Complete!”的提示信息时即大功告成。QT流媒体服务器建设过程和RM类似,在这里就不再赘述。
如何共享音频和视频
共享音频
前面,我们利用Winamp、SHOUTcast Server将本机架设为一台MP3流服务器,那么该如何让遍布天南海北的朋友或局域网中的同事欣赏这些美妙音乐呢?
这有两种方法:一种是打开Winamp,从“Play”菜单下选择“Location”命令,或者直接键入“Ctrl-L”组合键打开一个对话框,然后在
这里键入MP3流服务器的URL地址或者IP地址、端口号(缺省为8000),例如“”或者“”即可收听;另一种方法则更为简单,从IE中打开“”进入
Web管理页面,如图5所示,然后点击“收听”按钮就可以在线收听MP3流音乐。
共享视频
虽然苹果的QuickTime Player的市场占有率远远不如Real或Windows Media Player,但忠实的用户依然不少。而且苹果毕竟是网络流媒体的开山鼻祖,因此许多最新大片都是采用QT格式。
首先必须在机器上启动QT服务,然后通知朋友们在远程计算机中打开QuickTime。从“文件”菜单中选择“在新的播放窗口中打开URL”命令,键入
“rtsp://server/file.mov”来访问QT流服务器以实现远程播放。这里的“server”是服务器的IP地址,“file.mov”
是媒体文件名,默认的RTSP传输端口是554端口。如果网络连接没有什么问题的话,如图6所示,那么你很快就可以连接成功。
建立播放列表或点播系统
辛辛苦苦架设了一台流媒体服务器,我们还可以建立播放列表或点播系统,甚至可以进行网络直播,反正已经用上了宽带,不用也是浪费。
配置QT流媒体服务器
打开IE,在地址栏中输入“”,这里的“server”代表服务器的IP地址。如果前面的配置没有什么问题的话,很快就会进入如图7所示的管理页面,这里
以列表形式显示了当前的系统资源占用情况和相关的服务器信息。我们可以在这里查看连接到服务器的用户类型、IP地址、数据速率、数据传输量、包丢失比例、
连接时间、连接文件等内容,也可以在这里设置映射文件夹、加密传输、最大连接用户数、分配带宽、重置密码、更改端口,如果你需要的话,还可以查看错误日志
和操作日志。
创建播放列表
点击图7窗口右侧的“New MP3 Playlist”或“New
Movie
Playlist”按钮,我们可以创建一个MP3或影片的播放列表。不过这里需要说明的是,你需要将相关的媒体文件复制到C:\Program
Files\Darwin Streaming Server\Movies文件夹中才行。
如图8所示,我们可以在这里通过“Weight”旁边的小三角箭头重新调整播放列表的播放顺序,可惜的是QuickTime Streaming
Server对简体中文的支持十分差劲,显示的竟然是一些乱码字符。最后,点击窗口右下角的“Save
Changes”按钮就可以将这份新建的播放列表保存下来,以后如果需要更改的话可以选择“Edit Playlist”重新配置。
不过,如果你希望其他用户也能访问这份播放列表文件,还必须点击“Avaliable Playlists”列表框中的“Status”下的播放按钮,也就是让“Status”列的“Stopped”变为“Playing”才行。
实现网络直播
如果你还想在播放完MP3歌曲后说上一段话,那么简单的很,只要一个话筒就行了。不过,还需要在Winamp中进行一些设置,如图9所示,在“Input
Device”下拉列表框中选择“Soundcard Input”项,这样才会出现图中的SoundCard
Mixer设置项。如果使用默认的设置“Winamp(Recommended)”的话就只有Input Levels一项了,下面还有“Music
Level”、“BGMusic Level”、“Mic Level”几个滑块可以调节音量的大小,而“Fade Time”是用来设置移出时间值。
现在,你无需进行其它设置,准备一番后,清清嗓子,点击“Push to Talk”按钮,然后再按下“Lock”按钮锁定当前话音输入模式。接下来就可以对着麦克风开始你的网络直播之旅了,结束请再次按下“Lock”按钮解锁。
流媒体服务器软件是干什么用的
辛辛苦苦找到的,够详细吧?
1引言
随着互联网的飞速发展,流媒体技术的应用越来越广泛,从网上广播、电影播放到远程教学以及在线的新闻网站等都用到了流媒体技术。但现有公开文献所报道的大多是利用现有的流媒体服务器来搭建一个流媒体服务系统,或者是针对流媒体数据的编码方式所进行的研究。本文对流媒体服务器技术的研究重点在于如何建立一个服务器,并且在实现流媒体传输的两个基本协议RTP/RTCP的基础上构建一个基本的流媒体服务器。
2流媒体技术简介
2.1“流”的定义
现在网上传输视频、音频主要有下载(Download)和流式传输(Streaming)两种方式。流式传输是连续传送视/音频信号,当流媒体在客户机播放时其余部分在后台继续下载。流式传输有顺序流式传输(Progressive Streaming)和实时流式传输(Realtime Streaming)两种方式。实时流式传输是实时传送,特别适合现场事件,实时流式传输必须匹配连接带宽,这意味着图像质量会因网络速度降低而变差,以减少对传输带宽的需求。“实时”的概念是指在一个应用中数据的交付必须与数据的产生保持精确的时间关系。
在Internet中使用流式传输技术的连续时基媒体就称为流媒体,通常也将其视频与音频称为视频流和音频流。实现流式传输一般都需要专用服务器和播放器。
2.2流媒体系统组件
流媒体是由各种不同软件构成的,这些软件在各个不同层面上互相通信,基本的流媒体系统包含以下3个组件:
播放器(Player),用来播放流媒体的软件。
服务器(Server),用来向用户发送流媒体的软件。
编码器(Encode),用来将原始的音频视频转化为流媒体格式的软件。
这些组件之间通过特定的协议互相通信,按照特定的格式互相交换文件数据。有些文件中包含了由特定编解码器解码的数据,这种编解码器通过特定算法压缩文件的数据量。
3流媒体服务器的基本功能和服务方式
3.1流媒体服务器的主要功能
(1)响应客户的请求,把媒体数据传送给客户。流媒体服务器在流媒体传送期间必须与客户的播放器保持双向通信(这种通信是必需的,因为客户可能随时暂停或快放一个文件)。
(2)响应广播的同时能够及时处理新接收的实时广播数据,并将其编码。
(3)可提供其他额外功能,如:数字权限管理(DRM),插播广告,分割或镜像其他服务器的流,还有组播。
3.2流媒体服务器的服务方式
(1)单播。在客户端与媒体服务器之间建立一个单独的数据通道,从1台服务器送出的每个数据包只能传送给1个客户机。
(2)组播。在以组播技术构建的网络上,允许路由器一次将数据包复制到多个通道上。
(3)点播与广播。点播连接是客户端与服务器之间的主动的连接,在点播连接中,用户通过选择内容项目来初始化客户端连接,用户可以开始、停止、后退、快进或暂停流。广播指的是用户被动地接收流,在广播过程中,数据包的单独一个拷贝将发送给网络上的所有用户,客户端接收流,但不能控制流。
4构建流媒体服务器
4.1 RTP/RTCP协议简介
实时传输协议RTP(Realtime Transport Protocol):是针对Internet上多媒体数据流的一个传输协议,由IETF(Internet工程任务组)作为RFC1889发布。RTP被定义为在一对一或一对多的传输情况下工作,其目的是提供时间信息和实现流同步。RTP的典型应用建立在UDP上,但也可以在TCP或ATM等其他协议之上工作。RTP本身只保证实时数据的传输,并不能为按顺序传送数据包提供可靠的传送机制,也不提供流量控制或拥塞控制,它依靠RTCP提供这些服务。
实时传输控制协议RTCP(Realtime Transport Control Protocol):负责管理传输质量在当前应用进程之间交换控制信息。在RTP会话期间,各参与者周期性地传送RTCP包,包中含有已发送的数据包的数量、丢失的数据包的数量等统计资料,因此,服务器可以利用这些信息动态地改变传输速率,甚至改变有效载荷类型。RTP和RTCP配合使用,能以有效的反馈和最小的开销使传输效率最佳化,故特别适合传送网上的实时数据。
RTCP主要有4个功能:
(1)用反馈信息的方法来提供分配数据的传送质量,这种反馈可以用来进行流量的拥塞控制,也可以用来监视网络和用来诊断网络中的问题;
(2)为RTP源提供一个永久性的CNAME(规范性名字)的传送层标志,因为在发现冲突或者程序更新重启时SSRC(同步源标识)会变,需要一个运作痕迹,在一组相关的会话中接收方也要用CNAME来从一个指定的与会者得到相联系的数据流(如音频和视频);
(3)根据与会者的数量来调整RTCP包的发送率;
(4)传送会话控制信息,如可在用户接口显示与会者的标识,这是可选功能。
4.2 RTP/RTCP工作过程
工作时,RTP协议从上层接收流媒体信息码流(如H.263),装配成RTP数据包发送给下层,下层协议提供RTP和RTCP的分流。如在UDP中, RTP使用一个偶数号端口,则相应的RTCP使用其后的奇数号端口。RTP数据包没有长度限制,它的最大包长只受下层协议的限制。
4.3服务器的算法
服务器软件模型主要有两种,即并发服务器和循环服务器。循环服务器(Iterative Server)是指在一个时刻只处理一个请求的服务器。并发服务器(Concurrent Server)是指在一个时刻可以处理多个请求的服务器。事实上,多数服务器没有用于同时处理多个请求的冗余设备,而是提供一种表面上的并发性,方法是依靠执行多个线程,每个线程处理一个请求,从客户的角度看,服务器就像在并发地与多个客户通信。
由于流媒体服务时间的不定性和数据交互实时性的请求,流媒体服务器一般采用并发服务器算法。本文构建了一个基本的流媒体服务器,能够同时响应多个用户的请求,把本地硬盘流媒体文件或实时数据流(H.263格式)发送给用户。在应用中,把客户分为请求实时数据的实时客户和请求文件数据的文件客户两类。主要算法为:
(1)打开设备,分配资源。当设备准备好时,创建一个RTP实时服务线程和一个RTCP实时服务线程。
(2)创建一个UDP套接字并将其绑定到所提供服务的地址之上。
(3)反复调用接收模块,接收来自客户的RTCP报告,根据其类型做出响应。对新实时客户的请求,把客户地址添加到实时服务的客户列表中,对新文件客户的请求,则创建一个新RTP文件服务线程和一个新RTCP文件服务线程;对已经在服务中的客户则根据RTCP报告的内容调整服务。
RTP实时服务线程1:初始化客户列表和RTP首部。
RTP实时服务线程2:从设备读取媒体数据,把数据发送给实时服务列表中的客户。
RTP实时服务线程3:更新RTP首部和统计数据。
RTP实时服务线程4:计算延时,重复第二步。
RTCP实时服务线程1:初始化RTCP首部。
RTCP实时服务线程2:发送发送方报告给实时服务列表中的客户。
RTCP实时服务线程3:计算延时,重复第二步。
RTP文件服务线程1:初始化RTP首部。
RTP文件服务线程2.:从文件读取媒体数据,把数据发送给客户。
RTP文件服务线程3:更新已发送数据的统计信息,为生成发送方报告做准备。
RTP文件服务线程4:计算延时,调整发送速度,正常情况下开始重复第二步。
RTCP文件服务线程1:初始化RTCP首部,发送一个源描述(SDES)报文给客户。
RTCP文件服务线程2:根据已发送数据的统计信息生成发送方报告,发送给客户。
RTCP文件服务线程3:计算延时,正常情况下开始重复第一步。
5流媒体服务器实现中应注意的问题
5.1会话和流的两级分用
一个RTP会话(Session)包括传给某个指定目的地对(Destination Pair)的所有通信量,发送方可能包括多个。而从同一个同步源发出的RTP分组序列称为流(Stream),一个RTP会话可能包含多个RTP流。一个 RTP分组在服务器端发送出去的时候总是要指定属于哪个会话和流,在接收时也需要进行两级分用,即会话分用和流分用。只有当RTP使用同步源标识(SSRC)和分组类型(PTYPE)把同一个流中的分组组合起来,才能够使用序列号(Sequence Number)和时间戳(Timestamp)对分组进行排序和正确回放。
5.2多线程的管理
并发服务器模式要求用多线程来提供服务,所以多线程的管理十分重要。在本文构建的服务器中,不同客户的请求和反馈都由服务器的主线程处理,由于实时数据的独有性,不同实时客户可以共用一个RTP实时服务线程和一个RTCP实时服务线程,这样可以大大减小服务器的负担,而每个文件客户由于请求的文件不同,相应地对速度和开始时间的要求都可能不同,所以需要有自己独有的RTP文件服务线程和RTCP文件服务线程。
RTP服务线程负责把实时数据流发送给客户, RTCP服务线程根据RTP线程的统计数据,产生发送方报告给客户。RTP线程和RTCP线程之间通过一段共享内存交互统计数据,对共享内存必须设置互斥体进行保护,防止出现错误读写。在这种方式下,服务器可以根据每个用户的不同请求和具体情况方便地提供不同的服务。
5.3时间戳的处理
时间戳字段是RTP首部中说明数据包时间的同步信息,是数据能以正确的时间顺序恢复的关键。时间戳的值给出了分组中数据的第一个字节的采样时间(Sampling Instant),要求发送方时间戳的时钟是连续、单调增长的,即使在没有数据输入或发送数据时也是如此。在静默时,发送方不必发送数据,保持时间戳的增长,在接收端,由于接收到的数据分组的序号没有丢失,就知道没有发生数据丢失,而且只要比较前后分组的时间戳的差异,就可以确定输出的时间间隔。
RTP规定一次会话的初始时间戳必须随机选择,但协议没有规定时间戳的单位,也没有规定该值的精确解释,而是由负载类型来确定时钟的颗粒,这样各种应用类型可以根据需要选择合适的输出计时精度。
在RTP传输音频数据时,一般选定逻辑时间戳速率与采样速率相同,但是在传输视频数据时,必须使时间戳速率大于每帧的一个滴答。如果数据是在同一时刻采样的,协议标准还允许多个分组具有相同的时间戳值。
5.4媒体数据发送速度的控制
由于RTP协议没有规定RTP分组的长度和发送数据的速度,因而需要根据具体情况调整服务器端发送媒体数据的速度。对来自设备的实时数据可以采取等时间间隔访问设备缓冲区,在有新数据输入时发送数据的方式,时间戳的设置相对容易。对已经录制好的本地硬盘上的媒体文件,以H.263格式的文件为例,由于文件本身不包含帧率信息,所以需要知道录制时的帧率或者设置一个初始值,在发送数据的时候找出发送数据中的帧数目,根据帧率和预置值来计算时延,以适当的速度发送数据并设置时间戳信息。
5.5多种流同步
RTCP的一个关键作用就是能让接收方同步多个RTP流,例如:当音频与视频一起传输的时候,由于编码的不同,RTP使用两个流分别进行传输,这样两个流的时间戳以不同的速率运行,接收方必须同步两个流,以保证声音与影像的一致。为能进行流同步,RTCP要求发送方给每个传送一个唯一的标识数据源的规范名(Canonical Name),尽管由一个数据源发出的不同的流具有不同的同步源标识(SSRC),但具有相同的规范名,这样接收方就知道哪些流是有关联的。而发送方报告报文所包含的信息可被接收方用于协调两个流中的时间戳值。发送方报告中含有一个以网络时间协议NTP(Network Time Protocol)格式表示的绝对时间值,接着RTCP报告中给出一个RTP时间戳值,产生该值的时钟就是产生RTP分组中的TimeStamp字段的那个时钟。由于发送方发出的所有流和发送方报告都使用同一个绝对时钟,接收方就可以比较来自同一数据源的两个流的绝对时间,从而确定如何将一个流中的时间戳值映射为另一个流中的时间戳值。
6结论
流媒体技术的应用日益广泛,对流媒体技术的研究具有很大的实际意义,本文通过对RTP/RTCP协议的研究,分析流媒体服务器的一般功能和结构,给出构建一个基本的流媒体服务器的实现方案,实验证明可以同时满足多个实时和文件客户的要求,并已经应用于一个远程监控系统中
免费流媒体服务器软件和如何搭建一个局域网流媒体服务器的问题分享结束啦,以上的文章解决了您的问题吗?欢迎您下次再来哦!