- 博客(14)
- 资源 (34)
- 收藏
- 关注
转载 语音即时通信总结
一、要回答这个问题,从最基本的数据传输开始说。将数据从一个麦克风开始传输到另一个客户端上,并且进行播放来说,它的流程是怎样的呢?对于客户端A来说,它首先会将数据投递到一个SendPacket当中,也就是直流传输,然后会把数据解析成每一个帧,然后将每一个帧的数据解析成IoArgs,最终通过服务器将数据传递到B客户端中,B客户端接收到数据的时候,会反向解析出帧,然后解析成SendPa...
2020-03-30 22:55:29 1403
转载 客户端数据编码技术选型
一、语音传输流程要把麦克风录制的声音发送到另一个客户端或者是本机的麦克风上播放,第一步就是录制最原始的声音,最原始的声音就是PCM数据流。这个数据流不能直接进行传输,需要先进行压缩转码操作。而压缩转码和我们的数据流之间其实是一个循环操作,它可以不断去拿原始数据,然后去压缩转码。将数据压缩转码完成之后,需要进行网络传输,此时会把数据发送给另一个客户端。这个发送过程就借助整个后台的体系框架,也...
2020-03-30 14:13:17 231
转载 服务器桥接改造实现
一、环形缓冲区环形缓冲区就是一个环形的东西,里面的数据头、尾结合在一起,形成了环形缓冲区。环形缓冲区有一个特点,当一个数据元素被删掉之后,其余的元素不需要移动它的位置。同时,它满足先进、先出的规则,缓冲区比较适合最开始确定的一个最大容量的情况下,那么,往里面填充数据,最终读取数据的过程。在桥接模式中,需要把数据接收下来,然后再发送到另一个客户端。但是,由于同时存在接收和发送,而发送和接...
2020-03-30 12:09:04 909
转载 语音数据直流扩展
一、数据传输流程如果想发送数据,先把数据放到Packet中,然后把数据写入到IoArgs中再进行发送。在这个过程中,packet对应的是一个有限大小的inputstream,会把数据读取一部分到buffer中,这个过程是由channel来完成的,也就是从packet到buffer之间的channel来完成的。通过不停地循环buffer,将数据全部填充到Frame当中,再把Frame发送给I...
2020-03-30 07:23:14 217
转载 语音即时通信分析
一、二、输入端可以是屏幕也可以是摄像头,通过软件将音频、视频转换为数据,然后该数据流通过管道传输到服务器上面。如果软件具备一定的服务器功能,也可以直接发送到CDN上面。如果传输到服务器的大后台,还可以在该大后台上增加一些广告,用户会看一部分视频,看一部分广告,再看一部分视频,这些是可以在服务器端实时实现的。最后到达客户端。客户端有一个动态码流适配的功能,也就是HLS.三、...
2020-03-29 16:29:41 364
转载 心跳包构建与消费调度
一、Netty心跳实现二、重要类HeartbeatReceiveFrame : 心跳接收帧HearbeatSendFrame : 心跳发送帧ScheduleJob : 心跳包调度(一个runnable)IdleTimeoutScheduleJob : 空闲超时的心跳包调度(一个runnable)三、类图四、发送心跳包过程...
2020-03-29 13:30:56 204
转载 心跳包必要性与策略选择
一、CS模型中如何相互知晓状态为什么需要心跳包?在传统的CS模型中,客户端与服务端相互发送消息的过程中,是需要知道相互之间的状态的,因为客户端随时可能给服务端发送消息。在聊天过程中,是不可能客户端随时给服务端发送消息,真实情况是服务端收到某个客户端的消息之后推送过来。在这个过程中,服务器需要知道客户端是否可用的。服务端要想知道客户端是否可用,最大的问题在于可能客户端异常地断开了,但是服...
2020-03-29 06:03:52 1132
转载 服务器消息调度逻辑规范化
当消息到达服务端的时候,是给所有客户端发送消息,没有一个群的概念。应该有一个新建群,然后加入群聊。加入群聊后,发送消息将会通知到群聊中的所有客户端。也可以退出群聊,退出群聊后发送的消息将不会被客户端收到。二、类说明ConnectorHandlerChain : 连接Handler的链式结构ConnectorCloseChain : 关闭连接链式结构ConnectorStri...
2020-03-29 03:07:28 222
转载 数据三层缓冲区IoArgs调度优化
一、三层缓冲区PacketIoArgsFrame二、三者的管理者Packet是AsyncSendDispatcher或者AsyncReceiveDispatcherFrame是AsyncPacketReader或者AsyncPacketWriterIoArgs比较模糊,IoArgs中持有了一个ByteBuffer,她是本次应该发送或者应该接收的数据的存储空间。...
2020-03-27 13:22:07 410
转载 并发客户端BUG修复与性能优化二
一、bufferedReader读取数据如果强制退出,读取数据时可能为空,使用str时可能报空指针异常str = bufferedReader.readLine()所以需要添加判断 if(str == null||Foo.COMMAND_EXIT.equalsIgnoreCase(str)){ break; }...
2020-03-27 11:17:16 232
转载 并发客户端BUG修复与性能优化一
一、当线程处于Monitor状态时,说明等待实体的释放。即多个线程在等待同一个锁的释放。1、对于写线程当Selector处于工作状态时,是不允许更改其集合体的,即此时不能调用key.interestOps(key.readyOps())channel.register(selector,registerOps)当更改key的读、写时,都涉及到对集合体的变更,此时,...
2020-03-27 00:54:50 632
转载 消息调度分析
一、客户端与服务器之间最多建立多少个Socket链接?自己的电脑连接达到成千上万个的时候就会发生崩溃。Socket四要素:服务器的地址、服务器的端口、客户端的地址、客户端的端口49152到65535号端口属于“动态端口”范围,没有端口可以被正式地注册占用。65535-49152 = 16383 也就是说使用自己的电脑连接自己的服务器,最多可以连接客户端的数量是16383个。...
2020-03-26 23:07:15 423
转载 消息分片传输设计与实现
一、数据发送过程中存在的问题发送中无法取消文件发送大文件传输容错率较低同一连接无法实现文件、普通消息优先级二、分片数据传输流程三、分片逻辑实现根据文件大小计算分片、并读取数据到分片分片数据固定格式打包发送分片数据解析与分片组装Dispatcher调度逻辑调整四、Packet规则五、分片消息规则六、Packet新规则七、...
2020-03-25 06:04:39 1203
安卓与pc端进行连接
2014-12-04
nginx服务端flash播放器.zip
2019-12-15
ffmplayer.rar
2019-11-21
qq_voicer_change.rar
2019-11-12
HiAR多图识别、AR、增强现实开发、虚拟现实开发
2017-06-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人