将视频捕获到内存并使用actionscript播放?

时间:2012-02-25 20:40:21

标签: java actionscript-3 camera flash-cs4 flash-media-server

这可能有甚至可能无法实现,但情况如下:我想使用ActionScript 3 Camera类从本地摄像头(网络摄像头,内置摄像头等)捕获视频,然后播放该视频在Flash应用程序中。

我正在考虑将其发送到Flash Media Server然后将其作为点播视频流式传输的可能性,但我希望保持整个客户端以获得最佳性能。

我愿意使用不同的平台(Java是一个考虑因素),只要它可以嵌入到网页中,但我希望尽可能简化开发并进行访问。应用程序对最终用户来说尽可能简单,这就是我最初选择Flash的原因。

如果有人知道如何做到这一点,我欢迎任何意见。

2 个答案:

答案 0 :(得分:3)

好的,这是对任何可能遇到同样障碍的人的更新。我能够完成我想要的 - 录制视频,允许用户预览,然后从一个Flash应用程序上传它 - 利用Lee Felarca(zeropointnine - http://www.zeropointnine.com/)编写的名为flvEncoder的实用程序。 / p>

这个概念是这样的:

  1. 将音频和视频数据录制为原始格式(很像Valentin Simonov建议的那样)
  2. 将数据传递给flvEncoder以便以Flash FLV格式进行编码,然后返回ByteArray。我知道说Flash FLV似乎有点多余,但我这样说是因为Flash和Adobe Media Player似乎是唯一能够解释结果的东西。
  3. 创建一个NetStream实例并将其置于数据生成模式,使用appendBytes()方法将编码数据传递给链接到输入NetStream的Video对象。
  4. 使用FileReference.upload()在HTTP请求中将数据发送到服务器。
  5. 它可能会占用大量内存,但无论如何我只需录制短视频。我不会在这里发布代码,因为它很混乱并且与专有项目相关联,但我希望这些信息对某人有帮助。感谢您的回复!

答案 1 :(得分:0)

最简单的方法是使用FMS,Wowza或Red5媒体服务器。您只需使用NetStream将数据发送到服务器,在那里保存电影并重新流回。

此外,我认为这是唯一可行的方法。 Camera,Video或NetStream对象无法访问实际的视频字节。你可以做的是将一个视频实例添加到你的相机,并每隔1/24秒将其绘制成一个位图。之后你仍然需要对数据进行编码,否则你会非常快地耗尽内存。在这里,我不确定是否有任何使用as3制作的flv / h264编解码器。但无论如何我打赌它会很慢。