试图解决一个令人困惑的问题,即通过网络套接字流音频。我们正在使用Nexmo(Twilio的竞争对手),它可以通过websocket双向传输 call 音频。 Nexmo连接到我们的Websocket服务器,并开始发送每个长度为640字节的16khz采样音频帧。
一切都运转良好,直到最近Websocket音频突然开始掉落成帧的帧,从而导致音频间隙。
但是,最有趣的是以下内容:
关于在哪里寻找真正的解决方案的任何想法都会很棒。
最佳答案
确保接收websocket流量的进程有一个单独的线程来处理该流量...如果任何系统都忙于其他任务,任何系统都会丢弃流量...如果您的接收端有一些事件循环在抢占时保持通过传入的websocket中断,您将丢弃数据包
我做了一个项目,其中接收端是浏览器,该浏览器正在运行事件循环以执行音频呈现,同时还处理websocket流量-这不是一个好主意,因为必须不允许抢占该事件循环的关键部分。我必须在浏览器端创建一个webworker进程来处理所有websocket流量,然后填充一个环形音频缓冲区...该Webworker被浏览器事件循环视为客户端,该循环呈现音频,但现在从未允许被传入的流量抢占...仅当浏览器事件循环达到其平静期时,它才请求检索由Webworker音频缓冲区队列缓冲的另一数据数据
关于audio - Websocket丢帧?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50881593/