我正在开发一个Django项目,希望能够添加让用户使用他们的网络摄像头进入视频会议的功能。我知道HTML5有这样的能力,但是因为很多浏览器还不支持HTML5,所以现在我不想使用它。请问有什么建议吗?谢谢。
很难说使用“这一个东西”会真正满足您的个性化需求,实际上可能需要一系列工具。以下是一些资源链接,可以帮助您入门: OpenCV - 提供了用于网络摄像头的Python包装器。 Tornado - Python的Web框架和异步网络库。 Twisted - 用Python编写的事件驱动式网络引擎。
在客户端,您可能需要查看getUserMedia.js来处理从摄像头捕获视频 - 它为不支持getUserMedia() API的浏览器实现了Flash回退。在服务器端,我认为Drewness的答案已经涵盖了它。
简答来说,您需要使用Flash或缩小您想要支持的浏览器范围。将流从您的网络摄像头传输到浏览器的操作在HTML5中得到了一定程度的支持,在现代浏览器中完全支持Flash。麻烦的部分是将其流式传输给其他人进行通话。有两种方法-让每个人将其视频流发送到中央服务器,然后将收集到的视频流发送给房间中的所有人,或者让同行直接相互连接。对于任何实时聊天应用程序,您都希望使用后者(中央服务器架构的延迟使其无法使用)。在Web上,您可以选择WebRTC、RTMFP、HLS或插件。WebRTC非常棒,但仍然是一个正在开发的标准。最重要的是,IE不支持它,因此,如果您希望这是一个公共面向Web的应用程序,则相当大比例的用户将会受到影响。HLS是苹果技术,也有不稳定的支持(并且不特别高效)。对于RTMFP,请查看cirrus/stratus。他们有一个演示该技术的示例应用程序(顺便说一句,这就是ChatRoulette使用的技术)。当然,这需要使用Flash,但是我认为这是你在不让用户先安装任何东西的情况下覆盖尽可能多平台的最佳选择。Web框架的选择(在您的情况下是Django)并不重要,因为您不希望用户将其流发送到服务器。服务器的工作仅是帮助发现和连接,并且为此,您应该查看像APE这样的推送/彗星服务器。