关闭

iOS动手做一个直播(原理篇)

标签: ios
1863人阅读 评论(0) 收藏 举报
分类:

开篇

112362441-d34e615a59e07987

传输简单示意图

上篇文章主要给出了代码,但是并没有详细说明直播相关的知识,这篇文章就说一下直播的相关理论知识。附上直播代码篇地址。

推流

腾讯直播平台,阿里直播平台,百度直播平台提供均为RTMP的推流和HLS/RTMP等拉流.
推流是一个直播不可缺少的成分,说起推流都会说基于RTMP协议,那什么是RTMP呢?
RTMP全称:Real Time Messaging Protocol(实时消息传送协议)
1)、工作在TCP之上的明文协议,使用端口1935;
2)、RTMPT封装在HTTP请求之中,可穿越防火墙;
3)、RTMPS类似RTMPT,但使用的是HTTPS连接;
RTMP协议是被Flash用 于对象、视频、音频的传输。这个协议建立在TCP协议或者轮询HTTP协议之上。RTMP协议就像一个用来装数据包的容器,这些数据既可以是AMF格式的 数据,也可以是FLV中的视音频数据。一个单一的连接可以通过不同的通道传输多路网络流,这些通道中的包都是按照固定大小的包传输的。

直播中常见的协议还有
  • RTSP(Real Time Streaming Protocol,实时流传输协议):定义了一对多应用程序 如何有效地通过IP网络传送多媒体数据。
  • RTP(Real-time Transport Protocol,实时传输协议):RTP是针对多媒体数据流的一种传输层协议,详细说明了在互联网上传递音频和视频的标准数据包格式。RTP协议常用于流媒体系统(配合RTCP协议),视频会议和一键通系统(配合H.323或SIP),使它成为IP电话产业的技术基础。
  • RTCP(Real-time Transport Control Protocol,实时传输控制协议):RTCP是RTP的配套协议,为RTP媒体流提供信道外的控制。RTCP和RTP一起协作将多媒体数据打包和发送,定期在多媒体流会话参与者之间传输控制数据。
    RTCP的主要功能是为RTP所提供的服务质量(QoS)提供反馈,收集相关媒体连接的统计信息,例如传输字节数,传输分组数,丢失分组数,单向和双向网络延迟等等。网络应用程序可以利用RTCP所提供的信息来提高服务质量,比如限制流量或改用压缩比小的编解码器。

步骤

在客户端上要完成直播视频的采集及RTMP上推,主要需要以下几个步骤:
1.音视频的采集;
2.对视频进行H264编码,对音频进行AAC编码;
3.对编码后的音、视频数据进行FLV封包;
4.建立RTMP连接并上推到服务端。
而在将原始视频编码过程中,有两种方案:一种是利用第三方库FFmpeg 进行编码,一种是利用iOS自身的AVAssetWriter 或VideoToolBox.framework的VTCompressionSession进行编码。FFmpeg因其跨平台及功能丰富等诸多优势,被广泛使用。而使用AVAssetWriter编码需要将视频写入本地文件,然后通过实时监听文件内容的改变,读取文件并处理封包。从iOS8开始,VideoToolBox提供了硬件编码支持,可以使用VTCompressionSession进行编码。

H264编码与AAC编码

服务器的搭建

说了这么多到服务器的搭建了,这里提供两个流媒体服务器搭建的地址,按照这个地址我们可以自己搭建服务器进行推流。因为过程和截图实在是比较详细,我就不再重复截图一遍了,传送门:iOS基于RTMP 的视频推流 与 
HLS-搭建Nginx流媒体服务器(3)
以及IOS手机直播Demo技术简介。需要知道的就是,现在直播应用,采用RTMP协议居多,也有部分使用HLS协议。
采用RTMP协议,就要看下它与流媒体服务器交互的过程,RTMP协议的默认端口是1935,采用TCP协议。并且需要了解FLV的封装格式。

拉流

直播测试的实现的总体思路大致就是,(开源推流框架:腾讯,优酷等)+ (Nginx+RTMP) + (ijkplayer)。
我们要实现我们的直播播放,就是把获取到的数据解压缩,恢复成原始数据。解码就是将H264变成YUV,AAC变成PCM。
解码可以使用软解码,硬解码。
软解码就是利用CPU资源去解压缩数据,采用的方式是FFmpeg解码。
硬解码,对于iOS平台来说,可以使用VideoToolbox.Framework(该框架只能在iOS 8.0及以上系统使用)。为了方便我们的实现,我们采用的一般方式是第三方的SDK,网易云直播,暴风云直播,腾讯云直播,新浪云,VideoCore ,以及哔哩哔哩的ijkplayer等。
有比较多的SDk可以帮助我们去实现播放和推流 。

名词介绍

后记

本来还想自己多写写来着,但是知道看了一篇知乎,觉得自己确实涨了不少知识,这里放上链接,如何搭建一个完整的视频直播系统?我自己先去好好看看了。
通过我的学习与研究后续再更新吧。

1
0
查看评论

iOS动手做一个直播(代码篇)

原文出处: 夜3033    开篇 好久没写简书,因为好奇的我跑去学习直播了,今天就分享一下我的感慨。 目前为止直播还是比较热点的技术的,简书,git上有几篇阅读量和含金量都不错的文章,但是别人的终究是别人的,有些时候哪怕是照着写一遍...
  • LLy_Alex
  • LLy_Alex
  • 2016-08-29 09:16
  • 363

iOS直播APP—原理篇

原文:http://www.jianshu.com/p/bd42bacbe4cc 作者:@袁峥Seemygo 一、使用的三方SDK 直播:七牛云 即时通讯:环信 视频滤镜:GPUImage 二、直播环节 推流端:采集(AVFounddation) 美颜处理(GPUImage) 编码(音频:FFmp...
  • M_nao
  • M_nao
  • 2016-12-06 22:16
  • 718

iOS 封装之 直播弹幕

在某网站看直播的时候,突然奇想,想自己封装一下弹幕效果,以后做App的时候可以直接用 总结了一下我的需求 1. 界面可显示其他来源的弹幕 2. 要求自己可以发送弹幕 3. 自己发送的弹幕与他人发送的不一致(实现效果与ZQ保持一致) 4. 支持横竖屏切换 5. 承载弹幕的Label要求变长
  • yanglei3kyou
  • yanglei3kyou
  • 2015-08-31 14:09
  • 1967

iOS - 直播相关的开源库/项目

原文:http://www.jianshu.com/p/ca02af589099 RTMP播放相关 FFmpeg GitHub 所有版本 编译脚本 脚本 gas-preprocessor FFmpeg-AVPlayer-For-iOS-tvOS GitHub Vitamio GitHub PLP...
  • lincsdnnet
  • lincsdnnet
  • 2016-10-24 09:59
  • 713

一步步搭建视频直播系统,基于LFLiveKit+ijkplayer+rtmp(iOS端)

原文来自简书,原文地址:http://www.jianshu.com/p/30595a5bff42 本文主要使用的三个技术: 推流:LFLiveKit播放:ijkplayer服务器:nginx+rtmp+ffmpeg 有了这三点技术就可以完成一个简约的直播系统。效果图如下(右边...
  • qq_30513483
  • qq_30513483
  • 2017-01-05 10:22
  • 2353

iOS集成腾讯直播

做了一个月的直播了,之前是自己公司大牛写的直播app。后面老板要求将直播功能模块换成腾讯的,只能硬着上了。先说下腾讯直播吧,从下载就遇到坑,按照文档下载,下载下来的直播互动demo没有,原来demo的下载地址在一个一起下载下来的文档里,一个github地址。 demo源码地址 Android:h...
  • lhy1233212580
  • lhy1233212580
  • 2016-08-23 16:34
  • 2323

ios视频直播没有音频问题

近期发现我们的ios视频互动直播app偶尔出现没有声音的问题,但是出现的频率不高。 从后台的检测来看,是没有音频流上传到服务端,后来使用雷神的VideoEye分析录像文件,发现只有很小的音频流,差不多7K左右,一般应该是80k左右。 感觉这些音频流只是一些音频包的头,并没有真实的音频数据。 但...
  • gaopeipeiok
  • gaopeipeiok
  • 2016-03-16 11:08
  • 878

iOS开发之移动直播技术秒开、直播优化经验、直播问题解析、直播知识解惑

本文由徐立在高可用架构群分享,来自高可用架构「 ArchNotes 」 现今移动直播技术上的挑战要远远难于传统设备或电脑直播,其完整的处理环节包括但不限于:音视频采集、美颜/滤镜/特效处理、编码、封包、推流、转码、分发、解码/渲染/播放等。 直播常见的问题包括...
  • zhonggaorong
  • zhonggaorong
  • 2016-05-25 18:18
  • 4763

iOS直播实用篇(手把手教)

一.简述总体内容 1.直播流程介绍 2.Mac搭建nginx+rtmp服务器(模拟推流拉流) 3.简单的集成推流拉流(实用篇) 4.好的博客推荐 二.直播流程介绍   1.简单的流程图 简单的流程图 2.七牛的直播流程 七牛的直...
  • yibaozhifu
  • yibaozhifu
  • 2016-11-15 10:15
  • 1704

iOS 直播技术及Demo

今天写一些关于iOS直播技术相关知识,及详细Demo介绍,总结了关于直播的一系列知识,希望对各位学习了解直播有一定的帮助,新年将至,这里预祝大家新年快乐,事业有成!
  • lunahaijiao
  • lunahaijiao
  • 2017-01-18 11:32
  • 1498
    个人资料
    • 访问:37376次
    • 积分:549
    • 等级:
    • 排名:千里之外
    • 原创:5篇
    • 转载:78篇
    • 译文:0篇
    • 评论:2条
    文章分类
    最新评论