闲扯:
作为一名iOS开发人员,对于当下最流行的技术一定要及时跟进,不才,花费大半年的时间学习以及总结,浅谈一下直播,欢迎大家指出不足之处。
直播说简单也简单,说难也难,看你想要达到的深度。
做好准备,你需要去学习音频、视频、图形的处理,音频、视频的压缩,CDN分发,以及即时通讯等技术。
当下已经有很多技术大牛封装好了直播框架,能够让我们快速的搭建一个直播的App,但是我们还是需要去真正了解直播的原理。
正题:
下面就让我们来一起学习
一、一个完整的直播类App所具备的功能有:(模糊总结)
1.用户系统(手机号登录、第三方登陆、注册、找回密码、用户信息的填写以及本地存档、关注、粉丝、修改个人信息、收入榜、检索等)
2.直播列表(热门的、关注的、最新的等)
3.直播间(直播间聊天、礼物、充值、内购、提现、收到礼物的特效、点亮、关注、私聊、弹幕、黑名单、主播、管理员、其他用户、创建房间、进入房间、退出房间、关闭房间、切换房间等)
推送
4.直播(录制、推流、解码、播放、美颜、滤镜、后台切换等)
5.其他(统计、推送、截屏、禁播、隐藏、审核等)
二、直播原理
主播方录制视频,推送到服务器上,再由服务器分发给直播间用户观看。
推流端(主播方)经过采集、美颜、滤镜、编码、推流的一系列处理交给服务端。
服务端(服务器)经过转码、录制、截图、鉴黄暴等分发给用户端。
用户端(播放器)通过拉流、解码、渲染。
三、直播实现流程
1.音视频采集 2.滤镜美颜处理 3.音视频编码 4.推流(流媒体服务器) 5.CDN分发 6.拉流 7.音视频解码 8.音视频播放 9.聊天互动看直播
四、直播架构
1.主播端:
音视频采集、视频处理、音视频编码压缩、把音视频封装FLV.TS
(AVFoundation数据管理、GPUIImage美颜滤镜、FFmpeg音频压缩、X264视频压缩、libemp推流)
2.服务器:数据分发(CDN)、鉴黄暴(鉴黄师)、截屏展示主播画面、录制视频、实时转码。(SNS、BMS、Nginx)
3.用户端:从FLV.TS分离音视频数据、音视频解码、播放(ijkplayer播放、FFmpeg视频解码、VideoToolbox视频硬解码、AudioToolbo音频硬解码)