【转】【如何快速的开发一个完整的iOS直播app】(原理篇)
一、个人见解(直播难与易)
直播难
:个人认为要想把直播从零开始做出来,绝对是牛逼中的牛逼,大牛中的大牛,因为直播中运用到的技术难点非常之多,视频/音频处理,图形处理,视频/音频压缩,CDN分发,即时通讯等技术,每一个技术都够你学几年的。
直播易
:已经有各个领域的大牛,封装好了许多牛逼的框架,我们只需要用别人写好的框架,就能快速的搭建一个直播app,也就是传说中的站在大牛肩膀上编程。
二、了解直播
热门直播产品
映客,斗鱼,熊猫,虎牙,花椒等等
直播效果图
直播效果.jpeg1.一个完整直播app功能(来自落影loyinglin分享)
- 1、
聊天
私聊、聊天室、点亮、推送、黑名单等;
- 2、
礼物
普通礼物、豪华礼物、红包、排行榜、第三方充值、内购、礼物动态更新、提现等;
- 3、
直播列表
关注、热门、最新、分类直播用户列表等;
- 4、
自己直播
录制、推流、解码、播放、美颜、心跳、后台切换、主播对管理员操作、管理员对用户等;
- 5、
房间逻辑
创建房间、进入房间、退出房间、关闭房间、切换房间、房间管理员设置、房间用户列表等;
- 6、
用户逻辑
普通登陆、第三方登陆、注册、搜索、修改个人信息、关注列表、粉丝列表、忘记密码、查看个人信息、收入榜、关注和取关、检索等;
- 7、
观看直播
聊天信息、滚屏弹幕、礼物显示、加载界面等;
- 8、
统计
APP业务统计、第三方统计等;
- 9、
超管
禁播、隐藏、审核等;
2.一个完整直播app原理
直播原理:把主播录制的视频,推送到服务器,在由服务器分发给观众观看。
直播环节:推流端(采集、美颜处理、编码、推流)、服务端处理(转码、录制、截图、鉴黄)、播放器(拉流、解码、渲染)、互动系统(聊天室、礼物系统、赞)
3.一个完整直播app实现流程
1.采集、2.滤镜处理、3.编码、4.推流、5.CDN分发、6.拉流、7.解码、8.播放、9.聊天互动
4.一个完整直播app架构
直播架构5.一个完整直播app技术点
直播协议对比
-
HLS
:由Apple公司定义的用于实时流传输的协议,HLS基于HTTP协议实现,传输内容包括两部分,一是M3U8描述文件,二是TS媒体文件。可实现流媒体的直播和点播,主要应用在iOS系统
- HLS是以
点播的技术方式
来实现直播 - HLS是
自适应码率流播
,客户端会根据网络状况自动选择不同码率的视频流,条件允许的情况下使用高码率,网络繁忙的时候使用低码率,并且自动在二者间随意切换。这对移动设备网络状况不稳定的情况下保障流畅播放非常有帮助。 - 实现方法是服务器端提供多码率视频流,并且在列表文件中注明,播放器根据播放进度和下载速度自动调整。
-
HLS与RTMP对比
:HLS主要是延时比较大,RTMP主要优势在于延时低
- HLS协议的小切片方式会生成大量的文件,存储或处理这些文件会造成大量资源浪费
- 相比使用RTSP协议的好处在于,一旦切分完成,之后的分发过程完全不需要额外使用任何专门软件,普通的网络服务器即可,大大降低了CDN边缘服务器的配置要求,可以使用任何现成的CDN,而一般服务器很少支持RTSP。
-
HTTP-FLV
:基于HTTP协议流式的传输媒体内容。
- 相对于RTMP,HTTP更简单和广为人知,内容延迟同样可以做到1~3秒,打开速度更快,因为HTTP本身没有复杂的状态交互。所以从延迟角度来看,HTTP-FLV要优于RTMP。
-
RTSP
:实时流传输协议,定义了一对多应用程序如何有效地通过IP网络传送多媒体数据. -
RTP
:实时传输协议,RTP是建立在UDP协议上的,常与RTCP一起使用,其本身并没有提供按时发送机制或其它服务质量(QoS)保证,它依赖于低层服务去实现这一过程。 -
RTCP
:RTP的配套协议,主要功能是为RTP所提供的服务质量(QoS)提供反馈,收集相关媒体连接的统计信息,例如传输字节数,传输分组数,丢失分组数,单向和双向网络延迟等等。
7.解码
***** 7.1 解封装 *****
-
demuxing(分离)
:从视频流、音频流,字幕流合成的文件(容器格式(FLV,TS)
)中, 分解出视频、音频或字幕,各自进行解码。
***** 7.2 音频编码框架 *****
-
fdk_aac
:音频编码解码框架,PCM音频数据和AAC音频数据互转
***** 7.3 解码介绍 *****
-
硬解码
:用GPU来解码,减少CPU运算
- 优点:播放流畅、低功耗,解码速度快,
- 缺点:兼容不好
-
软解码
:用CPU来解码
- 优点:兼容好
- 缺点:加大CPU负担,耗电增加、没有硬解码流畅,解码速度相对慢
8.播放
- ijkplayer:一个基于FFmpeg的开源Android/iOS视频播放器
- API易于集成;
- 编译配置可裁剪,方便控制安装包大小;
- 支持硬件加速解码,更加省电
- 简单易用,指定拉流URL,自动解码播放.
9.聊天互动
-
IM
:(InstantMessaging)即时通讯:是一个实时通信系统,允许两人或多人使用网络实时的传递文字消息、文件、语音与视频交流.IM
在直播系统中的主要作用是实现观众与主播、观众与观众之间的文字互动.***** 第三方SDK ***** -
腾讯云:腾讯提供的即时通讯SDK,可作为直播的聊天室
-
融云:一个比较常用的即时通讯SDK,可作为直播的聊天室
五、如何快速的开发一个完整的iOS直播app
1、利用第三方直播SDK快速的开发
- 七牛云:七牛直播云是专为直播平台打造的全球化直播流服务和一站式实现SDK端到端直播场景的企业级直播云服务平台.
熊猫TV,龙珠TV等直播平台都是用的七牛云
- 网易视频云:基于专业的跨平台视频编解码技术和大规模视频内容分发网络,提供稳定流畅、低延时、高并发的实时音视频服务,可将视频直播无缝对接到自身App
2、第三方SDK公司为什么要提供SDK给我们?
- 希望把我们的产品和它绑在一条船上,更加的依赖它。
- 技术生钱,帮养一大批牛B的程序员
3、直播功能:自研还是使用第三方直播SDK开发?
-
第三方SDK开发
: 对于一个初创团队来讲,自研直播不管在技术门槛、CDN、带宽上都是有很大的门槛的,而且需要耗费大量的时间才能做出成品,不利于拉投资。 -
自研
:公司直播平台大,从长远看,自研可以节省成本,技术成面比直接用SDK可控多了。
4.第三方SDK好处
-
降低成本
-
使用好的第三方企业服务,将不用再花高价请猎头去挖昂贵的大牛,也不用去安抚大牛们个性化的脾气
-
提升效率
-
第三方服务的专注与代码集成所带来的方便,所花费的时间可能仅仅是1-2个小时,节约近99%的时间,足够换取更多的时间去和竞争对手斗智斗勇,增加更大的成功可能性
-
降低风险
-
借助专业的第三方服务,由于它的快速、专业、稳定等特点,能够极大地加强产品的竞争能力(优质服务、研发速度等),缩短试错时间,必将是创业中保命的手段之一
-
专业的事,找专业的人来做
-
第三方服务最少是10-20人的团队专注地解决同一个问题,做同一件事情。第三方服务所带来的支持效果,绝不是通过1-2个人处理所能对比的,难道不是吗
结束语
后续还会有讲解视频采集,美颜,聊天室,礼物系统等更多功能,敬请关注!!!