直播流程
一个完整直播 app 流程:把主播录制的视频,推送到服务器,再由服务器分发给观众观看。
直播环节:推流端(采集、美颜处理、编码、推流)
服务端处理:(转码、录制、截图、鉴黄)
播放器:(拉流、解码、渲染)
互动系统:(聊天室、礼物系统、赞)
一个完整直播 app 功能(来自落影 loyinglin分享)
- 1、
聊天
- 私聊、聊天室、点亮、推送、黑名单等;
- 2、
礼物
- 普通礼物、豪华礼物、红包、排行榜、第三方充值、内购、礼物动态更新、提现等;
- 3、
直播列表
- 关注、热门、最新、分类直播用户列表等;
- 4、
自己直播
- 录制、推流、解码、播放、美颜、心跳、后台切换、主播对管理员操作、管理员对用户等;
- 5、
房间逻辑
- 创建房间、进入房间、退出房间、关闭房间、切换房间、房间管理员设置、房间用户列表等;
- 6、
用户逻辑
- 普通登陆、第三方登陆、注册、搜索、修改个人信息、关注列表、粉丝列表、忘记密码、查看个人信息、收入榜、关注和取关、检索等;
- 7、
观看直播
- 聊天信息、滚屏弹幕、礼物显示、加载界面等;
- 8、
统计
- APP 业务统计、第三方统计等;
- 9、
超管
- 禁播、隐藏、审核等;
完整实现流程:
1. 采集 2. 滤镜处理 3. 编码 4. 推流 5. CDN 分发 6. 拉流 7. 解码 8. 播放 9. 聊天互动
【简单理解:采集 –> 编码 –> 推流 –> 流媒体服务器 –> 拉流 –> 解码 –> 播放】
采集端流程【向服务器端获取推流地址】
- 音视频采集
- 音视频处理(美颜、水印)
- 音视频编码压缩
- 封装音视频 FLV/TS
对应【主播】【通过 RTMP 推流】
- AVFoundation 框架:数据
- GPUimage 框架:美颜
- FFmpeg 框架:音频压缩
- X264 框架:视频压缩
- libremp 框架:推流
服务端流程 【播放端会向服务端获取拉流地址 URL】
- 数据分发 CDN
- 鉴黄
- 截屏:展示主播画面
- 录制视频
- 实时转码
对应 【流媒体服务器】
- 常用服务器
- SNS
- vBMS
- nginx
播放端流程
- 从 FLV/TS 中分离出音视频数据
- 音视频解码
- 播放
- 聊天互动
对应【播放端】【拉流、RTMP/FLV/HLS】
- ijkplayer 框架:播放
- FFmpeg 框架:视频解码
- VideoToolBox:视频硬解码
- AudioToolBox:音频硬解码