- 博客(9)
- 资源 (10)
- 收藏
- 关注
原创 WebRTC移动端自定义音视频
WebRTC是基于点对点视频通话,底层协议栈主要是SRTP、UDP,基于SDP会话协议交互通话前报文(会话描述、ICE报文),通过ICE代理搜集双方的地址信息,大多数情况下音视频数据来源于手机的摄像头和麦克风,本文探讨的是基于源码自定义外部音视频数据。1、源码下载要开通VPN,下载基于iOS版本的源码https://webrtc.github.io/webrtc-org/native-code/ios/,需要注意的是如果源码在Linux平台下载,记得拷贝到mac之后要执行gclient sync同步
2021-07-23 15:49:55
1500
原创 WebRTC - ICE, STUN and TURN理解
WebRTC前期建立连接中,需要用到ICE、STUN以及TURN协议,下面对这三个协议做详细描述:1、ICE协议ICE - Interactive Connectivity Establishment:交互连接建立协议,是一种为基于offer和answer模型的UDP多媒体会话建立的NAT(网络地址翻译器)穿越协议,2、STUN协议3、TURN协议...
2021-04-20 18:12:05
475
原创 编解码 - 帧内预测过程剖解
帧内编码指的就是像预测、变换等压缩操作所使用的数据是来自本帧内,非其它视频流中的帧。下面详细讲解预测过程:1、寻找最佳预测像素集合(帧内预测的目标)使用已经编码或者重建好的相邻块来作为参考源,主要指的就是top或者left部分块(参考的是光栅扫描顺序),用以上参考块来预测当前的块,之所以用相邻块是因为跟当前块的相似度最高,相识度高意味着冗余度高,冗余度高意味着压缩率好。常用的预测模式:水平、垂直、对角线和其它角度方向,如下图所示:2、生成残余值就是预测块和当前块的差值,如上图所示,不
2021-04-19 14:37:59
971
原创 基于块的编码器架构
现代的codecs,像H.265和VP9采用的是混合、基于块预测的架构,如下图所示:在这个模型中,视频序列的每一帧图片会被分为帧内预测和帧间预测帧,就是我们所说的I帧和P、B帧,编码器对于复杂的场景变换自动插入I帧,并且会有自己的检测算法。以下详细描述整个视频编码流程:1、拆分块:每一帧拆分成块形状区域:H.264的macroblocks,即我们说的16x16;VP9的64x64;H.265的CTU(编码树单元);AV1的128x128,然后每一块按照光栅顺序输入到编码管线当中。每一个块还可以递
2021-04-14 12:03:40
401
原创 OpenGL ES对于缓存的管理
缓存是指图形处理器能够控制和管理的连续的RAM。对缓存管理分三个阶段:1、构建阶段生成独一无二的标识符:glGenBuffer()。绑定运算使用的缓存:glBindBuffer()。初始化数据:glBufferData()or glBufferSubData()。2、启动阶段启用或者禁止缓存:glEnableVertextAttribArray() or glDisa...
2020-01-10 22:25:17
441
1
原创 Masonry布局过程剖解
自动布局的核心公式:obj1.attr = mutiplier * obj2.attr + constant (默认mutiplier = 1)第一阶段:创建约束创建者,收集约束试图、约束属性、参考试图、参考属性、约束关系、偏移量。1、创建MASConstraintMaker,初始化的时候传入当前试图作为约束试图。2、收集约束属性:通过调用约束创建者left、right、top、b...
2019-12-06 11:05:36
393
原创 AFNetworking请求和响应解析过程剖解
AFNetworking 3.x是我们熟悉的iOS常用的网络库,这里对它的源码进行分析,我们从最简单的get请求,剖解一下从请求开始,到响应拿到结果的过程。第一阶段:任务创建1、请求创建和序列化:NSMutableURLRequest创建、设置HTTP方法、设置头部信息、根据请求方法序列化参数到地址或者body里面来形成字符串。2、创建NSURLSessionDataTask...
2019-12-05 16:01:14
477
iOS Apps for Masterminds (第四版 - iOS 12)
2018-09-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人