通过浏览器流式传输网络摄像头和麦克风输入

Streaming webcam and mic inputs through browser

短版:
我需要一个浏览器内解决方案来将网络摄像头和麦克风流传输到服务器。

长版:
我正在尝试创建一个直播应用程序。到目前为止,我只设法弄清楚了这个工作流程:

  1. 客户端创建流(这里可能需要一些转码器)
  2. 客户端发送(发布?)流到服务器(基本上托管一个 RTMP/我的服务器应该可以访问的其他流)
  3. 服务器进行代码转换、速率转换等并将流发布到 CDN
  4. 观看者观看发布的流

理想情况下,我想要一个基于浏览器的解决方案,它需要从客户端进行最少的设置(下载 Flash 插件可能是可以接受的)并将网络摄像头和麦克风输入流式传输到服务器。我不知道确切的关键字或正在寻找错误的东西,但我找不到合适的解决方案。

涉及使用 ffmpegvlc 发布流的解决方案并不是我真正想要的,因为它们需要额外的下载和设置,并且不仅限于网络摄像头和麦克风输入。 WebRTC 可能不会提供相同的质量,但如果所有其他方法都失败了,我认为它可以完成工作,至少对于某些浏览器而言。

我正在使用 Ubuntu 进行开发,并且刚刚激活了 Wowza 流媒体服务器和云的试用许可证。

ffmpeg/vlc等。阿尔。唯一的出路?或者有什么东西可以在单个浏览器选项卡中完成这项工作吗?

如果您采用 RTMP 方式,Adobe Flash Player 支持 H.264 encoding directly. Since you mentioned Wowza you can find an example and complete source code (including the fla) in the examples directory. There's also a demo here。还有许多其他开源 Flash 捕捉插件。

你也可以在没有Wowza的情况下使用前面提到的Flash刻录机。在这种情况下,您需要一个 RTMP 服务器,一个值得注意的例子是 Nginx RTMP module,它支持录制(到 flv)并且还提供回调,允许您在录制后启动转码完成了。

使用 WebRTC 您可以录制 (getUserMedia, MediaStreamRecorder) 小的媒体块并将它们发送到服务器,在那里它们将被连接或使用点对点通信WebRTC (RTCPeerConnection) 的特征。有关详细概述,请参阅

在这两种情况下,您都会遇到 devices/browsers 不支持 FlashWebRTC 的问题,例如。 iPhone,Safari。另外 getUserMedia 不会在所有浏览器中捕获相同的格式:Firefox audio/video 在 WebM 和 Chrome 音频在 wav 和视频在 WebM .

对于移动设备,您可能必须编写应用程序。