在C#中获取Flash文件运行时最可靠的方法是什么?

时间:2011-05-18 20:06:34

标签: c# flash

我一直在努力寻找一种可靠的方法来获取C#应用程序中flash(swf)文件中包含的视频或动画的时间长度。我找到了一些参考资料,展示了如何读出标题,但标题有一些问题。

  1. 我已经针对我们公司的几个文件(由外部代理商制作)运行代码,这些文件的帧数为零,当它在浏览器中运行时显然不是这样。
  2. 当文件确实有信息时,flash版本之间的标题不一致。我甚至找不到Flash 7之前存在的旧标头的副本。没有那个,即使对于尊重标题的文件,我也不知道7之前哪个版本是最后一个具有不同标题格式的版本。< / LI>

    作为参考,我正在处理的应用程序不会尝试显示文件,也不会嵌入它。我只想编制它的运行时间。

1 个答案:

答案 0 :(得分:4)

Flash文件无法按照您的想法运行,因此您无法通过阅读SWF获得“运行时”。

您可以阅读SWF以获取主时间轴中的帧数,但大多数Flash应用程序和电影在主时间轴上只有2帧。然后,其中一个帧将嵌入一个MovieClip,它本身可以有任意数量的帧,或嵌入另一个MovieClip,它也有可变数量的帧。是的,孩子MovieClip可以有更多的帧,然后父和Flash适当地播放它们。

除了嵌入式MovieClip的轻微复杂性之外,还有ActionScript可以导致闪存跳转或重放帧,这使得源SWF中的帧数完全与实际播放的帧数无关。事实上,大多数Flash应用程序在SWF中只有两个帧,但是在运行过程中播放时会有数千或数百个帧 - 它只是使用ActionScript生成内容时反复播放的帧。

可靠地获取运行时帧数的唯一方法是创建一个Flash应用程序,它可以加载另一个SWF,播放它并计算帧数。如果加载的SWF是交互式的,那么数字可能会因一次运行而异。也就是说,这是一个可以自动化的过程,但是您需要在可以与之通信的ActiveX容器中运行Flash Player以获取结果,或者让服务监听已发布的数据。

相关问题