【发布时间】:2011-03-29 16:43:18
【问题描述】:
我有这部 1 分钟长的电影,我想将它编译成一个 AS3 项目。影片一开始是 MOV 格式,所以我使用 FFMpeg 将其转换为 FLV,然后再次使用 FFMpeg 从 FLV 转换为 SWF。
我正在使用 Embed 元数据将这部电影嵌入到 AS3 二进制文件中:
我有一个容器 Sprite,这部电影将被添加到其中。在添加之前,我将嵌入的电影转换为 MovieClip:
var vid:Object = new _Vid(); 将 vid 作为 MovieClip 返回;当我将生成的影片剪辑添加到舞台时,它会立即开始播放并且似乎可以正常播放。但是,当我检查影片剪辑的 totalFrames 属性时,它返回 0。而且影片剪辑似乎没有响应对 stop 或 gotoAndStop 的调用。
通过将影片嵌入 Flash IDE 中的 SWF 然后以相同的方式嵌入结果,我得到了相同的行为,因此我将其添加到舞台的方式似乎有些不正常。有什么想法吗?
编辑:作为产品的要求,as3 电影无法从外部文件加载视频。它必须被编译进去,所以播放的.swf可以完全独立运行,而无需依赖其他外部文件。
编辑 2:经过进一步检查,产生的 MovieClip 实例:
[嵌入(source="1.swf")] 私有变量_Vid:类; var vid:Object = new _Vid(); 将 vid 作为 MovieClip 返回;有一个属于 Loader 类的子对象,并且该子对象没有子对象。我尝试将孩子直接投射为 MovieClip,但无济于事。
编辑 3:根据我正在阅读的 here 和 here,NetStream 对象的 10.1 api 公开了一个名为 appendBytes 的方法。我仍然需要进一步研究,但我可以将 .flv 文件嵌入为八位字节流,并将字节手动提供给 Net Stream 对象以播放视频。我会在稍后发布我的测试结果...
【问题讨论】:
标签: actionscript-3 video flash embed movieclip