188js《金nodejs 沙盒 》平 台——网联盟 电信6区叫什么名字

Adobe公司出品的多媒体处理软件产品線较多涵盖了音视频编辑、图像处理、平面设计、影视后期等领域。为了扩展软件的功能Adobe公司为开发者提供了两种方式来增加软件的功能:分别是插件(Plugin)和扩展(Extension)。去年利用官方提供的SDK开发过两款Premiere插件分别用于导入自定义格式的多媒体文件和视频流预览。近来体驗了一下Adobe

CC时代则提供了HTML5实现这使得开发者们可以接口HTML5, CSS3, Javascript甚至是NodeJS来开发。因为Adobe在PremierePro里面嵌入了CEF可以高效的解析渲染HTML5、运行Nodejs程序。而Nodejs则能实现系统功能的调用简直不要太叼!在这篇文章中,我大概总结了一下使用HTML5来开发一款Adobe扩展的心路历程

  这是国外一家知名的视频素材交易網站Pond5开发的一款PremierePro扩展,它可以让用户在Pr中登陆网站、下载预览素材、购买高清素材、自动导入视频或自动替换视频使得用户无需额外打開浏览器登陆网站操作,极大的提高了用户的使用体验类似的还有shutterstock开发的插件:

      配置结束,到这里可以利用eclipse生成extension的模板工程了生成的模板工程非常简单,面板里面只有一个默认的按钮:

After Effects等等)下面的代码指明了多个宿主程序都可以加载:

Extended是不会加载这个extension的。但是如果要指定某版本以上的所有版本都支持该如何指定?比如要支持2014以上的PremierePro CC如何指定这个Version呢?只写上最低版本号即可:

Services简称CSXS。因此在一些配置文件中仍然可以看到CSXS这个缩写。CEP最初版本为4.x发展至今已经有5个大版本了,最新的版本为8.x支持最新的Adobe CC 2018宿主程序。

      如上图如果我們要支持初代CC版本的宿主程序的话,RequiredRuntime的Version就要设置为4.0否则是无法正常加载extension的。此外如果想在扩展中访问文件系统的话,还得指定额外一些参数:

      我们在开发的时候需要随时调整extension的代码。而Adobe宿主程序对于那些没有签名的extension是置之不理不会加载的。因此我们需要把调试模式打开,这样开发的时候就不必对扩展进行签名了:

      注意:如果宿主程序的版本不同对应的文件可能也不同。比如CC2017,就要把上面对应部分妀成 "CSXS.7"

  这个列表说明了调试不同的宿主程序时用的端口不一样以Pond5为例,其.debug文件内容如下:

      开发的时候有可能需要禁止CEF对web内容缓存,鈳以直接手动删除掉如下位置中extension对应的文件夹:

      这样当前系统的所有用户都可以加载这个Extension了。也可以仅仅安装给当前用户使用其位置洳下:

      发布Extension的时候,需要对整个包进行签名这里需要用到ZXPSignCmd这个工具,在官方网站上可以下载首先,要进行签名我们需要一个数字证书这个证书我们可以从第三方证书签发机构购买,这需要一定的经费也可以做一个自签名的证书,对extension进行签名我们就按照后面一种方式来走个流程:

  这样会在当前目录下生成一个自签名证书,然后我们可以用这个证书签名打包了:

  ZXPSignCmd工具签名时会在extension目录下生成一個META-INF文件里面存放这次签名的信息。然后工具会将整个目录打包压缩成一个*.zxp文件。这就是我们最终需要发布的扩展文件了^_^

通过仔细分析Pond5和shutterstock的实现,我们可以总结下这种类型的扩展的一般执行逻辑:

(1)在宿主程序中打开extension面板通过”窗口-扩展“可以找到已加载的扩展

(2)Extension的脚本会分析用户是否是第一次使用。如果是第一次让用户选择视频素材要保存的位置,这个一般通过弹出对话框实现用户选择的位置信息,一般通过xml文件持久化存在用户家目录中用户如果不是第一次使用扩展的话,就直接加载家目录中的xml文件解析了

(3)用户点擊了某个视频素材,开启下载这个过程一般可通过nodejs实现。不过要设置好下载回调函数。

(4)下载成功后执行回调函数把下载好的视頻文件导入到宿主程序中。这个步骤则是调用extendscript脚本实现具体脚本编写可以参考

在这篇文章中我们将探讨如何使用解释器的内部结构来逃离NodeJS沙箱。

我要回帖

更多关于 nodejs 沙盒 的文章

 

随机推荐