IOS 视频直播/智能家居(一行行敲代码,从零开始)lesson:1整体架构

前段时间由于工作需要做了一个视频直播/智能家居类的应用。算是对iOS音视频专栏中流媒体处理做了一次小结。这里想把整个开发流程纪录下来,一方面是和大家共同探讨学习,另一方面也可以方便自己以后查漏补缺。

整个开发没有借助任何第三方框架,所有流媒体协议都是一行行敲上去的,为什么呢?呵呵 授之以鱼不如授之以渔!

下面开始先了解下整个软件的架构

前端我们在IOS audio&video 专栏中已经介绍的非常详细了,包括摄像头、音视频的各种处理都做了详细的分析。后端我们也在IOS audio&video 专栏的FFmpeg中、高级使用中也做了详细的介绍,这里也不再讨论。下面就网络部分做详细的分析。

(1)RTCP

RTCP:RTP Control Protocol,实时传输控制协议,一般和RTP配合使用,主要用于数据传输的监视,控制功能。同时RTCP是基于UDP传输的。RTCP传输的这些信息非常重要,主要包括:时间戳(用于同步)、序列号(用于丢包和重排序检测)、以及负载格式(用于说明数据的编码格式)。简单概括一下,就是用于QoS反馈和同步媒体流。与RTP比较而言,其带宽一半占用只有RTP的5%左右。非常小。

根据不同的使用状态,RTCP分为下面几种情况:

直播、智能家居类项目只要用到发送端报告,这里我们会在后面的代码中详细分析。

(2)RTP

Real-time Transport Protocol,实时传输协议,一般用于多媒体数据的传输。音视频主要通过这个协议传输,它是建立在UDP协议上的,效率更高但允许丢包。所以在媒体重组时需要做不少工作。RTP协议包格式如下:

(3)SDP

我们先来看看抓包的网络请求过程:

服务器响应数据。我们关心的部分:RTSP

response=RTSP/1.0 200 OK

CSeq: 1

Content-base: rtsp://192.168.36.168/

Date: 2015年7月29日 GMT+8下午2:52:00

Content-Type:application/sdp

Content-Length:424

  SDP部分:

v=0

o=-1804289383 1804289383 IN IP4 192.168.36.168

s=Livestream from iOS

c=INIP4 0.0.0.0

t=00

a=control:*

m=video0 RTP/AVP 96

b=TIAS:85528

a=maxprate:9.0000

a=control:streamid=1

a=rtpmap:96H264/90000

a=mimetype:string;"video/H264"

a=framesize:96720-480

a=Width:integer;720

a=Height:integer;480i

a=fmtp:96packetization-mode=1;profile-level-id=64001e;sprop-parameter-sets=Z2QAHqxWwLQ9pqAgICBA,KO4CPLA=

可以很清晰的看到RTSP协议是包含两部分的,第一部分为rtsp传输协议,另一部分是SDP协议。SDP准确的说其实不能算是传输层协议,而要规划到会话层协议部分。SDP(SessionDescription Protocol)是服务器端生成的描述媒体文件的编码信息以及所在服务器的链接等信息的文件,客户端通过它来设置播放软件的参数。

(4)RTSP

有了以上的分析,我们基本了解了整个结构,那么还剩下最后一部分,RTSP协议。实时流传输协议,是TCP/IP协议体系中的一个应用层协议。和Http协议类似。至于协议的具体结构我们放在后面和代码一起讲。

下面看看一个RTSP流媒体交互的简单过程:这是一个比较典型的请求过程:

1. Client->Server:OPTION request  //询问S有哪些方法可用

1. Server->Client:OPTION response  //S回应信息中包括提供的所有可用方法

2. Client->Server:DESCRIBE request  //要求得到S提供的媒体初始化描述信息

2. Server->Client:DESCRIBE response  //S回应媒体初始化描述信息,主要是sdp

3. Client->Server:SETUP request  //设置会话的属性,以及传输模式,提醒S建立会话

3. Server->Client:SETUP response  //S建立会话,返回会话标识符,以及会话相关信息

4. Client->Server:PLAY request  //C请求播放

4. Server->Client:PLAY response  //S回应该请求的信息

Server->Client:发送流媒体数据

5. Client->Server:TEARDOWN request  //C请求关闭会话

5. Server->Client:TEARDOWN response  //S回应该请求

时间: 2024-10-06 23:45:38

IOS 视频直播/智能家居(一行行敲代码,从零开始)lesson:1整体架构的相关文章

最近这么火的iOS视频直播

快速集成iOS基于RTMP的视频推流 http://www.jianshu.com/p/8ea016b2720e iOS视频直播初窥:高仿<喵播APP> http://www.jianshu.com/p/b8db6c142aad 做一款仿映客的直播App?看我就够了 http://www.jianshu.com/p/5b1341e97757

iOS视频直播

视频直播技术点 视频直播,可以分为 采集,前处理,编码,传输, 服务器处理,解码,渲染 采集: iOS系统因为软硬件种类不多, 硬件适配性比较好, 所以比较简单. 而Android端市面上机型众多, 要做些机型的适配工作.PC端是最麻烦的, 各种奇葩摄像头驱动.所以现在很多的中小型直播平台, 都放弃了PC的直播, 更有一些直播平台只做iOS端的视频直播. 前处理: 美颜算法,视频的模糊效果, 水印等都是在这个环节做. 目前iOS端最著名开源框架的毫无疑问就是GPUImage.其中内置了125种渲

iOS 视频直播的学习之路 ---- 直播大时代

首先,今天偶尔看了庄明浩先生的一篇演讲,大概内容如下(想看完整版的在这里 https://zhuanlan.zhihu.com/p/20717041): 直播大概是最近一段时间被资本市场疯狂关注,现在我们看到的这些公司上线都已经有段时间.以斗鱼为代表的直播平台,自14年创立到 现在已经有俩年的时间了.映客这一波为代表公司 ,创立的时候应该是15年年初.在15年下半年的时候,他们火过一波.今天为什么关注呢?有很多的原因,有资本市场的原因,有行业发展的原因,当然也有这些公司估值的原因等等.作为一个观

iOS平台基于ffmpeg的视频直播技术揭秘

现在非常流行直播,相信很多人都跟我一样十分好奇这个技术是如何实现的,正好最近在做一个ffmpeg的项目,发现这个工具很容易就可以做直播,下面来给大家分享下技术要点: 首先你得编译出ffmpeg运行所需的静态库,这个百度一下有很多内容,这里我就不多说了,建议可以用Github上的一个开源脚本来编译,简单粗暴有效率. 地址:GitHub - kewlbear/FFmpeg-iOS-build-script: Shell scripts to build FFmpeg for iOS and tvOS

iOS开发之集成ijkplayer视频直播

ijkplayer 是一款做视频直播的框架, 基于ffmpeg, 支持 Android 和 iOS, 网上也有很多集成说明, 但是个人觉得还是不够详细, 在这里详细的讲一下在 iOS 中如何集成ijkplayer, 即便以前从没有接触过, 按着下面做也可以集成成功! 编辑:Bison 投稿: jianshu_wl 一. 下载ijkplayer ijkplayer下载地址 下载完成后解压, 解压后文件夹内部目录如下图: 二. 编译 ijkplayer 说是编译 ijkplayer, 其实是编译 f

iOS基于ffmpeg做出的视频直播 (一)

现在非常流行直播,相信很多人都跟我一样十分好奇这个技术是如何实现的,正好最近在做一个ffmpeg的项目,发现这个工具很容易就可以做直播,下面来给大家分享下技术要点: 首先你得编译出ffmpeg运行所需的静态库,这个百度一下有很多内容,这里我就不多说了,建议可以用Github上的一个开源脚本来编译,简单粗暴有效率. 地址:GitHub - kewlbear/FFmpeg-iOS-build-script: Shell scripts to build FFmpeg for iOS and tvOS

iOS中集成ijkplayer视频直播框架

ijkplayer 是一款做视频直播的框架,基于ffmpeg,支持 Android 和 iOS,网上也有很多集成说明,但是个人觉得还是不够详细,在这里详细的讲一下在 iOS 中如何集成ijkplayer,即便以前从没有接触过,按着下面做也可以集成成功! 一.下载ijkplayer   ijkplayer下载地址:https://github.com/Bilibili/ijkplayer 下载完成后解压,解压后文件夹内部目录如下图: 二.编译 ijkplayer 说是编译 ijkplayer,其实

iOS:集成ijkplayer视频直播

介绍: ijkplayer 是一款做视频直播的框架, 基于ffmpeg, 支持 Android 和 iOS, 网上也有很多集成说明, 但是个人觉得还是不够详细, 在这里详细的讲一下在 iOS 中如何集成ijkplayer, 即便以前从没有接触过, 按着下面做也可以集成成功! original link : http://www.open-open.com/lib/view/open1463123602429.html 集成: 一. 下载ijkplayer ijkplayer下载地址 下载完成后解

智能家居的音视频技术

智能家居概念的起源很早,但一直未有具体的建筑案例出现,直到1984年美国联合科技公司才出现了首栋的"智能型建筑",从此也揭开了全世界争相建造智能家居的序幕,又称智能住宅. 智能家居是以住宅为平台,兼备建筑.网络通信.信息家电.设备自动化,集系统.结构.服务.管理为一体的高效.舒适.安全.便利.环保的居住环境.与普通家居相比,智能家居不仅具有传统的居住功能,提供舒适安全.高品位且宜人的家庭生活空间:还由原来的被动静止结构转变为具有能动智慧的工具,提供全方位的信息交互功能,帮助家庭与外部保