Django项目中的网络摄像头流媒体

时间:2014-03-14 22:14:31

标签: python django webcam

我目前正在开发一个Django项目,并希望增加使用其能够使用他们的网络摄像头进入视频会议的能力。我知道html5有这方面的功能,但我现在想远离它,因为很多浏览器还不支持它。任何人都有任何关于我如何做到这一点的建议?谢谢。

3 个答案:

答案 0 :(得分:2)

很难说使用这一件事真的会是满足您个人需求的东西的集合。以下是一些可以帮助您入门的资源的链接。

  • OpenCV - 用于网络摄像头的Python包装器
  • Tornado - Python Web框架和异步网络 文库
  • Twisted - 用Python编写的事件驱动的网络引擎

答案 1 :(得分:2)

在客户端,您可能需要查看getUserMedia.js来处理从相机捕获视频的操作 - 它为不支持getUserMedia() API的浏览器实施Flash后备。

在服务器端,我认为Drewness的答案涵盖了它。

答案 2 :(得分:1)

简短的回答是你必须使用flash或缩小你想要支持的浏览器。

HTML5在某种程度上支持从网络摄像头获取流并进入浏览器的行为,现代浏览器中的闪存完全支持这种行为。

棘手的部分是在通话中将其传输给其他人。有两种方法 - 让每个人将他们的饲料管道传输到中央服务器,然后将收集的饲料发送给房间中的每个人,或让同伴直接相互连接。

对于任何类型的实时聊天应用,您希望使用后者(中央服务器架构的延迟使其无法使用)。

在网络上,您的选项是WebRTC,RTMFP,HLS或插件。 WebRTC太棒了,但仍然是一个工作标准。最重要的是IE不支持它,因此如果您希望这是一个面向公众的Web应用程序,相当大比例的用户将会失去运气。 HLS是一种苹果技术,也有不完整的支持(并且效率不高)。

对于RTMFP,请查看cirrus/stratus。他们有一个示例应用程序来说明技术(BTW这是ChatRoulette使用的)。当然这需要闪存,但IMO是您在不让用户先装先安装的情况下覆盖尽可能多的平台的最佳选择。

Web框架的选择(在您的情况下是Django)并不重要,因为您不希望您的用户无论如何都要将他们的流发送到服务器。服务器的工作只是帮助发现和连接,为此你应该研究像APE这样的推/彗星服务器。