基于多终端的移动流媒体直播系统设计与实现

2018-09-29 03:09
实验室研究与探索 2018年8期
关键词:服务平台终端系统

孙 恒

(山东大学 外国语学院 现代教育技术实验室,济南 250100)

0 引 言

伴随着互联网技术的不断发展和移动网络服务质量的逐步改善。移动互联网在我国快速发展、移动用户数量迅猛增长。移动互联网改变人们的学习生活方式,传统PC端架构的互联网应用逐渐向移动端转化,用户通过便携式移动终端设备访问网络进行学习,适用于移动学习的应用逐渐增多。目前,主流网络公开课等学习教育只提供点播和单向直播功能,教师与学生不能进行有效、实时交流互动。相比固定的直播在线课程而言,移动流媒体直播拥有更高的实时性和互动性,教师与学生之间能够实时沟通交流,带来更好地学习体验[1]。

在移动流媒体直播平台开发和建设方面,国内外学者进行大量的研究工作。赵学铭[2]设计一种基于HTML5的交互式移动学习平台,实现交互式学习,但是无法实现师生课堂互动。吴海巍[3]实现基于流媒体技术的移动视频直播系统,仅支持苹果的iOS操作系统,对Android等操作系统兼容性欠缺。周东光[4]开发的基于移动终端的教学直播系统,只是单向直播并且对网络的直播延迟没有调整调度解决方案。

通过对以上研究工作进行整理分析,设计并实现一种基于多终端的移动流媒体直播系统。系统使用多种终端作为直播端采集信息,流媒体在云服务平台进行编码转换,并向最终用户推送,用户可以通过各种终端观看直播。

1 基于多终端的移动流媒体直播系统架构设计

1.1 系统技术架构设计

(1) 移动流媒体直播技术。移动流媒体直播相对于传统的固定式录播教室,具有易部署、直播实时性强的特点。能灵活方便地用于课程教学、专家讲学、校外讲学等各类教学场景。移动流媒体直播系统通常包含采集、编码、媒体推流、网络分发、拉流和终端用户等六个环节。移动直播工作流程见图1。

图1 移动直播工作流程

采集是整个移动流媒体直播过程中的第一个环节,它从手机等移动终端的前置或后置摄像头采集获取原始视频数据,将其输出到下一个环节。编码环节由于iOS端硬件兼容性较好,可以直接采用设备硬编;而Android系统的硬件机型较多,则使用软编。音视频编码在移动终端处理完成后,通过推流协议推送至服务器端,并通过内容分发网络(Content Delivery Network,CDN)进行分发。用户移动终端通过从CDN拉取音视频编码,将不同封装格式的音视频进行解包和内容解码,然后把解码后的视频交给操作系统进行渲染,最终让终端用户看到主播端的音视频[5]。

(2) 移动流媒体直播云服务技术。传统的流媒体直播系统开发耗费大量人力财力和时间,用户需要购置服务器、选择服务器托管机房,同时进行流媒体直播系统构建、转码和存储等相关技术的研发,以及随之而来的巨额带宽使用费。在直播系统建成使用过程中,经常会出现网络故障导致流媒体直播系统无法正常工作的情况。

随着基于云服务的应用不断普及,云服务平台可以提供强大功能和高安全保障,降低运维成本和应用开发难度。目前,云服务有3种服务模式分别是基础设施即服务(Infrastructure as a Service,IaaS)、平台即服务(Platform as a Service,PaaS)、软件即服务(Software as a Service,SaaS)[6]。其中,IaaS供给消费者的服务是对所有设施的利用,包括处理器、网络和其它基本的计算资源,用户能够部署和运行任意软件,包括操作系统和应用程序。PaaS实际上是指将软件研发的平台作为一种服务,客户不需要管理底层的云基础设施,包括网络、服务器、操作系统、存储等,但能控制部署的应用程序。SaaS提供给客户的服务是运行在云计算基础设施上的应用程序,用户可以在各种设备上通过客户端界面访问。

系统设计开发过程中,采用云服务平台作为基础底层架构。移动流媒体直播系统开发人员仅对主播端和播放端进行开发。云服务平台提供其他系统开发必须的软硬件环境,提高系统开发效率[7]。云服务平台采用PaaS服务模式,通过平台提供的软件开发工具包(Software Development Kit,SDK)可以快速搭建直播平台及应用。移动流媒体直播云服务平台采用“采集推流SDK—直播云服务平台SDK—播放端SDK”模式,采集端从直播源获取视频并推送到服务端,服务端进行转码、加密、添加水印、生成缩略图等处理,由播放端进行播放。云服务平台架构见图2。

图2 云服务平台架构

1.2 系统体系架构设计

移动流媒体直播系统是一个整体的媒体传播应用方案,采用分层模块化设计可以保证系统架构具有良好的稳定性和扩展性[8]。模块化设计使系统既有功能的独立性又有接口的一致性,不断通过升级自身性能来提高整体性能和可靠性,而不会影响到其他模块。系统中各个模块相对独立地设计和发展,进行并行设计、开发和并行试验、验证。模块的不同组合能满足多样性需求,通过模块化设计能提供更好的业务方接入方式,解决移动流媒体直播中代码耦合性高、出现故障不容易及时排除等问题。

整个系统自下而上分为4个模块层次:基础支撑层、服务层、应用层、展现层。每层提供不同的功能,通过模块接口与相邻层保持关联。基础支撑层提供系统底层的运行环境和支撑保障,实时流网络、数据处理、存储和深度学习是保证系统正常运行的基本条件。服务层保证各个功能实现,视频直播模块提供直播接入、直播管理、直播录制、直播回看等整套的直播流程服务。基础服务模块提供直播相关的基础工作包含用户资料维护、直播间管理、信令服务、连麦服务、服务调度等。业务模块包含留言系统、业务排行、用户推荐、关注体系等与直播直接相关联的应用等。应用层通过引入服务层的相关模块接口,向上一层提供系统化接口实现目录接入、音视频接入、通用网关接口(Common Gateway Interface,CGI)等。展现层通过移动终端APP和HTML5的自适应页面这两种方式,将直播显示到最终用户面前,真正实现自适应化的多终端直播系统[9]。系统体系见图3。

移动流媒体直播系统的直播端和客户端通过各种网络与直播云服务平台进行视频流通信,物理架构见图4。智能手机、平板电脑、PC摄像头、录像机等各种终端都可作为直播端,通过摄像头采集直播视频,将视频流使用RTMP等相关协议推送至直播云服务平台进行媒体编码转换等工作。在云服务平台中,通过实时转码服务集群、直播API服务集群、多媒体存储集群等实现相关媒体编码、存储等工作。经过处理的视频通过云平台CDN进行分发,可以根据直播需求自动适应高延迟和高并发、低延迟和高互动这两种场景。用户使用云服务器对直播过程进行创建直播、推流地址控制、播放控制和直播流授权管理等操作。平台中的自动服务质量调度中心,保证整个直播网中的节点和线路在出现异常或者故障时,可以立刻被新的节点和线路自动替换,提高网络的容错性和健壮性[10]。

图3 系统体系结构图

图4 移动直播系统物理架构

1.3 系统运行流程设计

移动流媒体直播系统最主要的模块是直播模块,因此将直播模块作为重点设计对象[11]。移动直播系统直播流程见图5。教师主播使用手机、平板电脑等移动终端启动直播程序,系统自动检测移动终端的音视频硬件配置。如果没有发现适合直播的硬件配置,则在直播终端提示硬件检测失败,并退出程序;若通过硬件检测,则启动移动终端内置摄像头和麦克风采集、合成音视频,并推流至移动流媒体直播云服务平台。如果推流失败,则给出提示并且显示错误故障代码;若推流成功,则在移动流媒体直播云服务平台中进行音视频多码率转码、内容智能分发、直播视频实时录制和存储等工作。客户播放端从云服务平台进行拉流观看,如果拉流失败,则给出信息提示,并且再次重新尝试;若拉流成功,则将从云服务平台端处理完毕的多码率数据流拉送至客户播放端,由播放端自适应播放,从而完成整个移动流媒体直播流程。

图5 移动直播系统直播流程

1.4 移动流媒体直播弱网优化设计

移动流媒体直播对于视频传输的实时性有严格要求,在移动网络下GPRS、3G、4G切换时,需要耗费大量网络带宽,导致高清晰度的内容无法发送。这时,需要根据带宽的状况来及时调整码率、画面每秒传输帧数(Frame Per Second,FPS)和分辨率,执行不同的编码推流策略[12]。

为保证直播的实时性,在网络带宽不足或者上行速度不佳的情况下,需要在流畅度和清晰度之间做出选择。选定分辨率后,在推流过程中分辨率不会变更,但码率和FPS可以调节,直播效果相关联系见图6。每一种编码推流策略都会被存储在云服务平台的策略库中供其他用户调用[13]。

图6 直播效果相关联系

2 基于多终端的移动流媒体直播系统实现

2.1 基于多终端的移动流媒体直播系统直播采集

直播端通过APP实现对服务器和其中的直播业务逻辑操作,首先直播采集端向业务服务器发起创建直播房间的请求。紧接着业务服务器通过服务端SDK发起创建直播流的请求,实时流网络(LiveNet)把返回的JSON返回给业务服务器,业务服务器返回给采集端并把播放地址记录在本地。最后,直播采集端获取到JSON后推流给LiveNet,整个过程中业务服务器不需要承担流媒体流量。采集端的逻辑图见图7。

图7 直播采集端逻辑

具体直播调用实现代码为:

{

"credentials": {

"accessKey": "" //用于验证访问是否合法的密钥

"secretKey": "" //匹配密钥

},

"id": "z1.Realaddress-1.class-99" //用户直播间ID

"createdAt": "2016-11-24T14:23:33.474Z" //创建新直播间

"updatedAt": "2016-11-24T14:23:33.474Z" //直播间更新时间

"title": "class-99", //直播间名称

"hub": "Realaddress-1",

"publishKey": "a32498a5f43a7237",

"publishSecurity": "static",

"disabled": false,

"profiles": null,

"hosts": {

"publish": {

"rtmp": "test-publish.Realaddress.cn" //发布直播推流地址

},

"live": { //直播中各种编码格式对应的推流地址

"hdl": "test-live-hdl.Realaddress.cn",

"hls": "test-live-hls.Realaddress.cn",

"http": "test-live-hls.Realaddress.cn",

"rtmp": "test-live-rtmp.Realaddress.cn",

"snapshot": "test-live-snapshot.Realaddress.cn"

},

"playback": { //直播反馈地址

"hls": "100029c.playback1.z1.test.qiniucdn.com",

"http": "100029c.playback1.z1.test.qiniucdn.com"

},

"play": { //播放实时地址

"http": "test-live-hls.Realaddress.cn",

"rtmp": "test-live-rtmp.Realaddress.cn"

}

}

}

2.2 基于多终端的移动流媒体直播系统功能实现

移动流媒体直播系统的核心功能是通过手机、平板电脑等移动终端的APP程序实现。移动流媒体直播系统界面见图8。

图8 系统界面

系统主要由以下9个功能组成[14]:

(1) 直播模块。教师可以通过手机、平板电脑等移动终端进行课程直播,学生通过手机、平板电脑及PC端实时收看教师的课程直播。直播期间,教师可以设置连麦功能,在教师直播期间,允许与一位或多位学生进行实时音视频互动,其他学生能同步观看到该互动过程。

(2) 直播浏览。学生用户浏览正在直播的教师列表,根据观看人数、直播课程类别等分类方式,进行有选择的观看直播。在默认直播状态下,学生在直播界面可以发送即时消息显示与教师和其他同学进行文字交流。在直播教师开放连麦功能时,可以申请与教师现场视频互动,参与到课程教学中。

(3) 点播课程。系统对正在直播的课程同步实时录制,并将录制的视频内容存储在移动流媒体直播系统云服务平台的对象存储系统中。用户在错过直播时,通过该功能重新回看。

(4) 个人记录。保存学生在观看直播时实时写下的学习笔记、课程内容要点记录、视频截图等。

(5) 交流讨论。在直播课程期间,学生可以添加同时观看该直播课程的教师和其他同学为好友,在直播结束后,仍能通过软件内置聊天功能进行关于教师课程内容和问题的交流讨论。

(6) 用户资料。用于设置用户个人信息资料、修改个人图像、绑定手机、修改登录密码、设置关注或取消关注课程、好友分类等操作。

(7) 系统设置。用户设置教师开播信息提醒、直播视频截图、清理播放缓存、网络状态诊断等功能。

(8) 帮助模块。针对使用移动流媒体直播系统中可能出现的各种问题,给出相对应的解决方法,并且可以通过搜索问题的关键词,进行快速解决方案查询。

(9) 退出模块。结束程序进程,清空数据,正常退出程序。

2.3 基于多终端的移动流媒体直播系统播放端实现

用户使用终端观看直播视频时,首先由在终端运行的APP播放端对业务服务器发起查询房间列表请求,获取所有房间的播放地址;在用户选择指定的直播房间后,播放端根据终端的类型自动选择相匹配的流媒体编码格式,通过播放地址播放流媒体,业务服务器只负责房间创建及调度,不需要承担流媒体流量,可以更好的保证直播相关业务的顺利执行[15]。播放端逻辑见图9。

图9 直播播放端逻辑

播放端具体实现代码如下:

{

"publish" "rtmp://test-publish.Realaddress.cn/Realaddress-1/class-1?key=0ec27ba231c0a90c",

"play": { //播放端从业务服务器中获取到的播放地址列表

"ORIGIN": "rtmp://test-live-rtmp.Realaddress.cn/Realaddress-1/class-1"

},

"id": "z1.Realaddress-1.class-1" //获取直播间ID

"title": "class-1" //直播间名称

}

3 基于多终端的移动流媒体直播系统测试

根据系统设计方案,对系统进行各种直播条件和网络环境下的测试,完善移动流媒体直播系统代码,进行推流、转码的相关参数调整。

3.1 直播及连麦测试

教师在授课前开启直播软件并设置相关直播信息后,进行直播。直播中,直播界面显示实时视频、直播节目名称、实时观看人数。教师可以打开或者关闭发送文字消息功能。有选择的查看观众发送的实时文字消息。直播界面见图10。教师开启连麦功能后,可以有选择的与申请连麦的学生进行视频交流,学生观众的视频以小窗口模式显示,与教师进行面对面的交流互动,该过程可以同时被其他观看直播的同学所看到。连麦界面见图11。

3.2 直播弱网优化测试

以Android平台端为例,进行弱网优化测试。测试中使用ATC弱网测试工具,该工具能够利用Wi-Fi网络模拟移动网络环境,并可以快速切换,可控制带宽、时延抖动、丢包率、错包率、包重排[16]。从而实现对智能手机和App在不同应用环境下的性能表现进行测试。分别模拟移动终端在3G网和好网下10%丢包率的网络环境下进行直播,并用专用软件SrsPlayer播放,查看播放效果、统计卡顿次数。在该测试模式下,系统流畅度为97.61%,卡顿4次。优于目前主流直播软件的流畅度91.18%和卡顿次数9次。弱网优化测试结果界面见图12。

图10 直播界面图11 连麦界面

图12 测试模式:普通网络模式下结果对比

4 结 语

本文提出的基于多终端的移动流媒体直播系统采用最新的云服务平台技术进行开发,具有部署时间短、成本低、自适应多平台、高实时性和交互性的特点。文章首先分析移动流媒体直播的特征以及当前移动直播存在的问题,然后探讨云服务平台环境下移动流媒体直播系统设计的依据和方法,最后根据分析设计并实现基于多终端的移动流媒体直播系统,并对平台中的关键技术实现进行详细说明。

科学技术的每一次进步都会给人们的学习和生活带来显著影响。基于多终端的移动流媒体直播系统的发展,带来教育技术和教育手段的革新。逐渐完善的移动流媒体直播技术将不断地推动移动教育向前发展,将成为未来移动教育的一个重要手段。随着校园高速无线局域网络的建设和移动4G网络覆盖范围的扩大,基于多终端的移动流媒体直播系统将具有广阔的应用前景。

猜你喜欢
服务平台终端系统
Smartflower POP 一体式光伏系统
打造一体化汽车服务平台
WJ-700无人机系统
江苏省一体化在线交通运输政务服务平台构建
X美术馆首届三年展:“终端〉_How Do We Begin?”
论基于云的电子政务服务平台构建
基于PowerPC+FPGA显示系统
通信控制服务器(CCS)维护终端的设计与实现
基于云计算的民航公共信息服务平台
连通与提升系统的最后一块拼图 Audiolab 傲立 M-DAC mini