3

我正在查看netstream 文档。但是如果 appendBytes() 真的可以获取任意数据,则无法真正收集。我真的可以只获取任意位图数据(作为字节数组)并将帧附加到流中(大概在将其发送到 FMS 以保存文件之前)吗?我想我错了:它只对动态流有用。我知道可以通过 FMS 获取网络摄像头并直接对视频进行编码。但是假设我想在编码之前添加一些叠加层,这在 Flash 中是否可行?即您能否在 Flash 中动态生成 netStream 对象,或者您唯一能做的就是从 netStream 中绘制位图数据,反之亦然?

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

我听说 FP11 具有原生 H264 编码——所以“规范”问题:最终的 netStream 是否可以在浏览器中编码然后通过 HTTP 上传到服务器,或者 FMS 仍然是一个要求吗?我正在查看这个实时编码器演示,但我不确定他们是否只是将 FMS 用作文件转储,或者它是否是该过程的一部分。

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

4

2 回答 2

1

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

NetStream 既可以发布流也可以播放流,但不能两者兼得。要发布流并从服务器查看回放,请创建两个 NetStream 对象。

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

所以,你可以:

  1. 将相机连接到Video对象
  2. 通过像素操作对其应用一系列效果
  3. 将像素数据通过套接字发送到服务器以供以后编码,或使用您提到的 AS3 编码器将烘焙的 FLV 保存为文件(在用户计算机或服务器上)
于 2012-09-12T03:45:54.807 回答
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);
于 2012-09-17T15:21:57.873 回答