audio - Websocket丢帧?

标签 audio tcp websocket digital-ocean nexmo

试图解决一个令人困惑的问题,即通过网络套接字流音频。我们正在使用Nexmo(Twilio的竞争对手),它可以通过websocket双向传输 call 音频。 Nexmo连接到我们的Websocket服务器,并开始发送每个长度为640字节的16khz采样音频帧。

一切都运转良好,直到最近Websocket音频突然开始掉落成帧的帧,从而导致音频间隙。

但是,最有趣的是以下内容:

  • 当Nexmo直接连接到我们的digitalocean vps时,帧被丢弃
  • 当Nexmo通过ngrok隧道连接时,一切再次开始工作

  • 关于在哪里寻找真正的解决方案的任何想法都会很棒。

    最佳答案

    确保接收websocket流量的进程有一个单独的线程来处理该流量...如果任何系统都忙于其他任务,任何系统都会丢弃流量...如果您的接收端有一些事件循环在抢占时保持通过传入的websocket中断,您将丢弃数据包

    我做了一个项目,其中接收端是浏览器,该浏览器正在运行事件循环以执行音频呈现,同时还处理websocket流量-这不是一个好主意,因为必须不允许抢占该事件循环的关键部分。我必须在浏览器端创建一个webworker进程来处理所有websocket流量,然后填充一个环形音频缓冲区...该Webworker被浏览器事件循环视为客户端,该循环呈现音频,但现在从未允许被传入的流量抢占...仅当浏览器事件循环达到其平静期时,它才请求检索由Webworker音频缓冲区队列缓冲的另一数据数据

    关于audio - Websocket丢帧?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50881593/

    相关文章:

    java - 如何将 WebSocketContainer 实现到 StandardWebSocketClient 类中

    java - 如何使用 websockets 从 mysql 获取实时通知更新?

    c# - 如果条件在XNA中播放声音,是否不播放声音?

    java - 在客户端和服务器之间传输数据并动态刷新

    sql-server-2005 - 有没有办法强制 jdbc 连接使用 TCP?

    configuration - TCP模式选项消除延迟?

    c# - Asp.net Core Websocket 与 linux/docker 兼容吗?

    c++ - Qt:如何在不阻塞主线程的情况下播放声音?

    html - 黑莓网站:支持HTML5

    android - 无法播放声音两次 Android MediaPlayer 应用程序崩溃