因此,我正在使用一个视频源,并通过一些本机扩展工作将其输入到Adobe AIR应用程序中,目的是最终将其发送到Flash Media Server。该视频经过H.264编码,并多路复用到FLV容器中,这使我符合受支持的Flash Media Server编解码器和NetStream(appendBytes)的要求。我可以将数据放到AIR中。
但是,我今天走进的地雷是NetStream.appendBytes的文档规定我必须调用NetStream.play(null):
在“数据生成模式”的NetStream上调用此方法。若要将NetStream置于数据生成模式,请在连接到null的NetConnection上创建的NetStream上调用NetStream.play(null)。在未处于“数据生成模式”的NetStream上调用appendBytes()是一个错误,并引发异常。
使用null参数调用的NetStream.play()会产生本地FLV回放。在这种模式下,我无法将流发布到FMS。但是我对Flash的研究似乎表明,在处理非摄像机或非Web视频数据时,NetStream的字节访问是我唯一的真正希望。
问:我可以锁定视频播放缓冲区以发布到FMS吗?我可以创建一种NetStreams或NetConnections管道来实现此目的吗?还是这里有将H.264 / FLV数据传输到FMS的替代方法? (我的视频源无法直接与FMS通信。)
最佳答案
您问题的答案非常简单。显然,这是作为安全功能实现的,这可能不是基于安全的问题,而是更多的销售问题。 Adobe喜欢有意地阻止某些功能,以创造另一个产品的可能性或需求,也就是获得更多收益。
我尝试调查这个问题,以查看是否存在一些肮脏的骇客,您可以在其中安装相机或其他东西,并像使用Audio一样覆盖发送到流中的二进制数据,但不幸的是,据我所知,这种骇客是不可能的。此处有更多nfo:NetStream.appendBytes
更新资料
您可能可以通过使用ManyCam(这是一个虚拟的网络摄像头驱动程序)来做些骇人听闻的事情(据我了解)。这将提供一个有效的相机,您可以从闪光灯中选择它,也可以选择一个视频文件作为ManyCam的源文件。见http://manycam.com/user_guide/#HowtoSelectaVideofileasthePictureSourceforManyCam
更新#2
如果您正在寻找可以与manycam相同功能的开源软件,请查看以下内容:
http://code.google.com/p/webcamstudio/wiki/VideoSourceMovie(GPL许可)