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回应该请求
IOS 视频直播/智能家居(一行行敲代码,从零开始)lesson:1整体架构相关推荐
- iOS 视频直播技术
iOS 视频直播技术 直播难:直播中运用到的技术难点非常之多,视频/音频处理,图形处理,视频/音频压缩,CDN分发,即时通讯等技术,每一个技术都够你学几年的. 直播易:市场已经有很多成熟的案例了.最常 ...
- ios视频直播SDK集成指引
此文介绍语音视频云服务商即构科技提供的ios视频直播SDK集成指引.此SDK可实现主播和观众以一对一.一对多.或多对多的关系等,并支持小程序. 手动安装 目前 ZegoLiveRoom SDK 仅支持 ...
- 最近这么火的iOS视频直播
快速集成iOS基于RTMP的视频推流 http://www.jianshu.com/p/8ea016b2720e iOS视频直播初窥:高仿<喵播APP> http://www.jiansh ...
- 基于智能家居c语言程序代码,基于单片机的智能家居系统设计(附程序代码)
基于单片机的智能家居系统设计(附程序代码)(任务书,开题报告,外文翻译,论文10000字) 摘要 基于近年来通信电子技术的高速发展,使得一些原来可望不可及的事关民生的技术变为可能,条件允许的情况下,人 ...
- iOS视频直播初窥:高仿
效果图 gif1 gif2 由于licecap录制的GIF失帧太严重, 都模糊掉了, 再放两张高清截图 png1 png2 前言 今年三月份,斗鱼获腾讯领投的1亿美元融资的消息被各大平台报道转载,在电 ...
- iOS视频直播:高仿喵播APP
效果图 gif1 gif2 由于licecap录制的GIF失帧太严重, 都模糊掉了, 再放两张高清截图 png1 png2 前言 今年三月份,斗鱼获腾讯领投的1亿美元融资的消息被各大平台报道转载,在电 ...
- ios视频直播没有音频问题
近期发现我们的ios视频互动直播app偶尔出现没有声音的问题,但是出现的频率不高. 从后台的检测来看,是没有音频流上传到服务端,后来使用雷神的VideoEye分析录像文件,发现只有很小的音频流,差不多 ...
- iOS 视频直播(一)
原文地址:http://www.cnblogs.com/runner42/p/5241407.html SDK下载地址:https://github.com/runner365/LiveVideoCo ...
- iOS视频直播又一大神开源项目、RTMP 协议
随着直播市场的火热,市场大军都逐步进入直播市场 ,腾讯旗下的NOW直播也不例外 先说说直播设计底层 一 .流媒体 1 - 伪流媒体 1.1 扫盲:边下载边播放 1.2 伪流媒体:视频不是实时播放的,先 ...
最新文章
- thinkbook14 2021款电脑买来后发现:关机后电源指示灯仍然是亮的
- Web前端经典面试试题(一)
- java文件在没有安装jdk的windows下运行。
- unknown bottom blob ‘data‘ (layer ‘data_fixed‘, boblob ‘data‘ (layer ‘data_fixed‘, bottom index 0)
- php 频繁dom和 文件,性能优化之为什么不要频繁操作DOM
- 【1489】求二叉树的先序遍历 SDUTOJ
- Ajax表格控件实现
- cmakefile 基础篇
- Runner站立会议04
- java实现用户分组,根据用户指定的组分组数据
- 多线程压测_京东618压测时自研中间件暴露出的问题,压测级别数十万/秒
- python 服务端渲染_详解React 服务端渲染方案完美的解决方案
- docker中启动Springboot时异常之Failed to instantiate [com.zaxxer.hikari.HikariDataSource]
- 记录一次破解移动吉比特光猫H2-2超管密码的过程
- python zemax_最新Python中文版发布,跨界程序员零压力学Python之道!(附下载)
- java图片的在线预览_【Java】web实现图片在线预览
- 一程序员辞职开发赌博软件,2年涉案4千万被抓
- 无法启用网络发现的解决方法
- 【trick 5】warmup —— 一种学习率调优方法
- Log sum inequalit 对数和不等式的证明
热门文章
- 每周值得关注的人工智能头条:DOTA 2,职业选手保住了人类的尊严
- 没有内容、没有流量、没有客户精准数据,怎么营销冷启动
- 对bmp灰度图像的Huffman编解码
- oracle字段只提取汉字_Excel自学教程:数据规范——如何快速提取文字中间的数字...
- 2019年AI芯片产业深度研究报告
- ubunto 搭建 lamp
- Qt OpenGL(二十七)——Qt OpenGL 核心模式--EBO
- 绥化学院计算机科学技术,绥化学院本科计算机科学与技术_绥化学院本科计算机科学与技术简介-查字典学校网...
- 代码详解:用Python给你喜欢的音乐分个类吧
- Wi-Fi 7来了!小米13系列和万兆路由器再提速