默认
发表评论 20
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
引用:LeoLee 发表于 2017-06-12 18:45
最终的解决办法是通过java的序列化和反序列化来做的,谢谢作者回复。

您好,我也想实现byte[]数据的传输,请问是怎么样通过序列化实现的,您能详细说明一下吗?
     请您指教,非常感谢!
评论 20
引用:LeoLee 发表于 2017-06-12 18:45
最终的解决办法是通过java的序列化和反序列化来做的,谢谢作者回复。

    您是不是先将消息封装为Protocal对象(根据您上面贴出的代码对Protocal类的修改),再直接通过Java对象序列化将Protocal对象序列化为byte[]。  而跳过源码中将Protocal对象转换为json格式字符串,再转换为byte[]。
   谢谢您!
   
引用:JackJiang 发表于 2017-07-08 16:20
从数据收发的根方法进行修改。我会考虑在以后的MobileIMSDK版本里直接开放出收发byte数组的方法。

jack,您好。              我想实现语音对讲,于是我测试了将发送的String类文本消息转换为bytep[]类型后,再将Protocal对象进行序列化为byte[],这样文本消息是完全可以正常收发的,相当于实现了byte[]消息的传输。(因为语音数据是byte[]类型的)
     但我进行下面操作时,出现了一些问题,如下讲述。
     客户端:
           通过将获取的语音数据buffer(类型为byte[],大小为640bit。是通过录音对象获取的,录音区的大小为640bit , 进而从录音对象中获取录音数据放在该byte[]中),再将byte[]封装到Protocal对象中。
          接着通过Java序列化,将Protocal对象序列化为byte[]类型数据执行发送,该byte[]大小为870bit。
          语音是一直在循环获取,所以使得每个数据报发送的时间间隔为0.04s(偶尔出现有0.02s,0.03s,0.06s三种发送的时间间隔)
     客户端每次发送可以成功。

     服务端:
          接收到该数据时,每个包也可以成功接收,并且将接收到的从message中获取byte[](为870bit),再反序列化为Protocal对象,接着从Protocal对象中获取语音数据byte[](为640bit),
          下一步将该语音数据封装到Protocal对象中,让后再将该Protocal对象反序列化为byte[],最后使用
WriteFuture future = session.write(buf); 进行发送时发送不成功。(网上说mina框架UDP不能发送超过256,超过就分批发送)
          不知道我这种实现语音对讲的思路可不可行,恳请您给我一些指导,谢谢您!!!


请问这个音视频通信是通过 webrtc音视频技术实现的吗?
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部