美文网首页
【转】【如何快速的开发一个完整的iOS直播app】(原理篇)

【转】【如何快速的开发一个完整的iOS直播app】(原理篇)

作者: 狮子_挽歌_ | 来源:发表于2016-12-23 23:20 被阅读131次

    一、个人见解(直播难与易)

    直播难:个人认为要想把直播从零开始做出来,绝对是牛逼中的牛逼,大牛中的大牛,因为直播中运用到的技术难点非常之多,视频/音频处理,图形处理,视频/音频压缩,CDN分发,即时通讯等技术,每一个技术都够你学几年的。

    直播易:已经有各个领域的大牛,封装好了许多牛逼的框架,我们只需要用别人写好的框架,就能快速的搭建一个直播app,也就是传说中的站在大牛肩膀上编程。

    二、了解直播

    热门直播产品

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

    直播效果图

    直播效果.jpeg

    1.一个完整直播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个人处理所能对比的,难道不是吗

    结束语
    后续还会有讲解视频采集,美颜,聊天室,礼物系统等更多功能,敬请关注!!!

    yuanhttp://www.jianshu.com/p/bd42bacbe4cc

    相关文章

      网友评论

          本文标题:【转】【如何快速的开发一个完整的iOS直播app】(原理篇)

          本文链接:https://www.haomeiwen.com/subject/oixlvttx.html