我一直在努力寻找一种可靠的方法来获取C#应用程序中flash(swf)文件中包含的视频或动画的时间长度。我找到了一些参考资料,展示了如何读出标题,但标题有一些问题。
作为参考,我正在处理的应用程序不会尝试显示文件,也不会嵌入它。我只想编制它的运行时间。
答案 0 :(得分:4)
Flash文件无法按照您的想法运行,因此您无法通过阅读SWF获得“运行时”。
您可以阅读SWF以获取主时间轴中的帧数,但大多数Flash应用程序和电影在主时间轴上只有2帧。然后,其中一个帧将嵌入一个MovieClip,它本身可以有任意数量的帧,或嵌入另一个MovieClip,它也有可变数量的帧。是的,孩子MovieClip可以有更多的帧,然后父和Flash适当地播放它们。
除了嵌入式MovieClip的轻微复杂性之外,还有ActionScript可以导致闪存跳转或重放帧,这使得源SWF中的帧数完全与实际播放的帧数无关。事实上,大多数Flash应用程序在SWF中只有两个帧,但是在运行过程中播放时会有数千或数百个帧 - 它只是使用ActionScript生成内容时反复播放的帧。
可靠地获取运行时帧数的唯一方法是创建一个Flash应用程序,它可以加载另一个SWF,播放它并计算帧数。如果加载的SWF是交互式的,那么数字可能会因一次运行而异。也就是说,这是一个可以自动化的过程,但是您需要在可以与之通信的ActiveX容器中运行Flash Player以获取结果,或者让服务监听已发布的数据。