网络直播平台的实现技术有哪些?大概架构是如何
一视音频的采集和编码技术
编码技术不仅包括算法实现,还涉及到通过是通过x86平台实现还是通过嵌入式方式实现。
二视音频的流媒体传输技术。目前通常使用的方式主要包括:
1通过HTTP协议传输,需要通过技术开发来实现高性能的HTTP流媒体服务器;
2通过RTMP协议传输,需要通过技术开发来实现高性能的RTMP流媒体服务器;
3通过UDP协议传输,这种方式通常用于大规模的可控网络中,比如IPTV电视直播应用,通过交换机即可支持这种传输方式;
4通过P2P方式传输,P2P方式所用的传输协议可以由用户自主定义,并且可以基于UDP或TCP来实现,这种方式通常也是用于
超大规模组网环境中。
三CDN内容分发技术。
需要自主开发实现支持流媒体的CDN内容分发软件平台,来完成内容从源站节点到各边缘节点服务器的调度。
这方面的技术已经很成熟,目前有多家这类产品提供商,也有多家CDN服务提供商(软件平台、硬件服务器、出口带宽整体租用)。
四终端解码技术。
解码技术主要根据终端的类型分为如下几类:
1PC端解码技术
比如当前视频网站采用的H264视频解码技术(AdobeFlashPlayer)、VLC和FFMPEG这种桌面客户端软件(可支持H264、H265等大部分视音频格式的解码)
2移动终端解码技术
目前主要分为Android和iOS量大阵营,两大移动平台的视音频解码实现方式也主要分为两种,一种是通过设备自带的GPU硬件解码,另一种是通过软件方式调用中央处理器来解码。
是RTSP和RTMP网络协议,现在的摄像头都是网络摄像头,IPcam。海康威视支持输出RTSP协议,可以按照海康的RTSP写出他们直接输出的视频流地址,然后通过800li的外部信号适配器软件转接成RTMP进入800li media server进行嵌入网页分发,可以PC,手机和微信公众号进行观看。
sewise流媒体服务器软件系统是一整套流媒体编码、分发和存储的软件系统,包含直播、点播、虚拟直播、剪切、转码、视频管理系统。这些软件支持多屏多系统播放,终端客户使用手机、平板、电脑、电视等终端,ios、安卓、windows、linux等系统,都能支持播放。 UMS通过使用RTMP协议向Flash Player传输或接收多种比特率的直播/点播媒体流、数据以及远程调用信息UMS服务器支持基于Adobe Flash/AIR技术平台的流媒体点播/直播及其他功能
AMS流媒体服务系统是一套完整的基于IP网络的音视频应用平台,采用模块化,跨平台的架构设计,采用自主研发的高性能流媒体服务引擎,支持多种主流流媒体协议(RTP、RTSP、RTMP、http、HLS等);支持直播、点播、录播等多种应用模式;支持PC机、手机、机顶盒等多种接入终端。方便用户建立多种应用模式
21 使用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服务以使修改生效,选择“确定”是配置生效。
22 测试点播功能
要使用点播功能,您需要自己准备一个FLV格式的视频文件,并将其拷贝至任一媒体库路径下(媒体库路径可以通过UMSMonitor来添加),或将该FLV格式视频文件所在路径添加至媒体库路径。
视频文件及媒体库路径准备好后,请确保修改的设置已经生效,以及文件名没有冲突。如果您使用的是安装程序自带的Nginx Web服务器,请将nginx安装目录下html子文件夹中的vodhtml文件用记事本打开;如果您使用已有的Web服务器,请将Web服务器根目录下的UMS\vodhtml用记事本打开,找到下述代码:
soaddVariable('file','6roomsflv');
soaddVariable('start','0');
soaddVariable('streamer','rtmp://127001:1935/vod');
将127001改为您当前服务器的IP地址;如果您使用自己准备的FLV格式视频文件,请将vodhtml文件中上述代码中的“6roomsflv”改为您自己准备的视频文件名称。
如果您使用安装程序自带的Nginx Web服务器,您可以通过浏览器访问http://{服务器IP地址}/vodhtml来访问点播页面;如果您使用您的计算机原有的Web服务器,您可以通过浏览器访问http://{服务器IP地址}/UMS/vodhtml来访问点播页面。
播放页面正常出现后,点击播放器即可播放。
23 测试直播功能
您可以使用Adobe公司提供的免费软件Adobe Flash Media Live Encoder31来测试UltrantMedia Server软件的直播功能。
231 安装Adobe Flash Media Live Encoder31
安装过程及帮助详见Adobe官方网站。
232 准备摄像设备
您可以使用USB网络摄像头或专业的视频采集卡(需要Adobe Flash Media Live Encoder31程序能够识别)来作为视频源。
233 使用Adobe Flash Media Live Encoder31发布直播流
打开Adobe Flash MediaLive Encoder31软件,确保视频采集设备和音频采集设备能正常工作,正常工作的硬件设备看似应该如下图所示:
请正确设置好坐图红色矩形框所标注的位置,其中,FMS URL位置处的URL地址应该为”rtmp://{UltrantMedia Server所在服务器IP地址}/live”,Stream位置处应该为”livestream”。设置完成后,要首先按下”Connect”按钮,如果“Connect”按钮上的文字变成“Disconnect”,则表明连接成功;然后按最下边红色矩形框标注的“Start”按钮,以启动直播发布。正常工作的Adobe Flash Media LiveEncoder31看似应该如下图所示:
234 查看直播视频
如果您使用的是安装程序自带的NginxWeb服务器,请将nginx安装目录下html子文件夹中的livehtml文件用记事本打开;如果您使用已有的Web服务器,请将Web服务器根目录下的UMS\livehtml文件用记事本打开,找到下述代码:
soaddVariable('file','livestream');
soaddVariable('streamer','rtmp://127001:1935/live');
将127001改为您当前服务器的IP地址;如果您重新命名了发布的视频流的名称,请将livehtml文件中上述代码中的“livestream”改为您自己命名的视频流的名称。
如果您使用安装程序自带的Nginx Web服务器,您可以通过浏览器访问http://{服务器IP地址}/livehtml来访问直播页面;如果您使用您的计算机原有的Web服务器,您可以通过浏览器访问http://{服务器IP地址}/UMS/livehtml来访问直播页面。 UMS支持可伸缩的无限级连直播集群组网功能,通过简单的可视化配置,您就可以将多台装有UMS服务器软件的服务器组成一个统一的直播网络群,其中的每一个节点都可以对外提供一致的直播服务。
31使用UMSMonitor管理工具配置直播集群组网功能
打开UMSMonitor的服务配置界面,找到其中的”CDN配置”选项页,如下图:
如果您选择“使用直播流转发服务器功能”,则UMS可以作为直播流转发服务器使用。当您选择“应用”配置,选择“确定”并重启服务使配置生效后,您当前配置的UMS服务器软件将自动连接到上级UMS直播源服务器的同步地址和端口,以获取直播同步信息。注意:您必须启用上级UMS服务器的“使用直播流服务器功能”,也就是启用上级UMS服务器同等的上述配置页面的下半部分选项。只有在与上级UMS服务器的同步端口和同步口令一致的情况下,当前配置的UMS服务器才能连接到上级直播源服务器的同步端口,才能进行直播信息同步。
“上级直播源服务器服务地址”理论上与“上级直播源服务器同步地址”是一致的,都是上级服务器的地址(当设置UMS的对外视频直播服务IP与UMS对外直播同步服务IP不一致的情况除外),“上级直播源服务器服务端口”就是上级UMS服务器在UMSMonitor配置工具服务配置页面中的“基本配置”页面上的“IP地址和端口”栏中设置的监听端口,上级UMS通过这个端口对外提供视频数据直播服务。当前配置的UMS服务器也是从上级服务器的对外视频数据直播服务端口获取实时视频直播数据,并经由本地转发的。
启用本地的“使用直播流源服务器功能”后,当前配置的UMS服务器即可作为直播源服务器,为下级UMS服务器提供直播信息同步服务和直播视频流传输服务。
UMS服务器在进行上下级组网同步直播信息和直播数据流的同时,还能对用户提供视音频数据的点播和直播功能。下图描绘的是使用UMS进行直播组网后的效果图:
从版本189开始,Ultrant Media Server引入了一种新的服务器程序,即媒体内容访问控制服务器(UMAS,即Ultrant Media Access Service)。UMAS为Ultrant Media Server服务器系统提供了强大而灵活的网络授权功能,可以有效地保护您的媒体内容。
41 UMAS服务模式介绍
UMAS是一个口令生成与管理服务器软件。UMAS提供访问口令的生成、管理与分发功能,并提供友好的开发集成接口。UMAS与UMS对外服务主程序的协作图如下:
或见下图:
42 配置UMAS及UMS以使用访问控制功能
您可以通过UMSMonitor程序来配置UMAS服务,以及配置UMS与UMAS的连接参数。
421配置UMAS服务
请首先确保UMAS服务已经安装。打开UMSMonitor配置工具(方法见22),您可以从已安装的服务列表中查看UMAS服务是否已经安装。要配置UMAS服务,先用鼠标选中Ulrant Media Access Service(UMAS)行,点击面板右边的“配置服务”按钮,即会弹出UMAS服务的配置页面,如下图。其中,口令分发服务相关参数影响UMS主服务程序与UMAS服务的连接,包括口令分发服务配置栏目和口令分发服务连接设置栏目;口令获取服务相关参数影响通过HTTP连接接口创建并返回口令功能,该部分设置包括口令获取服务配置和口令获取服务连接设置栏目。要获取各个参数的使用方法,请将鼠标移动至相关文本框,您可以通过界面提示信息来修改参数。
注意:这里设置的IP地址是UMAS服务要绑定的IP地址,通常设置为0000,即绑定任意地址;两个端口值分别是UMAS要监听的口令分发服务端口和口令获取服务端口,配置适当的UMS服务主程序将连接到口令分发服务端口与UMAS进行通信,Web系统集成则需要后端服务脚本通过口令获取服务端口创建和获取访问控制口令。与上述两个端口对应的口令则是服务的接入口令。
422配置UMS以连接UMAS
要配置UMS服务,请打开UMSMonitor配置工具(方法见22),先用鼠标选中Ulrant Media Server(UMS)行,点击面板右边的“配置服务”按钮,即会弹出UMS服务的配置页面,再选中“综合配置”页面,如下图所示。
上图中,右下角的“媒体访问控制配置”包含了需要配置的若干选项。其中,UMAS服务器地址是UMAS服务器软件对外提供服务的IP地址(注意:这个IP地址跟章节321配置的UMAS的绑定地址不是一回事);UMAS服务器端口应与章节321中配置的分发服务器端口一致;UMAS服务器口令应与章节321中配置的分发服务器口令一致。
注意:一旦您选定连接访问控制服务器(UMAS)选项,对于所有访问该UMS服务的连接,均需提供正确的访问控制口令才能访问媒体内容,否则将无法继续访问媒体内容。该功能必须与UMAS一起使用,您需要参照章节321和章节33来设计您的内容管理系统。
43 UMAS内部集成接口
UMAS为方便与现有web系统集成,设计为通过标准HTTP请求创建并获取口令,在此同时,UMAS会自动将新生成的访问口令分发到连接至自身的UMS服务器。UMAS与web系统以及UMS主服务器程序可以分别部署在不同的硬件服务器上。 参数中文释义 参数项 说明 页面 gettoken UMAS提供的获取访问口令的接口页面(内部虚拟页面)。 服务接入口令 token 外部应用访问口令获取接口必须提供的接入口令,该口令通过UMSMonitor程序设置,是为了防止不合法用户使用口令获取功能。 应用名称 app 设置要获取的口令所能访问的应用名称,如果不设置该参数,则获取的口令可以访问所有可用应用。 有效时间 duration 设置要获取的口令的有效时间,超过有效时间的访问口令将不再起作用。(数值类型:整数;单位:秒) 使用次数 limit 设置要获取的口令的使用次数,超过使用次数的访问口令将不再起作用。(数值类型:整数;单位:次)。
注意:如果一个访问口令在有效次数内超过有效时间,其仍会失去有效性。 返回格式 format 设置UMAS返回的口令的格式。(数值类型:枚举(xml和json),如果不设置则返回文本类型)。返回的xml格式举例:
<xml version =10 encoding=utf-8>
<Token>CiQY56Fy6X65ltXH</Token>
返回的json格式举例:
{Token:xDDcnR4V07Iqyn3n}
返回的文本格式举例:
39VvZGpnrmVcsSiZ 44接口使用示例
在使用之前请先确保UMAS服务器程序在正常运行,并开启相关的防火墙端口。您需要先向UMAS管理员获取UMAS对外提供服务的IP地址和端口值,以及服务访问口令,通过下述形式访问UMAS服务以获取媒体访问控制口令(protocol仅支持HTTP):
{protocol}://{umas_ip}:{umas_port}/gettokentoken={umas_token}&app=vod&duration=100&limit=10&format=xml
45媒体访问控制口令的使用
媒体访问控制口令是一个16位的字符串,在播放器与UMS主服务器程序建立RTMP连接的时候使用,使用方式如下(protocol仅支持rtmp、rtmpe):
{protocol}://{ums_ip}:{ums_port}/{app_name}token={从UMAS获取的媒体访问控制口令}
功能模块概述
通过obs客户端推流到nginx流媒体服务器上,对流媒体用ffmpeg将流剪切为若干段ts流文件并保存到临时目录中,通过访问m3u8格式拼接ts流文件段来观看直播。
推流端
采用开源工具OBS客户端进行推流
根据项目的推流地址,填入OBS客户端(下载地址)中,并设置场景,保存后重启,便可开始推流。
为更加稳定的推流,建议使用以上链接中的v0625稳定版本,按提示安装完成后,打开设定在广播设定中,伺服器统一填写我们项目的流媒体接收流地址:
rtmp://127001:1935/hls/
以上这几个数据都是可以更改的。
127001——你的流媒体服务器ip
1935——你的rtmp端口号
hls——你的直播nginx配置模块
具体在下文中也有详细介绍
配置地址
回到主界面,右键来源,选择添加视频捕捉设备或获取窗口等(相关设置默认即可),点击开始串流,便可开始直播。
添加场景
图为添加视频捕捉设备后的直播画面:
直播中
流媒体服务器
Nginx接收推流模块
rtmp_auto_push on;
rtmp {
server {
listen 1935;
application hls {
live on;
hls on;
hls_path /tmp/hls;
on_publish 项目地址/liveOnPublish;
on_publish_done 项目地址/liveOnDone;
notify_method get;
}
}
}
配上我在word上的注解
注解1
Nginx处理直播流模块
http {
server {
listen 80;
server_name localhost;
location /hls {
secure_link $arg_st,$arg_e;
secure_link_md5 key$arg_e;
subs_filter ts 'tsst=$arg_st&e=$arg_e&clentip=$remote_addr';
subs_filter_types application/vndapplempegurl;
if ($secure_link = "") {
return 402;
}
if ($secure_link = "0") {
return 403;
}
# Serve HLS fragments
types {
application/vndapplempegurl m3u8;
video/mp2t ts;
}
root /tmp;
add_header Cache-Control no-cache;
}
}
}
注解2
项目部署服务器
流媒体服务器不通过项目服务器,整个直播过程的推流和处理流都在流媒体服务器上进行。项目服务器主要进行直播地址加密处理意见推流开始和结束触发的方法(liveOnPublish(),liveOnDone())已及对直播地址加密
播放端
直接通过HTML5中的<video>标签设置src来播放直播流。如:
<video src="pro/livem3u8st=UM/L8jdfTlY2b1j1F6XSxA==&e=1468548530
" controls="controls"></video>
存在的问题
延迟待测试(不科学的数据是安卓手机普遍在30-40s,苹果手机在20-30s)
并发待测试
掉帧待测试(网速影响大,网络好几乎不掉帧,网络差掉一半,用户体验差)
手机上可以支持RTMP推流的软件有云图TV、风云直播、VST全聚合手机版等等;直接打开手机应用市场搜索电视直播看看;有的电视台节目可以直接微信关注公众号,然后微信直接看电视直播。
RTMP
是Real Time Messaging Protocol(实时消息传输协议)的首字母缩写。该协议基于TCP,是一个协议族,包括RTMP基本协议及RTMPT/RTMPS/RTMPE等多种变种。
RTMP是一种设计用来进行实时数据通信的网络协议,主要用来在Flash/AIR平台和支持RTMP协议的流媒体/交互服务器之间进行音视频和数据通信。
其实行业内目前是点播采用HTTPflv基本就可以搞定了,还可以加上一些私有的头验证等。
而直播的话,大部分还是采用RTMP或者私有协议,原因是延时会比较小,RTMP本身也是为了直播设计的。
0条评论