通过浏览器流式传输网络摄像头和麦克风输入
Streaming webcam and mic inputs through browser
短版:
我需要一个浏览器内解决方案来将网络摄像头和麦克风流传输到服务器。
长版:
我正在尝试创建一个直播应用程序。到目前为止,我只设法弄清楚了这个工作流程:
- 客户端创建流(这里可能需要一些转码器)
- 客户端发送(发布?)流到服务器(基本上托管一个
RTMP
/我的服务器应该可以访问的其他流)
- 服务器进行代码转换、速率转换等并将流发布到 CDN
- 观看者观看发布的流
理想情况下,我想要一个基于浏览器的解决方案,它需要从客户端进行最少的设置(下载 Flash 插件可能是可以接受的)并将网络摄像头和麦克风输入流式传输到服务器。我不知道确切的关键字或正在寻找错误的东西,但我找不到合适的解决方案。
涉及使用 ffmpeg
或 vlc
发布流的解决方案并不是我真正想要的,因为它们需要额外的下载和设置,并且不仅限于网络摄像头和麦克风输入。 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 不支持 Flash
或 WebRTC
的问题,例如。 iPhone,Safari。另外 getUserMedia
不会在所有浏览器中捕获相同的格式:Firefox audio/video 在 WebM
和 Chrome 音频在 wav
和视频在 WebM
.
对于移动设备,您可能必须编写应用程序。
短版:
我需要一个浏览器内解决方案来将网络摄像头和麦克风流传输到服务器。
长版:
我正在尝试创建一个直播应用程序。到目前为止,我只设法弄清楚了这个工作流程:
- 客户端创建流(这里可能需要一些转码器)
- 客户端发送(发布?)流到服务器(基本上托管一个
RTMP
/我的服务器应该可以访问的其他流) - 服务器进行代码转换、速率转换等并将流发布到 CDN
- 观看者观看发布的流
理想情况下,我想要一个基于浏览器的解决方案,它需要从客户端进行最少的设置(下载 Flash 插件可能是可以接受的)并将网络摄像头和麦克风输入流式传输到服务器。我不知道确切的关键字或正在寻找错误的东西,但我找不到合适的解决方案。
涉及使用 ffmpeg
或 vlc
发布流的解决方案并不是我真正想要的,因为它们需要额外的下载和设置,并且不仅限于网络摄像头和麦克风输入。 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 不支持 Flash
或 WebRTC
的问题,例如。 iPhone,Safari。另外 getUserMedia
不会在所有浏览器中捕获相同的格式:Firefox audio/video 在 WebM
和 Chrome 音频在 wav
和视频在 WebM
.
对于移动设备,您可能必须编写应用程序。