【发布时间】:2018-07-26 16:56:18
【问题描述】:
我需要一个多窗口应用程序来共享媒体流。有没有办法做到这一点?在 nw.js 中,我可以创建概念证明,在一个窗口中创建的 MediaStream 可以在另一个窗口中播放,但似乎我无法在 Electron 中执行此操作。我说的对吗?
【问题讨论】:
标签: electron
我需要一个多窗口应用程序来共享媒体流。有没有办法做到这一点?在 nw.js 中,我可以创建概念证明,在一个窗口中创建的 MediaStream 可以在另一个窗口中播放,但似乎我无法在 Electron 中执行此操作。我说的对吗?
【问题讨论】:
标签: electron
我确信 WebRTC 可以将音频/视频从 MediaStream 流式传输到另一个窗口进程。到过那里,根据electron-peer-connection 库完成了这项工作(实际上,它使过程变得非常简单)。
不幸的是,there are a lot of limitations 考虑您是否采用这种方法(WebRTC 将使用有损压缩来压缩您的音频,您会有很大的延迟,目前 Electron 错误会导致音频变成单声道,诸如此类)。
所以这适用于语音之类的东西,但不适用于例如语音。高端原生品质的音频处理。
此外,如果您的应用程序不是具有疯狂性能要求的怪物,您还可以使用 Web Audio API 和 ScriptProcessorNode(AudioWorklet 在 Electron 中仍然不可用)直接从 MediaStream 访问音频样本数据,并将其发送使用标准电子 IPC。
然后您可以使用 Web Audio API 和 MediaStreamDestinationNode 在其他窗口进程中重建 MediaStream。
【讨论】:
您应该能够使用ipc module 在窗口之间进行通信,方法是通过main process 发出事件并在窗口中为它们添加listeners。
【讨论】: