自定义层API

目录

议定书1.2版

简介

mimoLive使用苹果的Quartz Composer技术和它的文件来做层。因为mimoLive需要告诉Quartz Composer文件一些环境参数,以及从他们那里读取结果,我们设计了一个协议,你必须遵循,以便利用mimoLive提供的所有功能。在下面,你可以找到关于这个协议的所有技术信息。

如果你想学习如何用Quartz Composer创建自定义层,请阅读 "为mimoLive创建客户层":en:pro:custom_layer:create_custom_layers。

财产

您可以在 Quartz Composer 中编辑协议,方法是选择 EditorEdit information (⌥⌘I)

命名需要类型样本价值
类别字符串
版权字符串© 2016 MySoftwareCompany
描述字符串播放一个全屏输入
名称字符串全屏播放器
已删除 tv_Categories字符串背景幕布,全屏
tv_Debug布尔型
tv_FileData_ 输入名称-数据(导入XML文件)
tv_FileName_ 输入名称-字符串排名.xml
tv_HelpURL字符串
tv_HiddenInputKeys阵列的字符串
tv_InputLabel_ 输入名称-字符串视频输入
tv_LayerIdentifier字符串com.example.layer.mylayer
tv_LayerVersion数字(实数)1.01
tv_LayerPreview数据(导入PNG文件)
tv_LayerProtocolVersion数字(实数)1
tv_SortKey字符串
tv_StepSize_ 输入名称-数字(实数)0.1
已删除 tv_Tagline字符串播放一个全屏输入
tv_UseAudioFromSource字符串tvIn_VideoSourceA
tv_UnitLabel_ 输入名称-字符串

类别

类别通常由 Quartz composer 设置,mimoLive 图层不需要。有关 mimoLive 类别,请参阅 tv_Categories

版权通常是由Quartz作曲家设置的,对于mimoLive层来说不需要。

描述

Quartz Composer标准 - 保持3行左右的长度,以便在预览中很好地适应。

名称

这个名字会在mimoLive里面显示。使用一个简短和独特的名字来快速找到你的层。

协议

这个数组通常由Quartz composer设置,对于mimoLive层不需要。

tv_Categories

删除</strong

这些类别是用来分组和过滤图层的。目前,它们被忽略了,但它可能被再次激活。使用以下预定义类别的逗号分隔的列表或定义你自己的类别。

- 音频"- 可使用音频源的图层
- "叠加"- 可叠加数据或图像的图层:Lower Thirds、标题、徽标......
-"全屏" - 至少通过默认设置提供全屏显示的图层,例如动画、单个视频、天气图
-"背景" - 可作为其他内容背景的图层。
- "文本" - 提供某种文本显示的图层,例如:片头、Lower Thirds、标题
- "数据" - 显示数据的图层,例如:股票行情、篮球比分等
- "图像" - 提供使用静态图像输入的显示方式的图层
- "多视频" - 结合至少两个来源的图层,可以是在下面的图层之外添加至少一个来源,也可以是使用两个或更多来源。
- "3D" - 为元素提供某种 3D 定位的图层,如 Presenter
- "Segment" - 为单独的片段提供定时动画的图层,如 Digital Upgrade Beitrag
- "Effect" - 提供某些叠加效果的图层,如 Magnifier、Spotlight、Zoom...
- "Demo" - 主要用于演示功能而非提供一般有用功能的图层,如 Weather Map(只显示天气图)
- "Demo"(演示) - 主要用于演示功能而非提供一般有用功能的图层,如 Weather Map(只显示天气图)
- "Demo"(演示) - 主要用于演示功能而非提供一般有用功能的图层,如 Weather Map。
- "Consumer" - 使用合成图层图像的图层,如视频切换器、缩放、演示器
- "Generator" - 提供某种生成输出的图层,如动画
- "Debug" - 用于调试的图层,在最终产品中不可见。

tv_Debug

告诉应用程序,这个组合只能在调试环境下使用。

tv_FileData_

在创建图层时为文件输入创建并写入文档的数据 Blob。这适用于在 _TypeFilePath 中提供的文本文件或用于图像输入的 .mov 文件。请参见 tv_FileName_

tv_FileName_

tv_FileData_ 对应的文件名。如果存在 tv_FileData_* 输入,则为必填项。

tv_HelpURL

这个字符串可以存储一个有关于如何使用这个层的有用信息的URL。mimoLive会在每个层的信息弹出窗口中呈现一个"?"按钮。如果用户点击这个按钮,URL会被系统的默认互联网浏览器打开。

tv_HiddenInputKeys

在这个数组中,组合持有应该从用户界面上隐藏的输入键。

tv_InputLabel_

可用于为参数视图中的给定输入键提供替代名称标签。也可以使用空字符串表示无标签。其工作原理与 tv_hide_ouput 类似,例如,协议输入名称必须完整(如 "tv_InputLabel_tvIn_VideoSourceAImage")。

tv_LayerIdentifier

为了识别,Boinx运送的成分和分类的不同版本。必须是唯一的。建议使用反向注解的域名。例如:com.mysoftware.layer.videofullscreen

tv_LayerVersion

用于匹配文档/应用程序中的不同版本的组合。主要版本号表示不兼容,与其他主要版本不匹配(例如,如果输入键的名称改变,你需要增加主要版本)。小版本号必须是向上兼容的,并且每次迭代都可以增加0.001。例如,必须确保从1.0层为1.013层加载设置,必须看起来完全一样,这意味着新的键如果存在,需要有一个默认值,不显示它们或等同于前一个版本的外观。

tv_LayerPreview

用于在图层列表中预览一个图层的图像数据。这可以提供一个比默认的快速预览更好的体验。预览图像应该是256×256像素。

tv_LayerProtocolVersion

为了将来向后兼容,如果mimoLive大幅改变协议。目前必须设置为1。

tv_SortKey

定义了mimoLive中的层的排序。所以你可以根据使用的概率对过滤器进行排序。目前,使用2个大写字母的方案,例如:"BM"、"DE"、"DM "等。注意:目前这个功能还没有使用,但将来会使用。

tv_StepSize_

可以用来为点动轮提供一个自定义的StepSize--然后一个像素的鼠标移动对应于这个变化量(也是+/-点击)。

tv_Tagline

DEPRECATED
将在图层存储库的信息弹出窗口中显示的一行字符串。

tv_UseAudioFromSource

mimoLive目前只能在用户界面上显示一个音频控制。这个属性告诉它什么输入键是要控制的。填入完整的对应输入键。(为了向后兼容,这个字段也接受 "A"、"B "或 "C",它们被翻译成tvIn_VideoSourceAImage、tvIn_VideoSourceBImage 或 tvIn_VideoSourceCImage。如果不提供 mimoLive 假设没有音频将被用于此层。

tv_UnitLabel_

可用于提供一个单位标签,例如参数视图中给定的输入键的 "pt"。尽量保持简短。有助于传达输入的含义。Boinx单位输入将自动获得 "px "标签。

输入

命名类型
tvIn_AccountTwitterConsumerKey字符串
tvIn_AccountTwitterConsumerSecret字符串
tvIn_AccountTwitterTokenKey字符串
tvIn_AccountTwitterTokenSecret字符串
tvIn_CompositedLayersImage图片
tvIn_FrameCount索引
tvIn_FrameDuration数量
tvIn_CompositedLayersImage图片
tvIn_In TransitionDirection索引 过渡方向 方向
tvIn_In TransitionDuration数量
tvIn_InTransitionType索引 过渡类型 类型
tvIn_KeyboardModifierAlt布尔型
tvIn_KeyboardModifierCommand布尔型
tvIn_KeyboardModifierControl布尔型
tvIn_KeyboardModifierFunction布尔型
tvIn_KeyboardModifierShift布尔型
tvIn_Obscured布尔型
电视直播布尔型
tvIn_OSVersion字符串
tvIn_Out TransitionDirection索引 过渡方向 方向
tvIn_Out TransitionDuration数量
tvIn_OutTransitionType索引 过渡类型 类型
tvIn_PreviewMode布尔型
tvIn_Reset布尔型(信号)
tvIn_RuntimeIdentifier字符串
tvIn_Shared_任何价值类型
tvIn_ShowDuration数量
tvIn_ShowTimer数量
tvIn_Switch布尔型(信号)
tvIn_TransitionDirection索引 过渡方向 方向
tvIn_TransitionDuration数量
tvIn_TransitionType索引 过渡类型 类型
tvIn_UISnapColor颜色
tvIn_VideoSourceA B C D图片

tvIn_AccountTwitterConsumerKey

tvIn_AccountTwitterConsumerSecret

tvIn_AccountTwitterTokenKey

tvIn_AccountTwitterTokenSecret

这四个AccountTwitter输入被用来从mimoLive Twitter账户偏好中输入登录数据。这些值与JSON补丁和OAuth补丁一起使用,以便从Twitter服务中读取数据。

tvIn_CompositedLayersImage

如果这个输入存在于一个构图中,并且有来自下面各层的内容,下面这些层的绘制结果将被送入这个输入。

tvIn_FrameCount

这个输入将得到启动mimoLive后的总渲染帧数。如果帧数因为渲染负荷太高而被放弃,帧数会跳过那些放弃的帧数。

tvIn_FrameDuration

帧的持续时间是指每次渲染之间的时间间隔,单位是秒。

tvIn_In TransitionDirection

一个将执行过渡方向的方向。

tvIn_In TransitionDuration

将执行 tvIn_InTransitionType 的秒数。

tvIn_InTransitionType

如果对一个让用户选择正在进行的过渡类型的图层有用。另外,见过渡类型类型。

tvIn_KeyboardModifierAlt

tvIn_KeyboardModifierCommand

tvIn_KeyboardModifierControl

tvIn_KeyboardModifierFunction

tvIn_KeyboardModifierShift

当用户在键盘上按下相应的修改键时,那些布尔输入字段将被设置为真。这个功能主要用于直接操作功能。请参考Apple Human用户指南行,看看在用户界面中哪个功能应该使用哪个修改键。

tvIn_Obscured

如果该层不需要渲染任何输出,这个输入被设置为 "true",因为上面的层无论如何都会通过绘制全屏来掩盖它。这可以用来避免那些不可见但被设置为实时的图层的大量绘制。(例如,在Twitter层的情况下,即使被上面的另一个层遮挡,该层仍然被调用,并有机会保持与Twitter服务的互联网连接)。

电视直播

这个输入开始时的值是 "真"。一旦输入值为 "false",构图就应该进行任何输出转换,然后在转换完成后设置其Done输出。然后,该组合将被停用。可能发生的情况是,应用程序在没有等待 "完成 "标志的情况下关闭了一个层。

tvIn_OSVersion

这个字符串输入将被设置为当前的OS X版本(例如,"版本10.11.2(Build 265341)")。

tvIn_Out TransitionDirection

将执行 tvIn_OutTransitionType 的值,单位为秒。另请参阅 "过渡方向"。

tvIn_Out TransitionDuration

将执行 tvIn_OutTransitionType 的值,单位为秒。

tvIn_OutTransitionType

如果对一个让用户选择正在进行的过渡类型的图层有用。另外,见过渡类型类型。

tvIn_PreviewMode

可以用来告诉构图,它处于预览模式。

tvIn_Reset

用于重置合成逻辑。当图层从关闭状态切换到实时状态,或在不同设置之间切换,且没有 tvIn_Switch 输入可用时,该标记将被设置。

tvIn_RuntimeIdentifier

帮助图层在预览和实时实例之间沟通。由mimoLive动态设置。

tvIn_Shared_

请参阅 层间共享值 层间的值。

tvIn_ShowDuration

如果用户在 "显示设置 "中填写了显示持续时间,这个输入将有以秒为单位的值。

tvIn_ShowTimer

显示计时器将反映mimoLive文件的显示计时器,单位是秒。

tvIn_Switch

当一个图层从一个设置切换到另一个设置而没有禁用该图层时,将设置此标志,而不是 tvIn_Reset]]。如果此输入不存在,则在图层从一个设置切换到另一个设置而未禁用该图层时,[[#tvIn_Reset]。如果此输入不存在,则设置 [[#tvIn_Reset 以保持与旧版层的兼容性。

tvIn_TransitionDirection

将执行 Transition Direction 的方向。

tvIn_TransitionDuration

将执行 tvIn_InTransitionType 的值,单位为秒。

tvIn_TransitionType

如果对一个让用户选择正在进行的过渡类型的图层有用。另外,见过渡类型类型。

tvIn_UISnapColor

为了保持UI的一致性,mimoLive提供了一个 "捕捉颜色",当UI被捕捉到某个值时,可以在预览中画出指引(例如,在自定义显示模式下旋转Placer层时按住 "shift "键,当旋转角度捕捉到0、45或90度时,指引将以该颜色绘制)。

tvIn_VideoSource

一个层最多可以有8个动态视频源输入:"A"、"B"、"C "等等。如果用户将视频源从源存储库拖到图层堆栈中,它们将由一个下降区表示。//注意:为了向后兼容,这些输入上的扩展名 "Image "被忽略了。

输入选项

对应的输入键

如果有一个视频输入键,下面的输入键也会相应地被填上信息:

(例如,"tvIn_VideoSourceA"->"tvIn_VideoSourceAName")

钥匙类型描述
音频增益数量TBD
音频水平0数量增益控制后的左声道电平,单位为db
音频级别1数量增益控制后的右声道电平,单位为db
音频电平0Raw数量增益控制前的左声道电平,单位为分贝
音频级别1Raw数量增益控制前的右声道电平,单位为db
音频平移数量TBD
音频音量数量TBD
数据结构源的元数据的字典。目前,实现的键是"index" "duration" "title" "titleFallback" "artist" "album" "year" "fileReferenceIdentifier"
命名字符串相关图像源的名称。可用于在预览中显示其名称或计算图层变体的默认名称。参见 tvOut_SettingName .
剩余时间数量以秒为单位。将被提供给电影源。如果电影源是循环的(或任何其他源),则-1。
帐单状态索引连接源的理货状态,见 理算国家 国家
类型索引的价值 源类型 类型

分组输入

用户界面中提供了分组功能--输入的前缀与此相关。语法类似于 tvGroup_____。请注意,组名后的双下划线 _ _ 是输入名称的分隔符。

为始终隐藏的输入定义了一个特殊组:tvGroup_Hidden_Inputs__ 可以在 debug|Debug Preferences|Debug Preferences 中将 mimoLive 切换到调试模式,让该组可见。一些图层使用这些隐藏字段在 "预览实例 "和 "实时实例 "之间进行通信(例如,视频切换器图层告诉预览实例当前实时视频源)。

动态地隐藏输入

如果 tvOut_hide_ 输出设置为 "true",则每个协议输入都将在用户界面中隐藏。该值可由应用程序观察到,并可动态更改。请注意,您需要使用完整的输入名称,包括 "tvIn"(例如,输入 tvIn_Text_TypeMultiline 时使用输出 tvOut_hide_tvIn_Text_TypeMultiline)。

输出

命名类型
tvOut_Cursor字符串
tvOut_Done布尔型(信号)
tvOut_hide_布尔型
tvOut_Opaque布尔型
tvOut_SettingName字符串
tvOut_Share_任何类型
tvOut_TimeRemaining数量
tvOut_UseCompositedLayersImage布尔型
tvOut_TallyState指南的索引 理算国家 国家
tvSet_要设置的输入类型
tvSetSignal_布尔型
tvSetAudioVolume_数量
tvSetAudioVolumeSignal_布尔型

tvOut_Cursor

当鼠标指针位于预览或程序输出视图上时,该输出将指定鼠标光标的外观。有关有效值,请参阅 Apples NSCursor Class 文档)。mimoLive 提供的其他鼠标指针有 "减号 "和 "加号"。

从苹果的NSCursor常量中删除后缀"_Cursor "或 "Cursor"(例如,使用 "openHand "来获得一个张开手的鼠标指针)。

tvOut_Done

用于告知下一层本层已完成。有关文档,请参阅 tvIn_OnAir

tvOut_hide_

可用于动态隐藏参数视图中的输入值。请参阅 动态隐藏输入值

tvOut_Opaque

用来告诉应用程序,在这个层下面的层不必被绘制。默认为 "false"。这个值被任何包含阿尔法的连接源覆盖。

tvOut_SettingName

作曲可以根据一些输入为一个环境建议一个有用的名字。

tvOut_Share_

请参见 在图层间共享值

tvOut_TimeRemaining

允许应用程序显示一些大的定时器倒计时(例如,离电影结束还有5秒)。目前使用"-1 "表示没有剩余时间的信息,如果是循环播放的电影则使用"-2"。

tvOut_UseCompositedLayersImage

用于优化使用下方图层与过渡等时的性能。mimoLive 会在下一个渲染周期中放入合成图像下方的图层。如果 "tvOut_UseCompositedLayersImage"(tvOut_Use合成图层图像)不存在,mimoLive 就会认为图像下方的图层应该一直被放入。仅用于绘图优化,所有媒体都将滚动。仅在 tvIn_CompositedLayersImage 存在时使用。

tvOut_TallyState

该输出层可以覆盖当前连接到该输入端的信号源的自动理线状态。这对于转场或如果信号源不用于输出,则可以关闭理点状态(例如,视频切换器使用 3 台摄像机,但一次只显示一台,因此需要将未使用信号源的理点状态设置为 "TVTallyStateOff")。请参阅 理线状态,了解理线状态列表。

tvSet_

在mimoLive中,一个层或过滤器可以操纵自己的参数。这主要是为了实现层变体预览中的直接操作功能(例如,如果用户在预览中拖动模拟时钟,该层会告诉mimoLive哪个输入键应该被改变为哪个值。然而,这个功能也被用来将实时数据从程序输出实例转移到预览实例,反之亦然(例如,在视频切换器层,程序输出实例告诉预览实例哪个视频源是当前实时的,预览实例可以告诉程序输出实例用户在屏幕上选择哪个视频源)。

为了利用这个功能,你需要有两个输出,与你要操作的输入字段相对应:在'tvSet_'中,你输出你想设置的新值,在'tvSetSignal_'中,你发出该值有效并被存储的信号。

tvSetSignal_

请参见 tvSet_

tvSetAudioVolume_

这个输出控制其相关音源(或视频源的音频)的音量。有效值是0=无声到1=满。每次要改变音频音量时,作品必须设置相应的 "tvSetAudioVolumeSignal_"。例如,如果该层有一个淡入的过渡,并且希望也能淡入音频,这就很有用。

tvSetAudioVolumeSignal_

请参见 tvSetAudioVolume_

层与层之间共享价值

一个图层可以向图层堆栈中高于自己的其他图层发送数据。这些数据被mimolive通过它的共享密钥保存到下一个渲染周期。如果一个图层被多次使用(或者在不同的图层中使用相同的共享键),数据会被上面的图层覆盖。要设置这个共享数据,请使用 "tvOut_Share_"输出。你可以存储任何QuartzComposer数据类型,但建议使用结构体,因为你只需要一个输出就可以得到多个值。在接收层一侧,你需要一个相应的 "tvIn_Shared_"输入,其数据类型也是如此。请注意,接收层需要在层栈中的发送层之上。

如果你在多个图层中需要相同的数据(例如游戏中的主队和客队对手的名字),那么数值的共享就很有用。

类型定义(又称命名公约)。

钥匙类型描述
*_TypeAudio图片这是一个非常特殊的情况:一个_TypeAudio只能指定包含音频的源(例如电影源、视频源或仅有音频的源)。该层将通过"_TypeAudioAudioLevel0 "和"_TypeAudioAudioLevel1 "输入获得对这个源的控制(在未来),以及左右声道的音频音量值。
*_TypeBoinxX数量以Boinx X坐标输入的数字--例如,-1是第一个像素,1是当前屏幕尺寸的最后一个像素。 将以像素为单位呈现给用户。
*_TypeBoinxY数量以Boinx Y坐标输入的数字--例如,-1是底部像素,1是当前屏幕尺寸的最顶部像素。 将以像素为单位呈现给用户。
*_TypeDirectoryPath字符串导致用户界面中出现 "选择...... "按钮,也许还显示一个路径控件
*_TypeDuration数量以秒为单位的时间 - 将以分:秒为单位显示,并可以获得一个自定义的用户界面
*_TypeFilePath字符串导致用户界面中出现 "选择...... "按钮,也许还显示一个路径控件
*_TypeFontBoinxSize字符串以Boinx Y坐标表示的字体大小(例如,2是全屏高度),见以下说明
*_TypeFontColor颜色常规颜色输入,用于指定文本颜色,见以下说明
*_TypeFontName字符串这将导致出现一个字体选择器,见下面的注释
*_TypeMultiline字符串一个多行文本字段,允许输入返回值
*_TypePassword字符串显示一个密码文本框。重要的是:密码本身是以纯文本形式存储的,在文件中是可读的!
*_TypeSignal布尔型对于单帧脉冲信号,使用脉冲或观察者补丁。

如果_TypeFontName、_TypeFontBoinxSize和_TypeFontColor字段具有相同的基础标签,它们将在图层参数视图中合并为一个字体选择器UI元素。

过滤器模板

这些输入和属性是特定的,如果你正在创建一个Quartz Composition来作为mimoLive的图像过滤器使用。前面的大部分定义也适用于过滤器。

滤波器输入

以下输入字段是Quartz Composer对一个过滤器组成的要求:

命名类型描述
_protocolInput_PreviewModeBool可以用来告诉构图,它处于预览模式中
_protocolInput_X数量始终为0。
_protocolInput_Y数量始终为0。

过滤器属性

以下属性由 mimoLive 定义。 tv_FilterIdentifier 和 tv_FilterVersion 是处理过滤器和其更新路径与较新版本的需要:

命名类型样本价值描述
tv_FilterIdentifier字符串com.boinx.mimoLive.layer.placer为了识别,Boinx运送的成分和分类的不同版本
tv_FilterVersion数字(双数)1用于匹配一个文件/应用程序中的不同版本的成分。主要版本号表示不兼容,不与其他主要版本匹配。次要版本号必须是向上兼容的,并且每次迭代都会递增0.001。例如,必须确保从1.0层加载到1.013层的设置必须看起来完全一样,这意味着如果存在新的键,需要有一个不显示它们的默认值,或者等同于以前版本的外观。
tv_FilterOutputIsOpaqueBOOL决定一个过滤器的输出是否是不透明的。默认为NO

枚举

Quartz Composer的索引类型允许命名索引。它们可以在Quartz Composer编辑器中通过在索引模式下添加一个输入分割器来编辑。

来源类型

来源将是以下数值之一

- 0 - 图像
- 1 - 电影,电影会有剩余时间
- 2 - 相机,也可能是构图

过渡方向

你可以定义你自己的方向。运送的各层使用的是以下数值。

- 无
- 向左
- 向右
- 向上
- 向下

过渡类型

你可以定义你自己的过渡类型。这里有一些有用的例子值。

- 溶解
- 擦拭

理算国家

有几个为视频源定义的Tally状态,将在用户界面和Tally Light配套应用中体现。

- 0 = TVTallyStateOff
- 10 = TVTallyStateInUse
- 20 = TVTallyStatePreview
- 30 = TVTallyStateEffect
- 40 = TVTallyStateProgram

您的反馈

您如何评价您对mimoLive这个功能的体验?

用户手册:最新更新

选择语言