APP下载

基于Android 移动终端的音视频直播系统设计

2020-07-29

湖南邮电职业技术学院学报 2020年2期
关键词:服务端音视频框架

李 昂

(九江职业大学信息工程学院,江西九江332000)

音视频直播技术是指利用流媒体与互联网技术将音频、视频以及文本等信息进行融合,通过实时直播的方式展现出来,实现图声并茂的效果[1]。随着移动互联网技术的不断发展,互联网带宽不断扩大,移动音视频直播技术发展迅速,已被广泛应用于诸多场景,如在线教育、娱乐直播、网上购物等[2-3]。直播技术有较强的实时性,播放形式较为丰富,用户只需要通过智能手机或平板电脑接入网络,就可以不受地域限制地收看直播节目。这样一来,直播技术扩展了互联网资源的受众面,使信息实现最大程度共享。在知识付费的时代,这一技术给众多企业与组织带来了丰厚的利润空间。本文设计实现了一套完整的音视频直播系统,系统技术方案可被应用于各种需要融合直播功能的应用系统中。

1 系统架构设计

本项目设计的音视频直播系统分为两个部分,第一部分为基于Android 移动开发技术的移动客户端,第二部分为基于Java 企业级应用框架Spring+Spring MVC+MyBatis 的直播后台管理系统。系统架构如图1所示。整个系统使用HTTP 与RTMP 两种通信协议,HTTP 用于传输移动端与服务端之间的文本、图片信息,RTMP 用于音视频直播流传输。系统移动端采用Android 系统平台,服务端采用Ubuntu 系统搭建Nginx 反向代理服务器。

图1 系统架构图

2 RTMP 协议介绍

RTMP(Real Time Messaging Protocol)中文译为实时消息传送协议,是一种为音视频数据在播放器和服务器之间传输开发的私有协议[4]。RTMP 是一种TCP协议,它通过可靠的流传输提供了一个双向的多路传输服务。协议中以消息(Message)作为基本数据单元,在传输时这种消息(Message)会拆分成更小的消息块(Chunk),消息块包含自己的频带内协议控制消息,同时也为嵌入用户控制消息提供了一种高级协议机制。被拆分后的Chunk 单元经过TCP 协议传输至接收端,经过反解码恢复成流媒体信息数据。

RTMP 的运行机制分为握手、连接建立、建立网络流以及播放四个步骤。使用时,客户端首先向服务器发出握手请求,服务端响应后建立网络连接,之后再建立网络流,最后只有在网络流建立成功的基础上才能进行音视频播放。RTMP 消息分为消息头与有效载荷两部分。其中消息头由Message Type(1 字节)、Length(3 字节)、Timestamp(4 字节)以及Message Stream ID(3 字节)四个部分组成。有效载荷中包含这个消息的实际内容,如压缩后的音视频数据。

3 移动客户端设计

本系统移动客户端软件基于Android 系统进行开发,使用Java 与XML 语言进行编码,可运行于搭载Android 系统的手机、平板电脑等移动设备。具体功能分为以下几个模块。

3.1 用户信息模块

用户信息模块分为登录注册与个人中心两个子模块。新用户可通过注册功能注册用户名和密码,已完成注册的用户可以在登录界面中输入用户名、密码进行登录。用户名、密码使用MD5 算法进行加密,存储于服务端中的MySQL 数据库中。个人中心可显示用户个人信息,包括用户头像、用户名、观看记录、系统设置等,用户可以通过个人中心修改密码。

3.2 直播模块

直播模块分为两种模式,一种为开启直播模式,当用户为主播权限时,可以通过此模式在移动终端中开启直播。另一种为观看直播模式,当用户为观众权限时,可以通过此模式在移动终端中观看直播。本系统直播功能使用RTMP 协议,主要流程如图2 所示。

图2 音视频直播流程图

开启直播模式属于推流操作,这里使用Android中的SurfaceView组件显示移动终端摄像头采集的图像信号,声音通过麦克风进行采集。观看直播模式属于拉流操作,既从服务器拉取直播流,同样使用SurfaceView 组件显示拉取的图像信号。直播功能使用ijkplayer 框架进行开发。首先在Android Studio 中引入ijkplayer 依赖,之后对播放器进行配置初始化,在活动类中获取IjkVideoView 控件,使用setVideoPath方法获取视频服务器地址。最后调用mVideoView.start()进行视频播放。

3.3 直播互动模块

直播互动模块主要用于主播与观众之间的互动交流。在本系统中,用户可使用客户端输入消息形成弹幕显示于屏幕上。这里使用腾讯云即时通信服务进行功能实现。即时通信服务类似一个邮件系统,发出的每一条信息都相当于一封邮件。利用腾讯云即时通信服务可以十分方便地实现文本即时交流的功能,无需额外开发一套即时通信服务端应用。首先在Android 工程中引入腾讯云imsdk,之后调用imsdk 中的SendMessage()方法实现与服务器的通信即可。文字弹幕通过ListView控件以列表的形式显示于屏幕上。

4 服务端设计

4.1 直播服务器搭建

本系统使用Nginx 搭建基于RTMP 协议的音视频直播服务器。Nginx 是一种轻量级高性能的HTTP和反向代理Web 服务器,其优点是稳定性高、功能集丰富、系统资源消耗低且并发能力强[5]。首先安装Nginx,本系统使用Nginx-1.8.1 版本,在ubuntu 系统中使用源代码进行编译安装。之后安装nginx-rtmpmodule,此模块是基于Nginx 开发的一个RTMP 扩展模块。安装完成后在nginx.conf 中对rtmp 进行配置。最后重启Nginx 服务,使用OBS 进行推流测试。

4.2 直播后台管理系统

直播后台管理系统可以实现对正在直播的内容进行监控,并且支持直播视频的回放功能。管理员如发现违规的视频内容,可以对直播间或发起直播的用户进行封禁。本后台管理系统采用Bootstrap 框架开发前端,使用Java Web 技术中的SSM框架开发后端,系统结构框图如图3 所示。

图3 直播后台管理系统结构框图

1)Bootstrap 框架

Bootstrap 是一个由Twitter 公司的Mark Otto 和Jacob Thornton 开发的用于快速开发Web 应用程序和网站的前端框架。2011 年在GitHub 上开源,其优点在于简单易用,有大量美观规范的前端组件。可以方便一个不太精通美工的后端开发人员开发出标准的前端页面。

2)SSM框架

SSM 框架是由Spring、Spring MVC、MyBatis 三者整合而成,是继SSH 之后一种十分流行的JAVAEE框架,目前被各种大型的企业级应用系统所使用[6]。

Spring 是一个为了解决复杂企业应用开发而创建的开源框架。控制反转与面向切面是Spring 的重要特点,其面向接口编程的特性使得不用针对Java 类进行编程,大大降低了使用接口的复杂度。使用Spring 框架编写的代码减少了不必要的异常检测,程序代码干净、易于管理且十分利于测试。

Spring MVC 是用于构建Web 应用程序的Java框架。它遵循模型——视图——控制器的设计模式,实现了核心Spring 框架的所有基本特性,如控制反转、依赖注入。Spring MVC 在DispatcherServlet 的帮助下,为在Spring 框架中使用MVC 提供了一个简洁的解决方案。

MyBatis 是一个开源、轻量级、持久性框架。它是JDBC 和Hibernate 的替代品。MyBatis 通过将SQL 语句打包到XML 配置文件中,自动控制了Java 中SQL数据库和对象之间的映射,与JDBC 相比,减少了50%以上的代码量。

5 结束语

本文设计了一种基于Android 移动终端的音视频直播系统,使用Android 技术开发移动平台客户端,服务端采用Spring+Spring MVC+MyBatis+Bootstrap 框架开发。直播模块采用RTMP 协议实现音视频信号传输,使用Nginx 搭建基于RTMP 协议的音视频直播服务器。经过测试,本系统运行稳定,能够满足设计需求,系统技术方案可应用于各种需要使用直播功能的应用系统,具有一定的实用价值。

猜你喜欢

服务端音视频框架
有机框架材料的后合成交换
框架
Microchip推出首款车载以太网音视频桥接(AVB)全集成解决方案
3KB深圳市一禾音视频科技有限公司
WIFI音视频信号传输的关键问题探究
新时期《移动Web服务端开发》课程教学改革的研究
高速公路整合移动音视频系统应用
关于原点对称的不规则Gabor框架的构造
我国在WYO框架下面对的贸易保护现状及应对
摸清黑客套路防范木马侵入