自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(16)
  • 资源 (3)
  • 收藏
  • 关注

原创 乐马专车手机端:架构设计

文章目录用户端司机端乐马专车手机端,分别包括“乐马专车用户端”,“乐马专车司机端”,“乐马专车商加端”,“乐马专车调度端”四个APP组成。以下会对用户端和司机端的架构进行介绍。用户端乐马专车用户端按功能划分,其功能架构图如下。用户管理系统包括用户帐号相关的所有功能,以及基于打车的周边业务都包括在内。订单系统主要承担下单任务以及订单查询功能。订单要分成“即时订单” “预约订单” “接送机订单” “闪送订单”。行程系统主要承担当前活跃中的订单的从开始到结束的整个行程的处理。包括司机接单后前往目的地

2021-06-23 15:48:35 578

原创 Cable Messenger 多人实时音视频聊天:Webrtc的基本使用

在实时音视频聊天功能中,Cable Messenger 使用了Google的Webrtc框架库。“Media管理中心”的实现,主要是围绕Webrtc框架库的使用,结合项目中的业务设计而成。对于未使用过Webrtc的朋友来说,希望看完本篇后,可以使你少走弯路。Webrtc在不同平台上,其API有一点的差点,但大致的思想是不变的。本篇将以IOS平台的Webrtc框架库的使用为例,以Swift语言的方式为大家展示整个过程。使用Webrtc的流程创建一般步骤一般步骤如下:创建RTCPeerConnecti

2021-06-21 23:33:54 302

原创 Cable Messenger 多人实时音视频聊天:信令系统

文章目录

2021-06-20 23:17:14 345

原创 Cable Messenger 多人实时音视频聊天:系统架构

文章目录音视频聊天用什么方式进行通信STUN 与 TURN 服务信令系统P2P多人音视频聊天的特点做音视频聊天是一件有趣的事,因为你可以有机会去学到很多其它领域的东西。Cable Messenger 的音视频聊天主要采用Google的Webrtc库,以及搭配我们自己开发的一套“信令系统”实现。对于Webrtc源码的学习和研究,一直会是一件十分振奋人心的事情。很多在接Webrtc库时,对他内部到底做了什么操作的这些疑问,以及很多技术细节,包括穿透的整个细节过程是怎么处理的等等问题将会得到答案。当然由于项目

2021-06-19 20:50:01 432 2

原创 Cable Messenger:语音波纹曲线生成策略

文章目录波纹数据的生成与分析波纹曲线控件核心逻辑Cable Messenger 聊天中进行短语音发送时,可以通过对语音文本数据进行实时分析,生成相关的语音波纹起伏曲线。此篇文章主要为了倡导大家,在项目开发中,要多思考多实践,不要动手就离不开第三方库,没有第三方库就迈不开腿,甚至去找产品经理去改需求。很多东西其实可以自己写自己实现,而且要多了解和学习技术,多了解事物的本身,做项目不是简单的堆第三方库。波纹数据的生成与分析PCM(Pulse Code Modulation,脉冲编码调制)音频数据是未经压

2021-06-14 16:20:02 339 1

原创 Cable Messenger : 通讯层加密传输方案

文章目录HTTPSWebsocketOAuth 2.0 授权机制Cable Messenger 在项目设计之初,就对数据安全提出了一定的要求。可以大致上分成“对通讯层加密”和“对敏感内容加密”。这里首先介绍“对通讯层加密”的相交内容。作为一款IM产品,Cable Messenger 采用了HTTP超文本传输协议,TCP面向连接的传输控制协议,还在后面才介绍到的点对点近场通讯协议。而在长连接部分,在TCP基础上,我们采用了时下比较流行的更上层应用协议Websocket。在以前的文章我也对Websocket

2021-06-12 16:39:39 252 2

原创 用源代码简单透析Websocket背后的真相:三. 数据的接收及分包处理

继上一节讨论“数据包的发送”之后,对于数据包的接收处理也是很多网络请求框架实现中最核心的处理逻辑之一。通过查看Starscream的源代码,在接收到接收缓存回调回来的数据后的处理上,在进行多线程处理方面处理得可谓不尽人意:一方面对接收数据缓存的数组没有进行原子操作。在实现上,要么进行操作前的加锁操作后解锁,要么放到同步串行队列中操作。另一方面,在进行数据包拆包操作的过程没有进行队列化操作,个人感觉在运行架构的设计上欠缺考虑。拆包逻辑与Websocket内部指令处理逻辑混在一起,在逻辑架构上的设计也

2020-06-05 12:06:56 724

原创 用源代码简单透析Websocket背后的真相:二. 数据发送

文章目录数据包的封装总结Websocket同时支持“字符串”及“二进制”数据的发送操作,因为在其发送的时候,都要进行二进制数据类型的转换。数据包的封装在正常数据交换过程中,对发送的数据进行封装是必不可少的。对于上面进行的“连接文本”的发送相对来说只是一个特例。有空的话,找一个Websocket服务端的库进行源代码的分析。我们常用的通讯方式,几乎都是基于TCP/UDP的方式进行数据发关的,其中TCP基于连接的发送方式比较常用。无论基于哪种方式,在数据接收端都是基于接收缓存的方式,接收一定数量的包后回调

2020-06-04 19:39:57 216

原创 用源代码简单透析Websocket背后的真相:一. 连接流程

文章目录1. 建立连接文本2. 发送连接文本3. 处理服务端返回的连接响应信息4.连接流程总结感觉现在很多做APP开发的朋友,都习惯了对第三方库的依赖,没有第三方库做什么都无从下手的样子,无论是面试还是聊天,都口若悬河滔滔不绝地堆出很多第三方的库,并引以豪。其实用一些比较好用稳定的第三方库去实现一些功能,我个人认为是可行的,但并不代表就不用去了解一些基础的概念了。所以这次打算从一个开源库的源代码出发,去了解Websocket到底是什么。1. 建立连接文本一言不合,直接上代码吧 /**

2020-06-04 18:27:03 375

原创 解决IOS12复杂跨域兼容问题的方案与思路

文章目录一. 故事的起因二. 什么是跨域资源访问三. CORS跨域安全标准1. 简单跨域请求2. 复杂跨域请求四. 发现问题的步骤1. 对不同硬件平台不同系统进行测试2.确定跨域类型,及接口端的实现五. 解决问题的步骤1. 能否在原生开发层面解决问题:2. 能否通过外部条件解决问题:1. Access-Control-Allow-Origin2. Access-Control-Allow-Credentials3. Access-Control-Expose-Headers六. 结论一. 故事的起因对

2020-05-17 00:58:57 4960 4

原创 会议投屏直播:UDP通讯方案的探索(四. FEC分片数据生成及向前纠错处理)

文章目录XOR-FEC分片分组XOR-FEC分片还原与TCP数据传输机制不同,采用UDP向目标地址发送报文时。从理论上说,数据的接收顺序有可能是乱序的,更令人头痛的是UDP其发出后不管的特性使到数据是否已经到达无法感知,而丢包问题又经常发生,所以采用UDP进行数据传输时,基本上一直围绕着丢包处理这件事展开。那么当丢包事情发生的时个,一般的处理办法如下:NACK机制当接收端发现数据包丢失...

2019-08-28 18:48:24 446 2

原创 会议投屏直播:UDP通讯方案的探索(三. 流程架构)

文章目录一. 推流端架构流程二. 接收端架构流程在前面的章节中针对数据格式的定义与数据发送接收方面作了大部分的介绍,但似乎一直缺乏了从架构流程方面全面描术过。尽管前面也零零星星地介绍过部分流程,但是非常不完整的。如果在前面的文章中过多介绍又显得中心不突出。所以这里会进行种点介绍。一. 推流端架构流程相对于“接收端”,“推流端”自动采用UDP + 组播的方式实现后,从逻辑流程复杂度上大大降低了...

2019-08-28 17:12:18 366

原创 会议投屏直播:UDP通讯方案的探索(二. 数据的发送与接收)

文章目录一. 为什么想到用组播一. 为什么想到用组播单台设备又要进行音视频数据的采集,同时又要担负对多台加入的设备进行实时推流的能力。显然在内存及并发推流能力上很快就已经进入到一个瓶颈了。在用TCP进行推流的代码实现后,在实际的的测试过程中,在清晰度要求不下降的情况下,连接设置超过20台之后就开始出现明显的卡顿现象了。因为推流端基于Extension(应用扩展)方式实现,在内存使用上不能超...

2019-08-28 12:16:11 425

原创 会议投屏直播:UDP通讯方案的探索(一. 数据传输格式的定义)

文章目录一. 前言二. 格式的定义TCP数据包格式UDP数据包格式最大传输单员(MTU)应用层分片的重要性UDP数据包结构UDP数据分片封包UDP数据解包一. 前言一开始用TCP,很大程度时因为简单,可以快速实现一个初级的版本。因为受限于各种要求,TPLine从一开始就不准备通过中间服务对用户端实施推流。所以在使用中,单台IPad作为主播端,同时开启推流程序,同是为多个接入端推送数据流。TC...

2019-08-26 20:17:31 574

原创 会议投屏直播:缓冲队列与环形队列

目录前言缓冲队列“无锁数组 + 信号量”的实现方式带锁数组的实现方式环形队列前言队列作为常用的数据结构,使用上较为广泛。以长连接通讯为例,为实现数据生成与发送处理上互不干涉,数据发送缓冲队列是一个较为常用的缓冲手段。在TPLine 投屏直播会议系统中,无论广播发送端还是广播接收端,都采用发送缓冲区实现数据生成后的缓冲发送工作。入队与出队也通常运行在不同的线程中,为实现数据频繁的入队与出队操作...

2019-06-22 01:34:09 280

原创 会议投屏直播:投屏数据流获取方案

目录不同系统版本的演进ios 10初始方案的提出iOS 11 数据流方案开始提供ios 12 主动触发控件开始支持注意事项1. Extension 50M 内存限制2. Extension 逻辑处理的时间限制3. 同步线程队列执行编码4. RPSystemBroadcastPickerView不稳定开发过程中的经验1. 如何调试Extension2. 如何处理奇怪的现象不同系统版本的演进这里只...

2019-06-20 13:07:06 2148 9

[android.开发书籍].Android.NDK.Beginner-'s.Guide.pdf

[android.开发书籍].Android.NDK.Beginner-'s.Guide.pdf

2014-08-29

REF_ACR38x_CCID_6.04

REF_ACR38x_CCID_6.04

2014-08-29

Developing_Multimedia_Applications_with_NDK.pdf

Developing_Multimedia_Applications_with_NDK

2014-08-29

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除