AS3:是否可以将舞台元素或位图数据捕捉到NetStream中?

3
我正在查看netstream文档,但无法确定appendBytes()是否真的可以接受任意数据。我真的可以只拿任意位图数据(作为字节数组),并将帧附加到流中(可能在将其发送到FMS以保存文件之前)吗?我认为我错了:它只适用于动态流媒体。我知道可以通过FMS直接编码视频来捕获网络摄像头的视频。但是,如果我想在编码之前添加一些覆盖层,这是否在Flash中可行?也就是说,您可以在Flash中动态生成netStream对象,还是唯一可以做的就是从netStream绘制位图数据而不是相反?
基本上,目标是像Movie Masher一样操纵视频和音频,并直接保存实际视频文件。 Movie Masher实际上将单个帧保存到服务器以供稍后转换。
我听说FP11有原生的H264编码功能--因此问题是:最终的netStream是否可以在浏览器中进行编码,然后通过HTTP上传到服务器,或者仍然需要FMS?我在查看这个实时编码演示,但我不确定他们是否只是将FMS用作文件转储,还是它是整个过程的一部分。
有一个开源项目FLV编码,它使用ByteArrayFlvEncoder,允许您对原始ByteArray进行编码。是否有H264的等效物?
2个回答

1

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

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

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

所以,您可以:

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

所以基本上,即使我们可以使用Alchemy直接录制到H264,我们仍然必须将其连接到摄像头流,而不能实际将帧写入缓冲区,对吗? - FlavorScape
就像我说的那样,你可以做几乎任何想做的事情,除了使用NetStream对象发送自定义数据(这意味着你无法利用publish()提供的Flash Player H264编码器)。我可能错了,但是根据文档来看,这是我的结论。不过,你的选择并不仅限于此,像Movie Masher一样,与服务器使用自定义协议发送帧将是高效的选择。 - Antoine Lassauzay
感谢你的反馈——我浏览了很多不同的方法,已经有点眼花缭乱了。还有8分钟就要结束悬赏了,接受了。祝好运! - FlavorScape

1

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

示例代码: 参考演示: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);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接