直播项目技术实现方案(仅用于工作室内部)

本篇主要探讨利用第三方直播SDK开发直播平台和自主研发直播平台这两种直播开发方案,暂分析iOS客户端和服务器端的实现,安卓端可参考iOS端实现方式。

热门直播产品

映客,斗鱼,熊猫,虎牙,花椒等等

1.常规直播app功能

1、聊天

私聊、聊天室、点亮、推送、黑名单等;

2、礼物

普通礼物、豪华礼物、红包、排行榜、第三方充值、内购、礼物动态更新、提现等;

3、直播列表

关注、热门、最新、分类直播用户列表等;

4、自己直播

录制、推流、解码、播放、美颜、心跳、后台切换、主播对管理员操作、管理员对用户等;

5、房间逻辑

创建房间、进入房间、退出房间、关闭房间、切换房间、房间管理员设置、房间用户列表等;

6、用户逻辑

普通登陆、第三方登陆、注册、搜索、修改个人信息、关注列表、粉丝列表、忘记密码、查看个人信息、收入榜、关注和取关、检索等;

7、观看直播

聊天信息、滚屏弹幕、礼物显示、加载界面等

8、统计

APP业务统计、第三方统计等;

9、超管

禁播、隐藏、审核等;

2.直播app原理

直播原理:把主播录制的视频,推送到服务器,在由服务器分发给观众观看。
直播环节:推流端(采集、美颜处理、编码、推流)、服务端处理(转码、录制、截图、鉴黄)、播放器(拉流、解码、渲染)、互动系统(聊天室、礼物系统、赞)

3.直播app实现流程

1.采集、2.滤镜处理、3.编码、4.推流、5.CDN分发、6.拉流、7.解码、8.播放、9.聊天互动

直播项目技术实现方案(仅用于工作室内部)_第1张图片
直播流程

4.直播app架构

直播项目技术实现方案(仅用于工作室内部)_第2张图片
直播app架构

5.自主研发--核心功能实现方案

1.采集视频、音频

使用AVFoundation实现:AVFoundation是用来播放和创建实时的视听媒体数据的框架,同时提供Objective-C接口来操作这些视听数据,比如编辑,旋转,重编码

2.视频处理(美颜,水印)

使用GPUImage实现: GPUImage是一个基于OpenGL ES的一个强大的图像/视频处理框架,封装好了各种滤镜同时也可以编写自定义的滤镜,其本身内置了多达120多种常见的滤镜效果。

3.视频编码解码封装

FFmpeg框架:是一个跨平台的开源视频框架,能实现如视频编码,解码,转码,串流,播放等丰富的功能。其支持的视频格式以及播放协议非常丰富,几乎包含了所有音视频编解码、封装格式以及播放协议。

4.推流

数据传输框架-librtmp:用来传输RTMP协议格式的数据

5.流媒体服务器

利用nginx来配置流媒体服务器,其中cdn分发技术是将网站的内容发布到最接近用户的网络”边缘”,使用户可以就近取得所需的内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度.

6.拉流

选择rtmp直播协议.

8.播放

使用b站开源的ijkplayer(API易于集成;编译配置可裁剪,方便控制安装包大小;支持硬件加速解码,更加省电 简单易用,指定拉流URL,自动解码播放.)

9.聊天互动

融云作为直播的聊天室的技术实现基础

6.借助第三方SDK--核心功能实现方案

1、利用第三方直播SDK快速的开发

七牛云:七牛直播云是专为直播平台打造的全球化直播流服务和一站式实现SDK端到端直播场景的企业级直播云服务平台,主要将自研流程中的视频编码解码封装,推流,流媒体服务器,拉流等环节帮我们封装到sdk中,极大提高开发效率。

  • 熊猫TV,龙珠TV等直播平台都是用的七牛云

互联网直播是一种基于RTMP协议的业务。RTMP协议是一种基于TCP的协议。在实际的业务模型中,又分为客户端和服务端。客户端主要是利用RTMP协议进行数据包的发送,一般称之为推流。服务端主要用来接收客户端发送过来的RTMP协议数据包,并转发出去供订阅的客户播放,订阅直播播放的客户从服务端给出的一个地址请求数据,请求的过程也是基于RTMP的协议,这个过程称之为拉流。通常的情况下,直播的业务模型是一路推流到服务器,然后可能会有多路观看的拉流请求,即1:N的模型。

七牛云直播服务的业务模型。
直播项目技术实现方案(仅用于工作室内部)_第3张图片
直播服务的业务模型

七牛云收费情况

7.两种技术实现方案的评估

自研:

技术门槛较高,需要招聘这方面的人才,后期维护成本较大,服务端CDN分发要在国内各地架设多台服务器作为节点,单这一块预估就好几百万。

借助sdk开发:

对于一个初创团队来讲,自研直播不管在技术门槛、CDN、带宽上都是有很大的门槛的,而且需要耗费大量的时间才能做出成品,不利于拉投资。但是借助sdk开发可以快速融入到市场,有较好的容错性,在各大直播平台瓜分市场的同时,将大部分资金用于运营 而不是开发,有利于提高产品的竞争力。

你可能感兴趣的:(直播项目技术实现方案(仅用于工作室内部))