Swf 8/9 MetaData 探究

本文介绍了SWF文件的基本构成,包括文件头、文件尾及中间的各种Tag,并详细解析了Flash8之后版本中新增的metadata部分,揭示了如何通过分析字节码来获取SWF文件的元数据。

从我以前关于Swf文件的译稿可知Swf文件是由一个文件头,一个文件尾, 中间插着各种Tag组成.
Flash 8 以后的swf 文件多了一个metadata,定义的是swf文件作者、swf 文件描述、语言及创作时间等信息。
其实它是一个xml格式的字符串.
相关的内容,我找到blueidea的一篇文章,这里就不重复了 :)
http://www.blueidea.com/tech/multimedia/2005/3047.asp

根据对字节码的分析,一般由flash/flex编译的swf文件,文件头下面的第一个tag就是FileAttributes tag,紧随其后就是metadata tag了,以前都是SetBackgroundColor(设置背景颜色)为第一个tag.
FileAttributes有五个元素,一个元素占一位.
1.  表示是否定义了metadata
2.  表示是否用了Actionscript3
3. 表示是否禁止跨域缓存
4. 表示是否支持相对URL
5. 播放安全, 本地为0,网络为1

metadata 的内容就是 rdf字符串,明文 :)

有了这些,就可以解析Swf 8/9的metadata信息了.....

在 Python 中,Windows 系统下定义 `data_dirs` 列表包含路径时,可能会因为反斜杠 `\` 是转义字符而导致路径格式错误。为避免此类问题,可采用以下几种方法: #### 方法一:使用原始字符串 在字符串前加 `r` 来创建原始字符串,这样反斜杠就不会被当作转义字符处理。 ```python data_dirs = [ r'D:\shuxuejianmo\metadata table\12kHz_DE_data', r'D:\shuxuejianmo\metadata table\12kHz_FE_data', r'D:\shuxuejianmo\metadata table\48kHz_DE_data', r'D:\shuxuejianmo\metadata table\48kHz_Normal_data' ] for dir in data_dirs: print(dir) ``` #### 方法二:使用双反斜杠 将反斜杠 `\` 转义为 `\\`,这样 Python 解释器就会把它当作普通字符。 ```python data_dirs = [ 'D:\\shuxuejianmo\\metadata table\\12kHz_DE_data', 'D:\\shuxuejianmo\\metadata table\\12kHz_FE_data', 'D:\\shuxuejianmo\\metadata table\\48kHz_DE_data', 'D:\\shuxuejianmo\\metadata table\\48kHz_Normal_data' ] for dir in data_dirs: print(dir) ``` #### 方法三:使用 `os.path.join` 拼接路径 使用 `os.path.join` 函数可以根据操作系统自动处理路径分隔符。 ```python import os base_dir = 'D:' sub_dir_1 = 'shuxuejianmo' sub_dir_2 = 'metadata table' sub_dirs = ['12kHz_DE_data', '12kHz_FE_data', '48kHz_DE_data', '48kHz_Normal_data'] data_dirs = [] for sub_dir in sub_dirs: full_path = os.path.join(base_dir, sub_dir_1, sub_dir_2, sub_dir) data_dirs.append(full_path) for dir in data_dirs: print(dir) ``` #### 方法四:使用 `pathlib` 模块 `pathlib` 模块提供了面向对象的路径操作方式,能更方便地处理路径。 ```python from pathlib import Path base_path = Path('D:/shuxuejianmo/metadata table') sub_dirs = ['12kHz_DE_data', '12kHz_FE_data', '48kHz_DE_data', '48kHz_Normal_data'] data_dirs = [base_path / sub_dir for sub_dir in sub_dirs] for dir in data_dirs: print(dir) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值