用Socket如何实现语音通信

用Socket如何实现语音通信,第1张

我做过一个,实现QQ一样的语音聊天功能,并同时进行计时收费。

语音部分使用的UDP通讯,收费部分使用TCP。语音采样后必须进行压缩(采样得到是PCM编码数据),否则数据量太大,带宽不够,我用的是A率(当时这个压缩弄了好长时间)。

这是我当时分析时写的聊天建立与终止的主要过程。

客户端:

A、根据在线用户发出聊天请求

B、收到打洞命令

a、进行打洞,并向服务器回送同意,并开启语音收发

b、拒绝,向服务器回送拒绝

C、收到同意打洞或拒绝

a、如果是同意,在本地开启语音收发

b、如果拒绝,在本地显示该信息

D、发出聊天请求,在本地关闭语音收发

E、收到聊天终止命令,在本地关闭语音收发

服务端:

A、收到聊天请求,向另一客户端发出打洞命令:

取出目标客户端的用户名和源IP和UDP端口,存入“打洞命令”共公变量中

B、收到同意打洞或拒绝,将其转发

C、服务端的“在线控制”线程循环读取“打洞命令”共公变量,如果是自己的打洞命令则将该命令传入客户端。

是这样的用socket 传输都是通过数据流来传送的,你只要把音频文件按2进制文件读入发送到接收端,再由接收端作相应处理(不要求严谨的话直接把数据文件更改为为相应扩展名即可) 您可以详细学习一下数据流


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/10081077.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存