jQuery webcam plugin是一个在ie,firefox,chrome下都可以用的摄像头摄像及拍照用的插件。

http://www.xarg.org/project/jquery-webcam-plugin/

在官方下载的源代码中提供的jscam.js生成的图片是320x240的图,用高清摄橡头时发挥不了它的价值,在一些业务需求下,如用摄像头拍证件照等,需要更高分辩率的图,所有我用官方提供的源码as及xml文件,用swfmill + mtasc重新编译生成自定义宽度和高度(如:800x800)的jscam.swf文件,以便充分利用高清摄像头资源。

官方提供的Makefile文件中主要包含两部份代码,在windows下使用时可拆解成:

swfmill simple src/jscam.xml jscam.swf

mtasc -v -swf jscam.swf -main jscam.as -version 8 -cp src

以上文字来源于《jQuery webcam plugin jscam.swf文件编译,自定义视频及图片分辩率》:

http://blog.sina.com.cn/s/blog_5f66526e0102vliw.html

正是基于该篇文章的指引,笔者进行了多次的尝试和摸索,终于成功实现了反编译,在此深表感谢!!

但用命令行的方式进行编译,由于步骤比较多,过程比较繁琐,所以很容易出现错误。

一、【命令行式反编译】具体步骤如下:

Microsoft Windows [版本 10.0.14393]
(c) 2016 Microsoft Corporation。保留所有权利。
注:笔者的编译环境在c:\swf
c:\>cd /d c:\swf
第一步:利用jscam.xml为基础,生成空白的jscam.swf
c:\swf>swfmill simple src/jscam.xml out/jscam.swf
第二步:反编译空白的jscam.swf文件,生成jscam-source.xml
c:\swf>swfmill swf2xml out/jscam.swf src/jscam-source.xml
第三步:打开src文件夹下的jscam-source.xml,修改<DefineSprite objectID="2" frames="1">为<DefineSprite objectID="1" frames="1">【注意:一共有2处需要修改】
第四步:利用jscam-source.xml,重新生成jscam.swf
c:\swf>swfmill xml2swf src/jscam-source.xml jscam.swf
第五步:打开src文件夹下的jscam.as,修改宽高度为你需要的大小
【当前宽度:800】for (var i = 0; i < 800; ++i) {
【当前高度:800】for (var j = 0; j < 800; ++j) {
第六步:利用mtasc把jscam.as代码添加进jscam.swf文件中即可生成最终的jscam.swf文件。
【注意】这一步时,src文件夹里应该包含有jscam.as、BitString.as和JPGEncoder.as等3个文件,否则编译不过去
c:\swf>mtasc -v -swf jscam.swf -main jscam.as -version 8 -cp src
以下是 编译过程的提示信息
Classpath : c:\swf/std8/;c:\swf/std/;src/;c:\swf/src/;c:\swf/;;/
Parsed c:\swf/std/StdPresent.as
Parsed c:\swf/std/Object.as
Parsed c:\swf/std/Boolean.as
Parsed c:\swf/std/String.as
Parsed c:\swf/std/Number.as
Parsed c:\swf/std/Array.as
Parsed c:\swf/std/Function.as
Parsed src/jscam.as
Parsed c:\swf/std/Camera.as
Parsed c:\swf/std8/flash/display/BitmapData.as
Parsed c:\swf/std8/flash/geom/Rectangle.as
Parsed c:\swf/std8/flash/geom/Point.as
Parsed c:\swf/std8/flash/filters/BitmapFilter.as
Parsed c:\swf/std8/flash/geom/Matrix.as
Parsed c:\swf/std8/flash/geom/ColorTransform.as
Typing JSCam.main
Parsed c:\swf/std/TopLevel.as
Parsed c:\swf/std8/MovieClip.as
Parsed c:\swf/std/ContextMenu.as
Parsed c:\swf/std8/TextField.as
Parsed c:\swf/std/TextField/StyleSheet.as
Parsed c:\swf/std8/TextFormat.as
Parsed c:\swf/std/TextSnapshot.as
Parsed c:\swf/std8/flash/geom/Transform.as
Parsed c:\swf/std/FunctionArguments.as
Parsed c:\swf/std8/System/security.as
Parsed c:\swf/std8/flash/external/ExternalInterface.as
Parsed c:\swf/std8/Stage.as
Typing JSCam.pauseCamera
Typing JSCam.resumeCamera
Typing JSCam.capture
Typing JSCam._capture
Typing JSCam.getCameraList
Typing JSCam.setCamera
Typing JSCam.save
Parsed src/JPGEncoder.as
Parsed src/BitString.as
Parsed c:\swf/std/XML.as
Parsed c:\swf/std8/XMLNode.as
Typing JSCam._stream
Typing JPGEncoder.initQuantTables
Parsed c:\swf/std/Math.as
Typing JPGEncoder.computeHuffmanTbl
Typing JPGEncoder.initHuffmanTbl
Typing JPGEncoder.initCategoryNumber
Typing JPGEncoder.writeBits
Typing JPGEncoder.writeByte
Typing JPGEncoder.writeWord
Typing JPGEncoder.fDCTQuant
Typing JPGEncoder.writeAPP0
Typing JPGEncoder.writeSOF0
Typing JPGEncoder.writeDQT
Typing JPGEncoder.writeDHT
Typing JPGEncoder.writeSOS
Typing JPGEncoder.processDU
Typing JPGEncoder.RGB2YUV
Typing JPGEncoder.JPGEncoder
Typing JPGEncoder.encode
Time spent : 0.028

  

二、【命令行式反编译】简化步骤

为了能更好的进行反编译,笔者进行了长时间的研究发现,以上步骤中有些步骤可以省略,即:我们可以直接从第四步开始反编译。不过有个前提是,要有已经修改好的《jscam-source.xml》文件:

 <?xml version="1.0" encoding="UTF-8"?>

 <swf version="7" compressed="1">

   <Header framerate="24" frames="1">

     <size>

       <Rectangle left="0" right="16000" top="0" bottom="16000"/>

     </size>

     <tags>

       <SetBackgroundColor>

         <color>

           <Color red="255" green="255" blue="255"/>

         </color>

       </SetBackgroundColor>

       <DefineVideoStream objectID="1" frames="0" width="800" height="800" deblocking="0" smoothing="0" codec="0"/>

       <DefineSprite objectID="1" frames="1">

         <tags>

           <End/>

         </tags>

       </DefineSprite>

       <Export>

         <symbols>

           <Symbol objectID="1" name="clip"/>

         </symbols>

       </Export>

       <ShowFrame/>

       <End/>

     </tags>

   </Header>

 </swf>

上面的jscam-source.xml是宽高均为800像素的Flash配置,一共有4出改动,2红2绿,关系是红色的宽高刚好是绿色20倍!只要按这个要求配置,即可在第五步中生成宽高均为800像素的Flash,因为其中不含脚本,所以要进一步利用mtasc把jscam.as等3个文件的as代码添加进jscam.swf文件中,即可生成最终的jscam.swf文件。

需要注意的是:一定要将jscam.as、BitString.as、JPGEncoder.as等3个as文件要保存到新建的src文件夹里,因为mtasc在编译时,需要将src中的as文件引用到swf文件中。

三、【利用特制工具反编译】

为了更好更快的反编译jscam.swf文件,笔者花了2天的时间,设计和制作了这款工具,我们只需要输入宽度和高度,就可以一键生成新的jscam.swf文件。

软件截图

该工具依然依赖swfmill和mtasc两款开源工具,需要包含在软件根目录下。

软件的根目录结构

【特别说明】

Word版使用说明下载:http://download.csdn.net/download/nwnuchem/9778883

目前软件还在测试阶段,有jscam.swf定制需要的朋友,可以与我联系,免费提供自定义宽高的jscam.swf文件。

=====================================

【测试Demo】

Demo网址:http://www.jsiis.com/iCam/

jQuery Webcam Plugin jscam.swf文件反编译工具使用说明的更多相关文章

  1. 常用EXE文件反编译工具

    PE Explorer V1.99 R5 绿色汉化特别版_强大的可视化汉化集成工具 功能极为强大的可视化汉化集成工具,可直接浏览.修改软件资源,包括菜单.对话框.字符串表等: 另外,还具备有 W32D ...

  2. 转载:常见EXE文件反编译工具

    PE Explorer V1.99 R5 绿色汉化特别版_强大的可视化汉化集成工具 功能极为强大的可视化汉化集成工具,可直接浏览.修改软件资源,包括菜单.对话框.字符串表等: 另外,还具备有 W32D ...

  3. 常用EXE文件反编译工具【转】

    http://www.cnblogs.com/happyday56/p/3740108.html PE Explorer V1.99 R5 绿色汉化特别版_强大的可视化汉化集成工具 功能极为强大的可视 ...

  4. class文件反编译工具jd-gui下载地址

    https://github.com/java-decompiler/jd-gui/releases windows下载: 下载后打开软件,直接将jar包拖进去: 效果图非常美观:

  5. jQuery webcam plugin

    jQuery webcam plugin The jQuery webcam plugin is a transparent layer to communicate with a camera di ...

  6. 怎样通过反编译工具与插件 查看java *.class 文件源代码

    Java Decompiler[java 反编译]:开发了反编译工具.能够方便查看*.class 文件源代码.以下介绍几种查看源代码的方式:工具&插件 1.JD-GUI JD-GUI  是显示 ...

  7. Android odex文件反编译

    odex 是经过优化的dex文件,且独立存在于apk文件.odex 多用于系统预制应用或服务.通过将apk中的dex文件进行 odex,可以加载 apk 的启动速度,同时减小空间的占用.请参考ODEX ...

  8. C#中修改Dll文件 (反编译后重新编译)

    Dll文件生成后,如没有源代码,又要修改其中内容 可以用微软自带的ildasm和ilasm程序 先用ildasm将dll文件反编译成il文件 ildasm Test.dll /out=Test.il  ...

  9. Android测试(三)——APK文件反编译

    APK文件反编译: 在进行反编译操作前,先简单介绍下smali文件: smali是一种文件格式,语法和Jasmine的语言类似,这些smali文件包含开发应用程序时编写的java类的代码. 工具:ja ...

随机推荐

  1. Linux IPC之共享内存C 事例

    Linux IPC之共享内存 标签: linuxrandomnull工作 2011-08-25 11:52 4123人阅读 评论(0) 收藏 举报  分类: Linux(3)  读书札记(3)  版权 ...

  2. 为什么是kafka?

    MQ在分布式场景下的应用已经非常广泛了.可是在全部的MQ使用场景中,大多都要求不能丢消息.意味着必须有持久化的能力,传统行业经常使用的activemq.rabbitmq尽管有持久化能力,无奈的是性能太 ...

  3. luogu2828 [HEOI2016/TJOI2016]排序

    题目大意 给出一个1到n的全排列,现在对这个全排列序列进行m次局部排序,排序分为两种:(0,l,r)表示将区间[l,r]的数字升序排序:(1,l,r)表示将区间[l,r]的数字降序排序.最后询问第q位 ...

  4. Android EditText得到和失去焦点时,自定义处理内容

    当android的Edittext得到/失去焦点时,需要自定义一些处理内容时,需要对EditText对象的Focus进行监听处理. 在Activity中,做以下处理: 1.取得EditText对象. ...

  5. Android系统Recovery工作原理之使用update.zip升级过程分析(七)---Recovery服务的核心install_package函数【转】

    本文转载自:http://blog.csdn.net/mu0206mu/article/details/7465514 一.       Recovery服务的核心install_package(升级 ...

  6. 【撸码caffe 五】数据层搭建

    caffe.cpp中的train函数内声明了一个类型为Solver类的智能指针solver: // Train / Finetune a model. int train() { -- shared_ ...

  7. WingIDE4.1 破解及支持中文设置

    1.下面提供最新版本的破解方法. 先到http://wingware.com/downloads/wingide下载最新版本的IDE. 安装之前,先修改时间到一个月前. 安装 安装之后然后获取试用版的 ...

  8. c++之——————各种变量

    对我们程序员来讲,“变量”和“对象”是可以相互互换使用的.-------------开篇之词. 变量:提供一个具有名字的可供程序操作的存储空间.由类型说明符和其后紧跟的数个列表组成,其中变量名之间使用 ...

  9. springboot创建项目

    Springboot作为轻量级快速开发受到无数java人的青睐,Spring Boot是为了简化Spring应用的创建.运行.调试.部署等而出现的,使用它可以做到专注于Spring应用的开发,而无需过 ...

  10. 这是一个无效的原路径/url

    当我们在SourceTree上新建一个“从URL克隆”的远程项目时,在确认“URL”无误的前提下依然报红色字体“这是一个无效的原路径/URL”错误,我们只需要快捷键“Command + ,”打开Sou ...