我想使用Flash从用户的网络摄像头中捕获视频,然后将其保存在托管Flash文件的同一台服务器上。 Web服务器将运行ASP.Net技术。看起来很简单吧?
许多搜索都使用相同的代码行来启动使用Flash捕获网络摄像头。我找不到任何将捕获的视频发送回服务器的内容。
我可以找到许多博客和论坛帖子,暗示第三方软件或Flash Communication Server需要在服务器上收集它,但我不明白为什么。
似乎Flash应该能够捕获一些视频并将其作为HTTP帖子发送到托管Flash文件的同一服务器。这是非常基本的Flash /网络摄像头功能,对吧?好像我们现在还不需要引入第三方依赖。
有谁知道这些额外的示例ActionScript代码可能隐藏在哪里?
答案 0 :(得分:15)
你需要一个Flash Media Server(或者像Red5这样的开源替代品)才能从客户端流式传输视频到服务器,这基本上就是你想要在这里做的。使用HTTP POST无法做到这一点。
但是,您可以将每个帧的视频显示对象绘制为位图,并使用常规HTTP文件上传动态上传这些位图。虽然你可以想象,从性能的角度来看,这并不完全理想。您还会遇到问题,因为Flash Player安全模型不允许您在没有用户启动操作的情况下上传文件(即鼠标单击事件位于堆栈跟踪中。)有办法解决此问题,例如,通过AMF服务将文件作为AMF ByteArray发送,但它可能不是未来的证据。
最后,对于任何类型的专业级应用程序,您肯定希望合并Flash Media Server(或Red5)。有些公司可以从中雇用这些服务,例如{{3 }}。沿着那条路走下去,你不必自己托管服务器(也就是Java)。
答案 1 :(得分:0)
我发现这个博客很有用。
http://www.zeropointnine.com/blog/updated-flv-encoder-alchem/ 此代码基于richardolsson给出的答案。
我在我的项目中尝试了一次此代码,并成功将10秒视频上传到Facebook。我写了一篇关于我的经历的详细博客。 http://www.logicmanialab.com/2012/10/upload-video-to-facebook-using.html
如果视频太长,此代码会破坏或挂断浏览器。无论如何,这值得一试。
除了保存视频的最佳方法是使用Flash Media服务器或RED5服务器(我的体验)。我从未尝试过ffmpeg,因为我不是最好的PHP :)。