国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

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

2019-11-17 04:32:04
字體:
來源:轉載
供稿:網友

一直以來存在這么一個問題,就是當用戶上傳的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.survivalescaperooms.com/Files/gmm/FlashInfo.zip

水平有限,不足之處難免,請各位指正!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 璧山县| 调兵山市| 嵊泗县| 石台县| 三亚市| 土默特右旗| 逊克县| 玉溪市| 陵水| 会昌县| 波密县| 和静县| 新余市| 灵川县| 潜山县| 高淳县| 廊坊市| 四会市| 张北县| 固始县| 荔波县| 清徐县| 那坡县| 海南省| 唐山市| 衡山县| 易门县| 蓝田县| 寻甸| 灵石县| 广德县| 印江| 通山县| 上栗县| 凤山县| 米易县| 龙州县| 贵州省| 瓮安县| 宜昌市| 乐山市|