AS3:是否可以将舞台元素或位图数据捕获到网络流中?

时间:2012-09-07 22:42:38

标签: actionscript-3 flash flash-media-server netstream

我正在查看netstream documentation.,但如果appendBytes()可以真正获取任意数据,则无法收集。我真的可以只取任意位图数据(作为字节数组)并将帧附加到流(大概是在将其发送到FMS以保存文件之前)吗?我认为我错了:它只对动态流媒体有用。我知道可以通过FMS获取网络摄像头源并直接编码视频。但是我想在编码之前添加一些叠加层,甚至可以在Flash中使用它?即你可以在Flash中动态生成netStream对象,或者你唯一可以做的是draw bitmap data from a netStream而不是反之亦然?

基本上,目标是像Movie Masher那样操纵视频和音频,并直接保存实际的视频文件。电影Masher实际上将单帧保存到服务器以便以后转换。

我听说FP11有原生的H264编码 - 所以'spec'问题:最终的netStream可以在浏览器中编码然后通过HTTP上传到服务器,还是FMS仍然是一个要求?我正在看这个realtime encoder demo,但我不确定他们是否只是将FMS用作文件转储,或者它是否是该过程的一部分。

encoding FLV的开源项目,它使用ByteArrayFlvEncoder,它允许您编码原始的ByteArrays。是否有H264的等价物?

2 个答案:

答案 0 :(得分:1)

根据文档,似乎无法使用本机编码器,因为您无法同时利用NetStream.publish()NetStream.appendBytes()

  

NetStream可以发布流或播放流,也不能同时发布。   要发布流并从服务器查看回放,请创建两个NetStream对象。

换句话说,似乎没有办法通过NetStream对象向FMS发送自定义数据。

所以,你可以:

  1. 将相机附加到Video对象
  2. 对像素操作应用一系列效果
  3. 通过套接字将以后编码的像素数据发送到服务器,或使用您提到的AS3编码器将烘焙的FLV保存为文件(在用户的计算机或服务器上)

答案 1 :(得分:1)

与NetStreamAppendBytesAction类一起使用的NetStream类上的appendBytes。

示例代码: 参考演示:http://www.bytearray.org/?p=1689

// retrieve the FLV stream
var bytes:ByteArray = event.currentTarget.data;
// put the NetStream class into Data Generation mode
netstream.play(null);
// before appending new bytes, reset the position to the beginning
netstream.appendBytesAction(NetStreamAppendBytesAction.RESET_BEGIN);
// append the FLV video bytes
netstream.appendBytes(bytes);