一、介绍

最近公司需要针对Final Cut Pro(FCP)开发一款效果插件,用于对公司自己开发的视频格式进行后期处理。Final Cut Pro是苹果公司推出的一款视频剪辑软件,因此需要在OSX平台上进行开发。目前最新版本的Final Cut Pro已经更名为Final Cut Pro X,因此也可简称FCPX。网络上针对FCPX的可用插件不少,但是相关的开发资料就显得非常匮乏,Google了半天都没找到定点信息。没办法,关键时刻还得去看看官方文档。寻寻觅觅终于还是发现了一些有用的信息。公司目前已经在Adobe Premiere Pro CC SDK的基础上开发了一款适用于Premiere Pro和After Effects的导入插件。因此,初步想法是在Final Cut Pro X上也开发一款类似的插件,用于实现自有视频格式的导入、播放、剪辑等功能。但是FCPX并没有提供类似的SDK,唯一找到的一个叫FxPlug的插件框架还是用来开发效果插件的。既然如此,就只好去使用FxPlug来尝试一下能否实现目标功能了。

Final Cut Pro是苹果公司开发的一款视频剪辑软件,因此需要在OS X平台上运行。开发前需要准备一台苹果电脑,并下载安装好Final Cut Pro及XCode。另外,在发布FxPlug之前还需要在Motion中进行处理才能让FCPX识别。Motion是苹果公司开发的另外一款效果编辑软件,类似于Adobe推出的After Effects。所以,还需要安装好Motion才能完整的配置好开发工具链。

二、FxPlug插件框架

FxPlug插件框架可以开发两种类型的插件:Filter和Generator。Filter(滤镜)需要有视频片段输入,在输入片段的基础上做视效处理再输出;Generator则不要求输入视频片段,可以合成一些视频片段。这里以Filter类型插件作为例子讲解整个开发过程。

首先需要到苹果开发者官网下载SDK:FxPlug SDK,最新版已经出到3.1了。

下载下来的是一个DMG镜像文件,双击加载可以看到如下三份文件:pkg文件是真正的SDK文件,点击安装后是其实就是释放一些framework;Developer文件夹下是一些模板工程,可以参考这些模板工程来编写我们自己的逻辑代码。

我们以模板工程CIFxPlug作为例子,在XCode中打开工程文件,可以看到总共有四个文件。其中CIFxPlug.h/CIFxPlug.m是插件的主文件,而CIFxPlugCache.h/CIFxPlugCache.m则实现了一个简单的缓存类,用于缓存CIFilterCIContext这两个对象。这个工程演示了在FxPlug插件框架中使用Core Image来处理视频的方法。作为演示,我们直接编译生成CIFxPlug.fxplug插件文件即可。

在发布插件之前,我们需要先在Motion中进行Rig操作。这里需要在XCode进行Archive操作,签名打包后可以将得到的CIFxPlug.fxplug文件夹复制到/Library/Plug-Ins/FxPlug/目录下。如果用户从来没有装过其他外部插件,可能不存在这个路径,此时可以手动创建这些路径。

此时可以启动Motion,选择Final Cut 效果新建项目。在滤镜大类下可以看到我们新开发的CIFxPlug插件。在顶部可以看到关于插件的简单描述。

要生成简单的效果,可以简单的将CIFxPlug插件拖到右边的Drop Zone即可。然后保存发布,这里要填好模板名称和类别。类别一般是公司名称,模板名称则是效果的具体名字。因为一个公司可能开发多个效果插件,填一样的类别名称则可以将多个插件归类到一起。

发布之后即可在FCPX中实时看到新发布的插件,而无需重启FCPX。之后就可以正常的和使用内置效果插件一样,使用我们自己开发的插件了。

实际上,在Motion中进行处理有两个目的:一是为了生成可以让FCPX可以识别的文件格式,这样才能正确的被FCPX加载;二是为了做Rig操作,具体来讲就是为插件提供一些小widgets,方便用户对插件的参数进行微调。这个过程也叫作Rig。widgets主要分成三类:slider, popup, checkbox。

三、插件发布流程

(1)在XCode中编译生成FxPlug插件,在XCode中执行Archive操作,签名打包。

(2)拷贝FxPlug插件到/Library/Plug-Ins/FxPlug/目录下,必要的时候手动创建目录。

(3)打开Motion新建项目。本人项目中演示的是滤镜(Filter)插件的实现,所以选择Final Cut Effects项目。

(4)在Motion资源库中选择滤镜下,找到自己开发的滤镜插件,拖到右侧。

(5)存储当前项目,填好类别和主题,保存即可在FCPX中看到新发布的插件。(实际文件可以在用户根目录下的Movies中找到)

(6)在FCPX中使用FxPlug插件。

四、遇到的问题

(1)在FxPlug插件中调用动态库出现Code Signature Invalid异常,导致Motion崩溃。在使用dylib时,Motion崩溃退出时经常报Code Signature Invalid异常。后来经过调试发现,原来是在XCode中做Archive操作时会对dylib做签名操作。后来手动使用install_name_tool修改了dylib的path时,这时签名就发生了改变。系统在加载dylib是就会报Code Signature Invalid错误。那要修改dylib的path怎么办呢?一种解决办法就是:把所有的dylib的path修改好后放到工程目录下,在XCode中引用这些dylib,在build phase中添加Copy Files Phase,这一步可以让XCode打包时自动拷贝签名好的dylib。这样就解决了Code Signature Invalid异常问题。

(2)install_name_toolotool工具的使用(两者只能在工程目录下的Libs下使用)。这两个工具配合起来用于修改path。otool用于查看dylib和可执行文件依赖的动态库;Install_name_tool则用于修改。

(3)Objective C和C++混合编程。OC与C/C++混合编程是一个常见的场景,在公司的项目中,需要在FxPlug插件中调用公司用C++开发的一个渲染库。渲染库以dylib和头文件的形式提供。适配的方式是,将原先的.m文件修改成.mm文件,然后在这个.mm文件中引入渲染库头文件。这样编译就没问题了。如果在.h文件中引入渲染库头文件,会产生编译错误的。因为#include预处理其实就是代码替换,这样一来C++代码和OC代码在.h文件中就混杂在一起了,因而无法编译通过。在.mm文件中包含头文件时,同样也有代码替换的这个过程,但是为什么就可以呢?因为.mm扩展名本来就允许OC和C++代码共存呀。

五、总结

苹果下的开发太封闭了,针对FCPX插件开发的资料也非常少,官方文档在某一程度上也显得语焉不详。英文文档在理解上也存在一定的差异,因此在摸索过程中碰了不少的壁。此外,Motion和Final Cut Pro自身的日志也非常少。有时候会莫名其妙的崩溃,以至于排查代码错误显得非常的困难。幸好Motion和FCPX在崩溃时有一部分调用堆栈信息,在一定程度上可以帮助缩小问题范围。这次项目中要用的插件也基本上开发完成了,初步能够实现预定的效果。整个过程虽然痛苦,但是最终还是完成了任务,算是有始有终了。

Final Cut Pro X效果插件开发总结相关推荐

  1. pr如何跳到关键帧_教你如何使用Final cut pro X制作拉伸缩放旋转的效果|键盘|final|pro|cut...

    Final cut pro X作为最专业的多媒体视频剪辑软件,很多网友都喜欢用它来做视频的一些特效和剪辑,那么如何才能熟练的掌握这款软件的使用方法呢,今天macz为您整理了一篇简单的fcpx使用教程, ...

  2. 持续更新!最新FCPX插件模板合集下载,Final Cut Pro X插件大全 效果/转场/字幕/发生器!

    使用FCPX软件的朋友们,是否还在为到处找插件烦恼呢?或者想要的效果不知道是用的什么插件制作的,为此我整理了一些FCPX软件专用的插件,做个列表让大家了解下! 一,先认识下FCPX软件的界面,这样才能 ...

  3. 2021最新FCPX插件合集打包下载Final Cut Pro X插件大全 效果/转场/字幕/发生器

    2021最新FCPX插件合集打包下载Final Cut Pro X插件大全 效果/转场/字幕/发生器 原文及下载地址:https://www.aeziyuan.com/t-19358.html 使用系 ...

  4. 视频剪辑效果制作Final Cut Pro(fcpx)

    Final Cut Pro X for Mac是Mac平台上最好用的一款视频剪辑软件,final cut pro mac特别版能够为您进行流畅的视频剪辑,组合镜头,内容自动分析,添加特效等等操作.新版 ...

  5. Final Cut Pro X剪辑影片基本步骤

    文章目录 一.资源库.事件.项目之间的区别 二.制作一个视频的步骤 (一)创建资源库 (二)创建事件(非必需) (三)导入资源 (四)创建项目 (五)进行剪辑 (六)导出视频 三.常见问题 四.关于m ...

  6. Final Cut Pro X实用教程:FCPX安装插件位置以及如何删除插件

    Final Cut Pro X是大多数电 影人的首选编辑软件,FCPX支持多种插件,可以帮助剪辑师更好的制作视频.长期使用下来积累了相当多的插件,想删除却不知道该如何删除,fcpx插件安装位置在哪也无 ...

  7. 视频剪辑软件调研分析-iMovie、Final Cut Pro、视频剪辑大师

    根据作业要求选用三款视频剪辑软件进行简单的调研分析:iMovie.Final Cut Pro.视频剪辑大师. 对比 颜值和个人使用习惯 对我而言,使用一款软件首先还是要看整个UI界面是否美观,以及 各 ...

  8. Final Cut Pro X 精选插件合集!

    常用 Final Cut Pro X的人都知道它的厉害和高效.即使在一个入门级的Mac上工作,效率也一样的高.但是不像Adobe Premiere Pro CC 和 DaVinci Resolve 这 ...

  9. Final Cut pro快捷键大全

    Fianl Cut Pro 快捷键大全 系统 ⌘, -------------------偏好设置 ⌥⌘K ---------------自定义- ⌘H ------------------隐藏Fin ...

最新文章

  1. hdu 5273 Dylans loves sequence 逆序数简单递推
  2. cocos2dx 2.2.5 hitWidget-onTouchEnded(pTouch, pEvent); 异常
  3. Spring+SpringMVC +MyBatis整合配置文件案例66666
  4. easyui树形菜单生成算法,及在关系型数据库中的存储方式(非递归,高效算法)
  5. laravel框架中文手册_node.js 后端框架star 排名 2020年11月更新,fastify 超 egg
  6. linux info文件夹,详解Linux系统中查询文档的man和info命令
  7. 该!这个电视频道违规播出非法集资广告 被停播30天
  8. AMF序列化为对象和AMF序列化为二进制字节流
  9. python中str如何使用_python中str函数的使用方法
  10. python求一组数的最大值和平均值_在python中找到一列数据的最小最大值和平均值...
  11. 基于RDP瘦客户机协议的简要说明
  12. mongodb详细优化策略方案
  13. 松本行弘:Ruby之父
  14. Java通过选择城市来计算运费(基础程序)
  15. 电力英语计算机C级多少分,中级工程师英语加权分多少
  16. Illustrator插件开发-AI插件-aip格式-第一章 第一小节 概述
  17. wordpress 背景_如何在WordPress中添加全屏背景图片
  18. 厕所地图,玩出新花样!
  19. 认识计算机键盘ppt教案,认识计算机键盘.ppt
  20. 内网穿透保姆级教程——内网穿透建立个人网站、远程控制

热门文章

  1. Java程序员开发常用的工具
  2. Unity 游戏2048:制作总结
  3. 英语学渣如何成功逆袭?聊聊我获得海外工作的真实经历
  4. 特斯拉 引入安全领域的思考 自动驾驶
  5. 非科班零基础转行学计算机的分享
  6. Genesys GIM部署
  7. 浅析AAFD-DU多回路故障电弧探测器保护某高校线路
  8. 伪造html页面,跨站点请求伪造漏洞验证方法
  9. openFOAM代码阅读——基础代码中的wchar
  10. MySQL入门指南1(进入命令行,数据库,数据表操作)