一、背景介紹
Adobe公司出品的多媒體處理軟件產(chǎn)品線較多,涵蓋了音視頻編輯、圖像處理、平面設(shè)計、影視后期等領(lǐng)域。為了擴展軟件的功能,Adobe公司為開發(fā)者提供了兩種方式來增加軟件的功能:分別是插件(Plugin)和擴展(Extension)。去年利用官方提供的SDK開發(fā)過兩款Premiere插件,分別用于導(dǎo)入自定義格式的多媒體文件和視頻流預(yù)覽。近來體驗了一下Adobe Extension的開發(fā)。
Adobe Plugin一般用于提供更靠近底層的功能。官方出于效率的考慮,提供的插件SDK是基于C++語言的。而Adobe Extension則偏向與提供上層應(yīng)用的擴展,在Adobe CS時代是采用的Flash形式實現(xiàn)的。
在Adobe CC時代則提供了HTML5實現(xiàn),這使得開發(fā)者們可以接口HTML5, CSS3, Javascript甚至是NodeJS來開發(fā)。因為Adobe在PremierePro里面嵌入了CEF,可以高效的解析渲染HTML5、運行Nodejs程序。而Nodejs則能實現(xiàn)系統(tǒng)功能的調(diào)用,簡直不要太叼!在這篇文章中,我大概總結(jié)了一下使用HTML5來開發(fā)一款A(yù)dobe擴展的心路歷程。 我們要做的一款擴展非常簡單,如下圖所示:
這是國外一家知名的視頻素材交易網(wǎng)站Pond5開發(fā)的一款PremierePro擴展,它可以讓用戶在Pr中登陸網(wǎng)站、下載預(yù)覽素材、購買高清素材、自動導(dǎo)入視頻或自動替換視頻。使得用戶無需額外打開瀏覽器登陸網(wǎng)站操作,極大的提高了用戶的使用體驗。類似的還有shutterstock開發(fā)的插件:
二、開發(fā)環(huán)境
Adobe官方基于eclipse推出了一個用于開發(fā)Adobe Html5 Extension的IDE。因此,我們按如下流程先來配置下開發(fā)環(huán)境:
下載 Eclipse,最好是3.6或更高版本,以及Extension Builder
安裝Adobe Premiere Pro CC 2014/2015.配置elicpse的“target application”和"Service Manager"
打開調(diào)試模式:在注冊表中添加 'PlayerDebugMode'字段
配置結(jié)束,到這里可以利用eclipse生成extension的模板工程了。生成的模板工程非常簡單,面板里面只有一個默認的按鈕:
三、工程配置manifest.xml文件
Adobe Html5 Extension的開發(fā),最重要的一個文件就是manifest.xml。這個文件描述了這個extension的基本信息,以便Adobe宿主程序能夠正常識別加載。其大體內(nèi)容如下:
其中,BundleName, BundleId, BundleVersion由開發(fā)者來定,一般就是按照正常的版本迭代來確定。最重要的是HostList和RequiredRuntimeList這兩個標簽的內(nèi)容。HostList里面確定了這個extension支持哪些宿主程序(如PremierePro, After Effects等等)。下面的代碼指明了多個宿主程序都可以加載:
這里只支持Photoshop Extended,其Host ID對應(yīng)為PHXS,其他宿主程序的Host ID及版本如下:
注意到Version使用了一個方括號的形式[14.0, 14.9],這表明這個extension支持版本14.0-14.9的Photoshop Extended ,高于這個版本或者低于這個版本的Photoshop Extended是不會加載這個extension的。但是,如果要指定某版本以上的所有版本都支持該如何指定?比如要支持2014以上的PremierePro CC,如何指定這個Version呢?只寫上最低版本號即可:
另外,就是RequiredRuntimeList這個標簽了。這個標簽指定了運行時的CEP版本。所謂的CEP是Common Extensibility Platform的簡稱,它提供了一個核心服務(wù)集,便于開發(fā)者執(zhí)行Extendscript代碼、探查宿主程序的環(huán)境變量、處理extension與host之間發(fā)送的事件。在之前這個服務(wù)集叫做Creative Suite Extensible Services,簡稱CSXS。因此,在一些配置文件中仍然可以看到CSXS這個縮寫。CEP最初版本為4.x,發(fā)展至今已經(jīng)有5個大版本了,最新的版本為8.x,支持最新的Adobe CC 2018宿主程序。
如上圖,如果我們要支持初代CC版本的宿主程序的話,RequiredRuntime的Version就要設(shè)置為4.0。否則是無法正常加載extension的。此外,如果想在擴展中訪問文件系統(tǒng)的話,還得指定額外一些參數(shù):
禁用簽名驗證