为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

提取swf中的声音文件程序源代码(Extract SWF sound file source code)

2018-02-22 12页 doc 30KB 40阅读

用户头像

is_597436

暂无简介

举报
提取swf中的声音文件程序源代码(Extract SWF sound file source code)提取swf中的声音文件程序源代码(Extract SWF sound file source code) 提取swf中的声音文件程序源代码(Extract SWF sound file source code) ----------------以下为程序代码------------- 单位swfblue_u1; 接口 使用 Windows消息,SysUtils、变体、类、图形、控件、窗体, 对话框,actnlist,StdActns,StdCtrls,按钮,ShlObj,Zlib; 类型 tmain =类(...
提取swf中的声音文件程序源代码(Extract SWF sound file source code)
提取swf中的声音文件程序源代码(Extract SWF sound file source code) 提取swf中的声音文件程序源代码(Extract SWF sound file source code) ----------------以下为程序代码------------- 单位swfblue_u1; 接口 使用 Windows消息,SysUtils、变体、类、图形、控件、窗体, 对话框,actnlist,StdActns,StdCtrls,按钮,ShlObj,Zlib; 类型 tmain =类(平台) b_open:TButton; 按钮:TButton; 标签:TLabel; TLabel label2; 中的代码块为label3:TLabel; opendialog1:topendialog; label4:TLabel; e_dir:TEdit; speedbutton1:TSpeedButton; 程序b_openclick(发件人:TObject); 程序button3click(发件人:TObject); 程序formshow(发件人:TObject); 程序speedbutton1click(发件人:TObject); 私有的 {私人声明} 公众的 {公共声明} 文件长度:LongWord;/ / SWF文件尺寸 filebuf:数组的字节;/ /将SWF文件读入内存存放 结束; VaR 主营:tmain; 实施 { $ R * DFM }。 程序tmain b_openclick(发件人:TObject); VaR f:文件; FWS:弦[ 3 ];//标示信息 版本:字节;/ / SWF文件版本号 b,B1,B2:字节; 巴夫:数组的字节; 帧率:/ /速率房; 帧数:词;/ /总帧数 S:字符串; TagID:字;/ /标签标示 taglength:LongWord;/ /标签长度 currentpos,filelengthpos,tagpos,tmppos:整数; / / currentpos记录当前读写位置 / / filelengthpos记录文件长度参数位置 / / tagpos记录当前tagid位置 文件名:字符串;/ /存放SWF文件名(去掉了路径和扩展名) L:LongWord; SoundID:字;/ /事件声音的声音ID SoundInfo:字节;/ /事件声音的声音信息 soundsamplecount:LongWord; streamheadb1,streamheadb2:字节;/ /流声音的声音信息 StreamSoundSampleCount:字; 音乐档案:字符串;/ /记录生成的声音文件的扩展名,根据没有、ADPCM和MP3不同分为。WAV MP3和。 soundcount:词;/ /流声音类型的文件计数 文件名; unknow1:字; unknow2:LongWord; 开始 如果不opendialog1执行然后退出; 我不fmopenread:=; assignfile(F,opendialog1。文件名);复位(F,1); 设置缓冲区的长度(filebuf,文件大小(F)); blockread(F,filebuf [ 0 ],文件大小(F));//将文件读入内存 关闭一个打开的文件(F); / /下面为读取SWF文件的文件头头部分 currentpos:= 0; / /读取'fws”标示 规定长度(FWS,3);移动(filebuf [ currentpos ],和[ 1 ],3);公司(currentpos,3); 如果FWS <> 'fws然后开始 设置缓冲区的长度(filebuf,0); 被(“该文件不是Flash SWF文件~”); 出口; 结束; / /读取版本号 移动(filebuf [ currentpos ],版本,Sizeof(版));公司(currentpos,Sizeof(版)); 如果版本< 5然后开始 设置缓冲区的长度(filebuf,0); 被(“该SWF文件不是Flash 5以上版本,本程序当前仅识别Flash 5以上格式SWF文件~”); 出口; 结束; / /读取SWF文件长度 filelengthpos:= currentpos; (filebuf [移动] Sizeof(currentpos,文件长度,文件长度));公司(currentpos、Sizeof(文件长度)); / /读取Xmax,XMin,YMin,YMax / /这里仅读出此四个值的存储字节存放到buf中,没有计算它们的实际值 移动(filebuf [ currentpos ],B,1);公司(currentpos,1); b = SHR 3; / /得到位数(位) B2:= 5 + B2×4;而(B2 mod 8)<> 0做公司(B2);/ /计算共有多少位点数 B2:=(B2 DIV 8)- 1;/ /计算共有多少字节(字节) 规定长度(buf,B2 + 1);而[ 0 ]:= B; 移动(filebuf [ currentpos ],而是[ 1 ],B2);公司(currentpos,B2); / /读取为小数点前部分帧率,B2,B1为小数点后部分 移动(filebuf [ currentpos ]、B1、Sizeof(B1));公司(currentpos、Sizeof(B1)); 移动(filebuf [ currentpos ]、B2、Sizeof(B2));公司(currentpos、Sizeof(B2)); S:= IntToStr(B2)+’。”+IntToStr(B1); 帧速率:= strtofloat(S); / /读取总帧数帧数 移动(filebuf [ currentpos ]、Sizeof(帧数,帧数));公司(currentpos、Sizeof(帧数)); / /下面为读取SWF文件的文件内容标签部分 S:= opendialog1.filename; S:= extractfilename(S);而Pos('。',S)<> 0做:=复制(S,1,POS('。',S)- 1); 文件名; 规定长度(buf,0);音乐档案:=“.wav”;soundcount:= 1; 重复 TagPos:= currentpos; / /读取tagid并得到taglength 移动(filebuf [ currentpos ],TagID,Sizeof(tagid));公司(currentpos,Sizeof(tagid)); taglength:= tagid美元和3f; TagID:= tagid SHR 6; / /如果是longtag则读取下面的taglength 如果taglength = $ 3f然后开始 移动(filebuf [ currentpos ],TagLength,Sizeof(taglength));公司(currentpos,Sizeof(taglength)); 结束; 案例TagID 24:开始 / /是否有SWF保护设置 / /如果有则将该标签去掉,将后面的标签搬过来覆盖掉tagid为24的部分 移动(filebuf [ currentpos + taglength ],filebuf [ tagpos ],文件长度-(currentpos + taglength)+ 1); / /相应的,要减去文件长度文件长度 文件长度:=文件长度-(Sizeof(tagid)+ taglength); currentpos:= tagpos; 结束; 14:开始 / /读取事件声音 移动(filebuf [ currentpos ],SoundID,Sizeof(soundid));公司(currentpos,Sizeof(soundid)); tmppos:= currentpos; 移动(filebuf [ currentpos ],SoundInfo,Sizeof(soundinfo));公司(currentpos,Sizeof(soundinfo)); 移动(filebuf [ currentpos ],SoundSampleCount,Sizeof(soundsamplecount));公司(currentpos,Sizeof(soundsamplecount)); 案例soundinfo SHR 4 0::=“wav”; 2:S =; 结束; L:= TagLength Sizeof(soundid); / /将标签的数据部分作为声音数据存盘 assignfile(FW,e_dir。文字+文件名+ '_sound ' +IntToStr (soundid)+ S);重写(FW,1); blockwrite(FW,filebuf [ tmppos ],L); 关闭一个打开的文件(FW); currentpos:= tmppos + L; 结束; 18:开始 / /读取流声音的数据头 // id = 18属于soundstreamhead / /先检查前面是否已有了流声音,如果有则先存盘 如果长度(BUF)<> 0然后开始 assignfile(FW,e_dir。文字+文件名+ '_streamsound ' +IntToStr (SoundCount)+音乐档案);重写(FW,1); blockwrite(FW,但是[ 0 ],长度(BUF)); 关闭一个打开的文件(FW); 公司(soundcount); 结束; 规定长度(buf,0); 移动(filebuf [ currentpos ],streamheadb1,sizeof(streamheadb1));公司(currentpos,sizeof(streamheadb1)); 移动(filebuf [ currentpos ],streamheadb2,sizeof(streamheadb2)); 公司(currentpos,sizeof(streamheadb2)); 移动(filebuf [ currentpos ],StreamSoundSampleCount,Sizeof(streamsoundsamplecount));公司(currentpos,Sizeof(streamsoundsamplecount)); 1 /此处有个unknow1数据,占16位,没有用处 移动(filebuf [ currentpos ],unknow1,Sizeof(unknow1));公司(currentpos,Sizeof(unknow1)); 案例streamheadb2 SHR 4 0:音乐档案:=“wav”; 2::=“MP3音乐文件; 结束; 结束; 45:开始 / /读取流声音的数据头 // id = 45属于soundstreamhead2 / /先检查前面是否已有了流声音,如果有则先存盘 如果长度(BUF)<> 0然后开始 assignfile(FW,e_dir。文字+文件名+ '_streamsound ' +IntToStr (SoundCount)+音乐档案);重写(FW,1); blockwrite(FW,但是[ 0 ],长度(BUF)); 关闭一个打开的文件(FW); 公司(soundcount); 结束; 规定长度(buf,0); 移动(filebuf [ currentpos ],streamheadb1,sizeof(streamheadb1));公司(currentpos,sizeof(streamheadb1)); 移动(filebuf [ currentpos ],streamheadb2,sizeof(streamheadb2));公司(currentpos,sizeof(streamheadb2)); 移动(filebuf [ currentpos ],StreamSoundSampleCount,Sizeof(streamsoundsamplecount));公司(currentpos,Sizeof(streamsoundsamplecount)); / /不同于ID = 18,此处没有unknow1数据 案例streamheadb2 SHR 4 0:音乐档案:=“wav”; 2::=“MP3音乐文件; 结束; 结束; 19:开始 1 /将每帧(位于每1个ID = 19的标签数据中)的声音数据读取并组合在一起 1 /此处有个unknow2数据,占32位,没有用处 移动(filebuf [ currentpos ],unknow2,Sizeof(unknow2));公司(currentpos,Sizeof(unknow2)); L:=长度(BUF);/ /求出缓冲区现在长度 规定长度(buf,L + TagLength Sizeof(unknow2));//将缓冲区加长 / /顺序存放 移动(filebuf [ currentpos ],而是[我],TagLength Sizeof(unknow2));公司(currentpos,TagLength Sizeof(unknow2)); 结束; 0:开始 / /结尾处检查前面是否有流声音,如果有则存盘 如果长度(BUF)<> 0然后开始 assignfile(FW,e_dir。文字+文件名+ '_streamsound ' +IntToStr (SoundCount)+音乐档案);重写(FW,1); blockwrite(FW,但是[ 0 ],长度(BUF)); 关闭一个打开的文件(FW); 结束; 结束; 其他currentpos:= currentpos + taglength; 结束; 直到tagid = 0; 设置缓冲区的长度(filebuf,0); 规定长度(buf,0); 结束; 程序tmain button3click(发件人:TObject); 开始 关闭; 结束; 程序tmain formshow(发件人:TObject); VaR S:字符串; 开始 S:= application.exename; S:=返回特定文件的路径(S); 如果s(长度)为“\\”,则为; e_dir。正文:= S; 结束; 程序tmain speedbutton1click(发件人:TObject); VaR S:字符串; 信息:tbrowseinfo; 巴夫:阵[ 0 .. max_path ]字符; P:pitemidlist; 开始 fillchar(BUF [ 0 ],max_path + 1,0); 信息开始 hwndowner:=处理; pidlroot:= nil; pszdisplayname:= buf; lpsztitle:=“:”选择声音文件生成目录; bif_returnonlyfsdirs ulFLags:=; LPFN:= nil; 结束; P:=程序(信息); 如果巴夫<>”开始 shgetpathfromidlist(P,buf); S:= BUF的长度;如果[(S)] < > '然后S = S + '; e_dir。正文:= S; 结束; 结束; 结束。
/
本文档为【提取swf中的声音文件程序源代码(Extract SWF sound file source code)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索