直播间APP开发的架构设计对于直播来说,是决定直播能否稳定运行的因素之一。如果要做运营级的服务平台,需要采用分布式的架构方式,不仅包括各个功能模块的分布式部署,还包括各种应用服务器的分布式部署,从而实现更好的服务冗余备份、平台的健壮性和容错性、运营成本的有效控制,还有用户体验效果的提升。主要有以下两种架构方式:
1.普通的直播架构
相比其他的直播架构,这一架构可以说是非常简单的一种了。利用已有的CDN,然后再搭建一个信令服务器,就可以将服务层搭建完毕了。之后用户可以先向信令服务器发送指令,然后通过相机或摄像头采集音视频数据,经编码后通过RTMP协议将音视频流推送到CDN。
接收端服务器发送指令后,获取音视频流名称,然后再从CDN中拉取音视频流,经解码后渲染在用户端屏幕。
2.实时交互的直播架构
这一找那个架构相对比较复杂,其中最主要的就是增加了自有网络。即客户端通过UDP进行数据传输,从而大幅度减少由于网络或者是CDN结构所导致的延时问题。这个架构下,都是通过UDP协议上传到自有网络服务器上,为了实现实时互动的效果,其他的用户也需要通过UDP来连接到自有网络。但是音视频数据上传到自有网络后,还需要通过专门的服务,将音视频数据流通过RTMP协议推到CDN上。这样一来,在直播中观看但是不参与互动的用户也可以从CDN获取音视频数据了。
视频的编解码也是直播间APP开发不可忽视的点
视频处理框架
GPUImage: GPUImage是一个基于OpenGL ES的一个强大的图像/视频处理框架,封装好了各种滤镜同时也可以编写自定义的滤镜,其本身内置了多达120多种常见的滤镜效果。
OpenGL:OpenGL(全写Open Graphics Library)是个定义了一个跨编程语言、跨平台的编程接口的规格,它用于三维图象(二维的亦可)。OpenGL是个专业的图形程序接口,是一个功能强大,调用方便的底层图形库。
OpenGL ES:OpenGL ES (OpenGL for Embedded Systems) 是 OpenGL三维图形 API 的子集,针对手机、PDA和游戏主机等嵌入式设备而设计。
视频编码框架
FFmpeg :是一个跨平台的开源视频框架,能实现如视频编码,解码,转码,串流,播放等丰富的功能。其支持的视频格式以及播放协议非常丰富,几乎包含了所有音视频编解码、封装格式以及播放协议。
Libswresample:可以对音频进行重采样,rematrixing以及转换采样格式等操作。
Libavcodec:提供了一个通用的编解码框架,包含了许多视频,音频,字幕流 等编码/解码器。
Libavformat:用于对视频进行封装/解封装。
Libavutil:包含一些共用的函数,如随机数生成,数据结构,数学运算等。
Libpostproc:用于进行视频的一些后期处理。
Libswscale:用于视频图像缩放,颜色空间转换等。
Libavfilter:提供滤镜功能。
直播间APP开发,架构设计决定直播能否稳定运行,是在直播间APP开发之初就该考虑好的关键点,也是为后期运营打好基础,避免后期费时费力的维护。
领取专属 10元无门槛券
私享最新 技术干货