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

时间:2015-09-27 23:32:41

标签: live-streaming webcam-capture

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

长版:
我正在尝试创建一个实时流媒体应用程序。到目前为止,我只能设法找出这个工作流程:

  1. 客户端创建流(此处可能需要某些代码转换器)
  2. 客户端向服务器发送(发布?)流(基本上托管RTMP /其他应该可由我的服务器访问的流)
  3. 服务器转码,转换等,并将流发布到CDN
  4. 观看者观看已发布的流
  5. 理想情况下,我喜欢基于浏览器的解决方案,它需要客户端的最小设置(可以接受Flash插件下载)并将网络摄像头和麦克风输入流式传输到服务器。我要么不知道确切的关键字,要么找错了,但我找不到合适的解决方案。

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

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

    ffmpeg / vlc等。人。唯一的出路?或者是否可以在单个浏览器选项卡中完成这项工作?

1 个答案:

答案 0 :(得分:1)

如果您采用RTMP方式,Adobe Flash Player会直接支持H.264 encoding。由于您提到了Wowza,您可以在fla目录中找到示例和完整的源代码(包括examples)。还有一个demo here。还有许多其他开源Flash捕获插件。

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

使用WebRTC,您可以记录(getUserMediaMediaStreamRecorder)小型媒体块并将它们发送到服务器,在那里它们将被连接或使用点对点通信功能WebRTCRTCPeerConnection)。有关详细信息,请参阅my answer here

在这两种情况下,您都会遇到不支持FlashWebRTC的设备/浏览器的问题,例如。 iPhone,Safari。加getUserMedia并未在所有浏览器中捕获相同的格式:WebM中的Firefox音频/视频和wav中的Chrome音频以及WebM中的视频。

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