我正在查看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的等价物?
答案 0 :(得分:1)
根据文档,似乎无法使用本机编码器,因为您无法同时利用NetStream.publish()
和NetStream.appendBytes()
:
NetStream可以发布流或播放流,也不能同时发布。 要发布流并从服务器查看回放,请创建两个NetStream对象。
换句话说,似乎没有办法通过NetStream
对象向FMS发送自定义数据。
所以,你可以:
Video
对象答案 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);