将麦克风从客户端浏览器流式传输到远程服务器,并将音频实时传递到ffmpeg,以与第二个视频源相结合



作为一个使用这些实时流媒体服务的初学者,我花了几个小时试图弄清楚这是如何实现的,但似乎无法解决,我会准确地去做。

我正在制作一个个人基本网络应用程序的原型,该应用程序可以执行以下操作:

  1. 在web浏览器中,web应用程序有一个按钮,上面写着"流式麦克风"-当按下时,它会将音频从用户的麦克风(用户显然必须同意允许发送麦克风音频(流式传输到服务器,我认为该服务器将运行node.js(目前没有具体原因,只是认为这就是我要做的(。

  2. 服务器以某种方式接收到足够接近实时的音频(不确定我会怎么做(。

  3. 然后,我可以在命令行上运行ffmpeg,获取实时音频,并将其作为声音添加到我想要播放的视频文件(假设我要播放testmovie.mp4(中。

我研究过各种解决方案,例如使用WebRTC、RTP/RTP、将音频管道传输到ffmpeg、Gstreamer、Kurento、Flashphoner和/或Wowza,但不知何故,它们看起来过于复杂,通常似乎侧重于视频和音频。我只需要处理音频。

正如您所发现的,有许多不同的选项可以从启用WebRTC的浏览器接收音频。从最简单到更困难的选项可能是:

  • 使用支持WebRTC的服务器,如Janus、Kurento、Jitsi(不确定wowzer(等。这些服务器往往具有插件系统,其中一个可能已经具有您需要的音频混合功能。

  • 如果您对node感到满意,您可以使用werift库来接收WebRTC音频流,然后将其转发到FFmpeg。

  • 如果你想完全控制WebRTC管道,并可能进行音频混合,你可以使用gstreamer。根据您所描述的,它应该能够完成完整的任务,而不必涉及单独的FFmpeg进程。

我们做到这一点的方法是用Java创建一个Wowza模块,该模块将从传入流中获取音频,从任何需要的地方获取视频,并将它们混合在一起。

没有理由在混合中引入像ffmpeg这样的三次聚会。

Wowza甚至提供了一个样本:https://github.com/WowzaMediaSystems/wse-plugin-avmix

相关内容

  • 没有找到相关文章