用.NET读取Flash格式文件信息

一直以来存在这么一个问题,就是当用户上传的Flash文件时都需要附带输入Flash的宽和高,否则显示的时候由于不知道这些数值而导致Flash比例不正常。

近日我做网站也涉及到了这方面的问题,于是打算解决一下。

首先在Google上搜索,可以找到获取Flash宽和高的JavaScript,但是是在Flash载入后而不是之前,而且也没法动态更改object标记的宽和高,最重要的是有Flash Player的安全警告信息,所以放弃了在客户端读取,转而考虑服务器端。

在VS内导入flash.ocx控件,试图获取Flash文件信息,结果在调用TGetProperty()方法是总是以返回E_FAIL错误而失败,如果哪位高手知道如何在.NET下使用,欢迎指明。

想来想去,只剩下一个办法,也是最可行的办法,就是直接读取Flash文件并分析格式。

在Google上搜到 Macromedia Flash (SWF) File Format Specification Version 7 (http://www.xiaowowo.com/gt_book/new/flashfileformat.rar)

经过反复阅读和尝试,最终写出了 FlashInfo 类,调用方法如下:

FlashInfo flashInfo = new FlashInfo(@"c:\test.swf"); // 构造函数,参数是Flash文件地址
Console.WriteLine(string.Format("Version: {0}", flashInfo.Version)); // Flash版本
Console.WriteLine(string.Format("Compressed: {0}", flashInfo.IsCompressed)); //是否被压缩
Console.WriteLine(string.Format("Width: {0}", flashInfo.Width)); // Flash的宽度
Console.WriteLine(string.Format("Height: {0}", flashInfo.Height)); // Flash的高度
Console.WriteLine(string.Format("FrameRate: {0}", flashInfo.FrameRate)); // 帧速率
Console.WriteLine(string.Format("FrameCount: {0}", flashInfo.FrameCount)); // 总帧数
Console.WriteLine(string.Format("FileLength: {0}", flashInfo.FileLength)); // 未压缩时的文件大小

自从Flash格式版本6以后,增加了可压缩选项,用的是ZLib压缩,为了支持压缩格式,只好又在Google上找了一个ZLib .NET Wrapper (http://zlibnetwrapper.sourceforge.net/)

FlashInfo 类的源代码和编译好的库文件提供给有同样需求的朋友下载:http://www.cnblogs.com/Files/gmm/FlashInfo.zip

水平有限,不足之处难免,请各位指正!

时间: 2025-01-05 13:33:25

用.NET读取Flash格式文件信息的相关文章

php读取目录所有文件信息dir示例

 这篇文章主要介绍了php读取目录所有文件信息dir实现代码,需要的朋友可以参考下 代码如下: <?php  set_time_limit(0);  function tree($directory)  {  $mydir=dir($directory);  echo "<ul> ";  while($file=$mydir->read()){  if((is_dir("$directory/$file")) AND ($file!=&quo

Python使用xlrd读取Excel格式文件的方法_python

本文实例讲述了Python使用xlrd读取Excel格式文件的方法.分享给大家供大家参考.具体如下: 使用xlrd能够很方便的读取excel文件内容,而且这是个跨平台的库,能够在windows,linux/unix,等平台上面使用,代码如下: import xlrd fname = "sample.xls" bk = xlrd.open_workbook(fname) shxrange = range(bk.nsheets) try: sh = bk.sheet_by_name(&qu

vb6 0读取-VB6如何读取SVG格式文件

问题描述 VB6如何读取SVG格式文件 用SVGdeveloper画了个变压器图片(文件格式为.svg),要求在VB6.0中点击下command控件后在form中显示已经绘制好的变压器 解决方案 用这个控件看看http://www.codeproject.com/Articles/92434/SVGImage-Control

swing-java 读取rtf格式文件,并转换为html文件

问题描述 java 读取rtf格式文件,并转换为html文件 尝试使用swing自带的RTFEditorkit.WebCAT和tika来解析rtf格式文件,但是无法解析里面的图片,也使用了iText,但是没有成功,可能还没有搞清楚iText,到底有没有办法可以将rtf文件转换为html文件啊,包括里面的图片. 解决方案 http://stackoverflow.com/questions/3755230/how-to-convert-html-rtf-in-java 解决方案二: http://

视频-请大佬支招:用matlab读取AVI格式文件总是不成功?

问题描述 请大佬支招:用matlab读取AVI格式文件总是不成功? 视频格式为: Filename: 'C:UsersAdministratorDesktop视频yanwu-new-new.avi' ** FileSize: 486638592 FileModDate: '25-十二月-2015 00:52:49' NumFrames: 22 FramesPerSecond: 30.3030 Width: 5120 Height: 2880 ImageType: 'truecolor' Vide

如何把word转为flash格式文件

准备工作 Marcomedia FlashPaper 2.2 具体步骤 1先我们把准备好的Marcomedia FlashPaper 2.2解压在电脑中,如果没有下载就百度搜索"Marcomedia FlashPaper 2.2"下载免费版本的即可. 2然后打开解压的包,在里面会有一个初始化目录,我们点击进入"初始化.bat" 双击它就可以自动安装了. 3我们双击"初始化"这个文件,出现命令提示符窗口,进行安装 4 如果是vista系统可以要安装

php 读取目录所有文件信息dir()

<?php set_time_limit(0); function tree($directory) { $mydir=dir($directory); echo "<ul> "; while($file=$mydir->read()){ if((is_dir("$directory/$file")) AND ($file!=".") AND ($file!="..")) {         echo

php读取目录所有文件信息dir示例_php技巧

复制代码 代码如下: <?php set_time_limit(0); function tree($directory) { $mydir=dir($directory); echo "<ul> "; while($file=$mydir->read()){ if((is_dir("$directory/$file")) AND ($file!=".") AND ($file!="..")) { ec

Google可读取Flash文件

    虽然Google可以在其数据库中存储Flash文件已经不是什么新鲜事了,但是你听说过它可以读取二进制格式文件吗? 以下所片断是从搜索结果中截取的,很显然,它们出自Flash文件: 0% LOADING 5% 10% 15% 20% 25% ... Loading. Please wait. SKIP BACK Intuitive Intuitive Friendly ... 如果你还是不能确定的话,可以尝试搜索"Kingdom Ceramics enter",然后你会发现以下的