【问题标题】:How can I send an audio stream from webpage to a C++ server?如何将音频流从网页发送到 C++ 服务器?
【发布时间】:2018-06-26 15:57:50
【问题描述】:

我正在处理一个项目,我需要将音频流从网页(通过 javascript)发送到用 C++ 编写的服务器。这可能吗?我怎样才能做到这一点?我正在考虑使用WebRTCWebRTC library for C++,但我真的不知道如何实现这一目标。

一般来说,我需要一些 C++ 中的网络服务器之王,它允许我发送/接收音频流和 json 并与多个网络客户端一起工作。

我使用过 Socket.io,一旦我在 Java EE 7 中编写了一个网络服务器,我就能够从网页发送/接收 json,但我真的不知道我是否可以通过 websocket 发送音频流或json.

【问题讨论】:

  • 这里没有足够的细节来回答。您在使用 C++ 托管网络服务器时遇到了什么具体问题?
  • 有用的经验法则:“有可能做 X 吗?”的答案几乎总是“是”。问题“我该怎么做 X”?几乎总是太宽泛。
  • 嗨,我真的是这个网络服务器的菜鸟,所以请多多包涵。我正在尝试做一个网络服务器,这样我就可以使用 javascript 从网页发送音频流。我使用过socket.io,一旦我使用websockets在java中创建了一个网络服务器来发送/接收json(我真的不知道我是否可以用json发送音频流,tho)。现在我需要用 C++ 编写一个服务器,但我不知道最好的方法是什么,或者类似的东西是否已经存在。
  • 您可以将流作为ArrayBuffers 发送到服务器并在服务器上解析ArrayBuffer,或者将ArrayBuffer 传递给TypedArray 构造函数,将TypedArray 转换为@ 987654328@ 并将JSON 发送到服务器。

标签: javascript c++ audio webserver


【解决方案1】:

问题(或回答问题的实现)实际上由两部分组成,它们是:

  • 如何在 Javascript 中从浏览器发送音频流
  • 如何使用 C/C++ 在服务器上接收音频流

这是因为通过网络发送数据只会在客户端和服务器使用相同协议时松散耦合。你可以用 C++ 编写一个服务器,然后编写两个与之通信的不同客户端,一个用 Javascript,然后还有一个用 Java 编写的桌面应用程序。

客户端 JavaScript

对于客户端,使用 Javascript 从浏览器发送音频应遵循 WebRTC 可用的常规库; WebRTC 网站提供了一些有用的信息,包括此处的视频流示例 (https://webrtc.github.io/samples/)

该页面上可能感兴趣的一些链接:

  1. 仅音频 getUserMedia() 输出到本地音频元素
  2. 从视频元素流式传输到视频元素

已经有一些关于 WebRTC 和 javascript 音频的 StackOverflow 答案,这里有几个,这些(和库)将比 C++ 主题的问题更丰富:

  1. Sending video and audio stream to server
  2. Sending a MediaStream to host Server with WebRTC after it is captured by getUserMedia

对于 C++ 服务器:

WebRTC 站点在此处 (https://webrtc.org/native-code/native-apis/) 有一个指向库的 Native API 的链接,使用它们的对等连接 WebRTC 服务器的一个极好的简单示例在此处 (https://webrtc.googlesource.com/src/+/master/examples/peerconnection)。它还在那里实现了一个 C++ 客户端,这可能有助于测试服务器以使其首先工作,或者查看一般原则。

【讨论】:

  • 您好,感谢您的回答。我不明白你提到 Java 应用程序的部分。你能解释一下那部分吗?非常感谢。
  • 您好,提到 Java 应用程序的要点是,您可以使用不同语言编写多个客户端来使用同一服务器——只要它们通过网络向服务器发送正确的信息服务器不会关心它们是如何编写的或用什么语言编写的。因此,您在其他人的有关 Javascript WebRTC 客户端的问题/答案中找到的任何信息也对您的问题有效。这只是意味着你有更多的资源可供选择,以解决其他人专门关于 Javascript 的问题。我希望这会有所帮助!
猜你喜欢
  • 2020-01-07
  • 2016-10-24
  • 2016-12-11
  • 1970-01-01
  • 2018-01-21
  • 2015-11-22
  • 2013-02-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多