atemOSC 是一个网络代理,监听遵循OSC 协议的命令并在 Blackmagic ATEM 视频切换台上执行这些命令。

设置和使用

启动应用程序后,输入切换器的IP地址和要监听的本地端口(默认3333),然后向运行atemOSC的计算机的IP地址发送OSC命令该端口。如果您设置了传出 IP 地址和端口,则 atemOSC 将向您指定的 IP 地址和端口发送状态更新和反馈 OSC 消息。

如果您从运行 atemOSC 的同一台计算机上的排队软件或翻译软件发送 atemOSC 消息,请确保将消息发送到127.0.0.1atemOSC 正在侦听的端口上的 (localhost)。

如果您从另一台设备发送 atemOSC 消息,您需要将其发送到在 atemOSC 正在侦听的端口上运行 atemOSC 的计算机的 IP 地址。您可以通过转到System Preferences>Networkifconfig在终端窗口中运行来查找 macOS 计算机的 IP 地址。

如果您想从 AppleScript 或终端命令发送 OSC,您可以下载并使用sendosc命令。有关使用 AppleScript 和 sendOSC 的示例,请参阅此存储库中的actionscript 示例。SendOSC 还支持将 AtemOSC 与ControllerMate和X-keys 一起使用。

如果您想使用 MIDI 板或设备控制切换台,请考虑将此软件与OSCulator或MidiPipe配对。

OSC API

将 atemOSC 连接到切换台后,可以通过转到“OSC 地址”选项卡获取切换台可用的 OSC 地址的完整列表。下面的列表只是对通用切换器的地址外观的概述。

所有地址必须以/atem/. atemOSC 将忽略它收到的所有地址不以 开头的 OSC 命令/atem/

多切换器支持

如果您只想连接到单个 ATEM 切换台,请将昵称字段留空并照常使用下面的地址。默认情况下,所有没有昵称的命令都将发送到第一个没有昵称的切换器。

如果您将多个切换台连接到 atemOSC,您将需要为每个切换台提供一个昵称,并在地址中使用该昵称来指定将命令发送到哪个切换台。如果给切换台添加昵称,必须在地址中发送昵称,所有反馈消息都会在地址中包含昵称。

例如,/atem/my-switcher-1/transition/auto将在昵称为的切换器上触发自动转换my-switcher-1

节目和预览选择

默认情况下,命令将发送到第一个混音效果块 (M/E)。要在其他混音效果块上发送命令,请使用地址:/atem/me/$i/program <number>,其中$i是 1、2、3 或 4

  • Black /atem/program 0
  • Cam 1 /atem/program 1
  • Cam 2 /atem/program 2
  • Cam 3 /atem/program 3
  • Cam 4 /atem/program 4
  • Cam 5 /atem/program 5
  • Cam 6 /atem/program 6
  • 等等……
  • Color Bars /atem/program 1000
  • Color 1 /atem/program 2001
  • Color 2 /atem/program 2002
  • Media 1 /atem/program 3010
  • Media 2 /atem/program 3020
  • Key 1 Mask /atem/program 4010
  • DSK 1 Mask/atem/program 5010
  • DSK 2 Mask/atem/program 5020
  • Clean Feed 1 /atem/program 7001
  • Clean Feed 2 /atem/program 7002
  • Auxiliary 1 /atem/program 8001
  • 等等……

/atem/preview $i可以使用预览选择。

还支持在地址中发送输入而不是作为值(例如/atem/program/5

反馈:为所有值启用

注意:实际数字因设备而异,请务必查看应用内地址菜单

注意:您可以通过发送/atem/send-status命令(稍后详细说明)获取每个输入的名称,这将返回每个输入的短名称/atem/input/$i/short-name和长名称/atem/input/$i/long-name。初始提取后,您还将在 ATEM Software Control 中更改短名称或长名称时收到更新。

过渡控制

默认情况下,命令将发送到第一个混音效果块 (M/E)。要在其他混音效果块上发送命令,请使用地址:/atem/me/$i/transition/...,其中$i是 1、2、3 或 4

  • T-bar /atem/transition/bar <0-1>
  • Cut /atem/transition/cut
  • Auto /atem/transition/auto
  • Fade to Black Toggle /atem/transition/ftb
  • Preview Transition /atem/transition/preview <true|false>

设置自动过渡的过渡类型n:

  • Mix /atem/transition/type mix
  • Dip /atem/transition/type dip
  • Wipe /atem/transition/type wipe
  • Stinger /atem/transition/type sting
  • DVE /atem/transition/type dve
  • Also supports sending the type in the address instead of as a string value (e.g. /atem/transition/type/dve)

设置自动转换速率:

  • Currently selected type /atem/transition/rate <float>
  • Mix /atem/transition/mix/rate <float>
  • Dip /atem/transition/dip/rate <float>
  • Wipe /atem/transition/wipe/rate <float>
  • DVE /atem/transition/dve/rate <float>

反馈:已启用 /atem/transition/bar

辅助源选择

  • 将 Aux $i 源设置为 $x /atem/aux/$i $x
    • 其中$x是有效节目源的整数值,可以是 1-6,具体取决于 ATEM 切换台的功能。检查帮助菜单中的正确值。
    • 例如/atem/aux/1 1将 Aux 1 输出设置为源 1(摄像机 1)

反馈:已启用

上游键控器

默认情况下,命令将发送到第一个混音效果块 (M/E)。要在其他混音效果块上发送命令,请使用地址:/atem/me/$i/usk/...,其中$i是 1、2、3 或 4

  • 设置领带 BKGD /atem/usk/0/tie <true|false>
    • 发送值 1 以启用绑定,发送 0 以禁用
  • 切换领带 BKGD /atem/usk/0/tie/toggle
  • 设置 On-Air Upstream Keyer $i /atem/usk/$i/on-air <true|false>
    • 发送一个 true 值来切断 USK 的直播,发送一个 false 的值来切断它的播出
  • Cut Toggle On-Air Upstream Keyer $i /atem/usk/$i/on-air/toggle
  • Set Tie Upstream Keyer $i /atem/usk/$i/tie <true|false>
    • 发送 true 值以启用绑定,发送 false 值以禁用
  • Toggle Tie Upstream Keyer $i /atem/usk/$i/tie/toggle
  • 为下一个场景设置上游键控器 $i /atem/usk/$i/tie/set-next <true|false>
    • 发送布尔值 true 以在下一次转换后显示 USK,如果您不想在下一次转换后显示 USK,则发送 false
    • 例如,如果 USK 1 正在播出,/atem/usk/1/tie/set-next true将解开 USK 1 使其保持开启状态,同时/atem/usk/1/tie/set-next false将绑定 USK 1 使其在下一次转换后停止播出。
  • 为上游键控器 $i 设置键类型 /atem/usk/$i/type <luma|chroma|pattern|dve>
    • 还支持在地址中发送类型而不是作为字符串值(例如/atem/usk/$i/type/luma

USK 来源

  • 为上游键控器 $i 设置填充源 /atem/usk/$i/source/fill <int>
    • Int 值应该是要设置为源的输入的 ID(来自应用内帮助菜单,在 Sources 部分下)
  • 为上游键控器 $i 设置键(剪切)源 /atem/usk/$i/source/cut <int>
    • Int 值应该是要设置为源的输入的 ID(来自应用内帮助菜单,在 Sources 部分下)

USK 亮度参数

  • 为上游键控器 $i 设置剪辑亮度参数 /atem/usk/$i/luma/clip <float>
    • 浮点值应介于 0.0(0%)和 1.0(100%)之间
  • 为上游键控器 $i 设置增益亮度参数 /atem/usk/$i/luma/gain <float>
    • 浮点值应介于 0.0(0%)和 1.0(100%)之间
  • 为上游键控器 $i 设置预乘亮度参数 /atem/usk/$i/luma/pre-multiplied <bool>
  • 为上游键控器 $i 设置逆亮度参数 /atem/usk/$i/luma/inverse <bool>

USK 色度参数

  • 为上游抠像器 $i 设置 Hue Chroma 参数 /atem/usk/$i/chroma/hue <float>
    • 浮点值应介于 0.0 和 359.9 之间
  • 为上游键控器 $i 设置增益色度参数 /atem/usk/$i/chroma/gain <float>
    • 浮点值应介于 0.0(0%)和 1.0(100%)之间
  • 为上游键控器 $i 设置 Y 抑制色度参数 /atem/usk/$i/chroma/y-suppress <float>
    • 浮点值应介于 0.0(0%)和 1.0(100%)之间
  • 为上游键控器 $i 设置提升色度参数 /atem/usk/$i/chroma/lift <float>
    • 浮点值应介于 0.0(0%)和 1.0(100%)之间
  • 为上游键控器 $i 设置“窄色度键范围”参数 /atem/usk/$i/chroma/narrow <bool>

USK DVE 参数

  • 为上游键控器 $i 设置启用 DVE 边界 /atem/usk/$i/dve/enabled <true|false>
  • 支持其它的值是:border-width-outerborder-width-innerborder-softness-outerborder-softness-innerborder-opacityborder-hueborder-saturation,和border-luma

哪里$i可以是 1、2、3 或 4,具体取决于 ATEM 切换台的功能

反馈:为“/atem/usk/$i/on-air”、“/atem/usk/$i/tie”、“/atem/usk/$i/source/ ”、“/atem/usk/$”启用i/luma/ ‘ 和 ‘/atem/usk/$i/chroma/*’

下游键控器

  • 设置 On-Air Downstreamkeyer $i /atem/dsk/$i/on-air <true|false>
    • 发送一个 true 值来切断 DSK 直播,发送一个 false 值来切断它
  • Auto Toggle On-Air Downstreamkeyer $i /atem/dsk/$i/on-air/auto
  • Cut Toggle On-Air Downstreamkeyer $i /atem/dsk/$i/on-air/toggle
  • Set Tie Downstreamkeyer $i /atem/dsk/$i/tie <true|false>
    • 发送 true 值以启用绑定,发送 false 值以禁用
  • Toggle Tie Downstreamkeyer $i /atem/dsk/$i/tie/toggle
  • 为下一个场景设置 Downstreamkeyer $i /atem/dsk/$i/tie/set-next <true|false>
    • 发送值 true 以在下一次转换后显示 DSK,如果您不想在下一次转换后显示 DSK,则发送值
    • 例如,如果 DSK1 正在播出,/atem/dsk/1/tie/set-next true将解开 DSK1 使其保持开启状态,同时/atem/dsk/1/tie/set-next false将绑定 DSK1 使其在下一次转换后停止播出。

DSK 源

  • 为 Downstreamkeyer $i 设置填充源 /atem/dsk/$i/source/fill <int>
    • Int 值应该是要设置为源的输入的 ID(来自应用内帮助菜单,在 Sources 部分下)
  • 为 Downstreamkeyer $i 设置键(剪切)源 /atem/dsk/$i/source/cut <int>
    • Int 值应该是要设置为源的输入的 ID(来自应用内帮助菜单,在 Sources 部分下)

DSK参数

  • 为 Downstreamkeyer $i 设置剪辑参数 /atem/dsk/$i/clip <float>
    • 浮点值应介于 0.0(0%)和 1.0(100%)之间
  • 为 Downstreamkeyer $i 设置增益参数 /atem/dsk/$i/gain <float>
    • 浮点值应介于 0.0(0%)和 1.0(100%)之间
  • 为 Downstreamkeyer $i 设置预乘参数 /atem/dsk/$i/pre-multiplied <true|false>
  • 为 Downstreamkeyer $i 设置反转参数 /atem/dsk/$i/inverse <true|false>
  • 为 Downstreamkeyer $i 设置速率参数 /atem/dsk/$i/rate <int>
    • Int 值是帧数,所以 30 是 1 秒,60 是 2 秒(给定 30 fps 基值)

哪里$i可以是 1、2、3 或 4,具体取决于 ATEM 切换台的功能

反馈:为“/atem/dsk/$i/on-air”和“/atem/dsk/$i/tie”启用

声音的

支持标准和 Fairlight 混音器。

  • 更改音频输入 $i 的增益 /atem/audio/input/$i/gain $x
    • $x以分贝 (dB) 为单位的增益在哪里,范围从-606
    • 例如 /atem/audio/input/2/gain -30.0
    • 对于双单声道模式下的 Fairlight 音频输入,将设置左右两侧的增益。要单独控制左右声道,请使用地址/atem/audio/input/$i/left/gain/atem/audio/input/$i/right/gain
  • 更改音频输入 $i 的平衡 /atem/audio/input/$i/balance $x
    • $x被平衡,-1.0全留给1.0了充分的权利
    • 例如 /atem/audio/input/2/balance 0.4
    • 对于双单声道模式下的 Fairlight 音频输入,将设置左右平衡。要单独控制左右声道,请使用地址/atem/audio/input/$i/left/balance/atem/audio/input/$i/right/balance
  • 更改音频输入 $i 的混合选项 /atem/audio/input/$i/mix <string>
    • <string>“开”、“关”或“afv”在哪里(音频跟随视频)
    • 例如 /atem/audio/input/2/mix 'afv'
    • 还支持在地址中发送混合选项(例如/atem/audio/input/$i/mix/afv
    • 对于双单声道模式下的 Fairlight 音频输入,将为左右设置混合选项。要单独控制左右声道,请使用地址/atem/audio/input/$i/left/mix/atem/audio/input/$i/right/mix
  • 更改音频输出增益(混合) /atem/audio/output/gain $x
    • $x以分贝 (dB) 为单位的增益在哪里,范围从-606
    • 例如 /atem/audio/output/gain -30.0
  • 更改音频输出的平衡 /atem/audio/output/balance $x
    • $x被平衡,-1.0全留给1.0了充分的权利
    • 例如 /atem/audio/output/balance 0.4
    • Fairlight 调音台不支持

反馈:为所有值启用

额外的 TouchOSC 反馈 – 每次混合更改时,都会发送 3 条消息:

  • /atem/audio/input/$i/mix/afv 如果当前音频模式为 AFV,则浮点值为 1.0,否则为 0.0
  • /atem/audio/input/$i/mix/on 如果当前音频模式为 ON,则浮点值为 1.0,否则为 0.0
  • /atem/audio/input/$i/mix/off 如果当前音频模式关闭,则浮点值为 1.0,否则为 0.0

媒体播放器

  • 将媒体播放器 $i 源设置为 Clip $x /atem/mplayer/$i/clip $x
    • 哪里$i可以是 1 或 2,也$x可以是 1 或 2,具体取决于 ATEM 切换台的功能
    • 例如 /atem/mplayer/2/clip 1
  • 将媒体播放器 $i 源设置为 Still $x /atem/mplayer/$i/still $x
    • 哪里$i可以是 1 或 2,也$x可以是 1-20,具体取决于 ATEM 切换台的功能
    • 例如 /atem/mplayer/1/still 5

反馈:无

SuperSource(如果可用)

  • Toggle SuperSource Box $i 已启用 /atem/supersource/$i/enabled <true|false>
    • 发送值 1 以启用,发送值 0 以禁用
  • 设置 SuperSource Box $i source 输入 $x /atem/supersource/$i/source $x
    • 哪里$x是有效的程序源。检查帮助菜单中的正确值。
  • 其他选项可用。查看应用程序中的帮助菜单以获取完整列表。

反馈:无

  • 宏应记录在 ATEM Control Panel 软件中。
  • 宏以 0 索引数组的形式存储在 ATEM 中
    • 这意味着,要访问的第一记录的宏,你应该使用一个索引$i0,访问第二录制的宏,你应该使用的索引1等。
  • 获取最大宏数: /atem/macros/max-number
    • 返回intATEM 支持的最大宏数
    • 应通过以下索引使用对这些宏的访问 n-1
  • 停止当前活动的宏(如果有): /atem/macros/stop
  • 获取宏的名称: /atem/macros/$i/name
    • 返回string带有名称的 a,如果宏无效,则返回””
  • 获取宏的描述: /atem/macros/$i/description
    • 返回string带有描述的 a,如果宏无效,则返回””
  • 获取索引 $i 处的宏是否有效: /atem/macros/$i/is-valid
    • 返回一个intof0|1以指示请求的宏是否有效
  • 在索引 $i 处运行宏: /atem/macros/$i/run
    • 返回一个intof0|1以指示是否执行了请求的宏。0如果宏无效或不存在,将返回A

反馈:已启用/atem/macros/max-number/atem/macros/$i/name/atem/macros/$i/description,和/atem/macros/$i/is-valid。也可按请求使用(您可以发送命令以获取返回消息中的值)

超级甲板

  • 在 HyperDeck $i 上选择剪辑 /atem/hyperdeck/$i/clip <int>
    • 例如 /atem/hyperdeck/1/clip 5
  • 在 HyperDeck $i 上播放选定的剪辑 /atem/hyperdeck/$i/play
  • 在 HyperDeck $i 上录制新剪辑 /atem/hyperdeck/$i/record
  • 在 HyperDeck $i 上停止播放/录制 /atem/hyperdeck/$i/stop
  • HyperDeck $i 上的穿梭夹 /atem/hyperdeck/$i/shuttle $x
    • 其中$x是指定开始播放速度的整数值,以百分比表示
    • 例如/atem/hyperdeck/1/shuttle 200= 2 倍速度
    • 例如/atem/hyperdeck/1/shuttle 50= 1/2 速度
    • 例如/atem/hyperdeck/1/shuttle 0= 停止
  • HyperDeck $i 上的 Jog Clip /atem/hyperdeck/$i/jog $x
    • 其中$x是指定在所选剪辑中向前或向后跳转的帧数的整数值
  • 跳转到 HyperDeck $i 上的剪辑时间 $x /atem/hyperdeck/$i/clip-time $x
    • $x‘hh:mm:ss’ 格式的字符串在哪里(h = 小时,m = 分钟,s = 秒)
    • 例如/atem/hyperdeck/1/clip-time 00:05:00= 跳到剪辑 5 分钟
  • 跳转到 HyperDeck $i 上的时间线时间 $x /atem/hyperdeck/$i/timeline-time $x
  • 打开/关闭 HyperDeck $i 上的单剪辑播放模式 /atem/hyperdeck/$i/single-clip <true|false>
  • 在 HyperDeck $i 上打开/关闭循环播放模式 /atem/hyperdeck/$i/loop <true|false>

反馈:已启用clipclip-timetimeline-timestatesingle-clip,和loop。HyperDeck 的状态在 处以字符串值的形式提供/atem/hyperdeck/$i/state,并在状态改变时自动发送出去。国家将之一playrecordshuttleidle,或unknown

记录

  • 开始录制到外部媒体 /atem/recording/start
  • 停止录制到外部媒体 /atem/recording/stop
  • 切换用于录制的外部媒体磁盘 /atem/recording/switch-disk
  • 更改录音文件名 /atem/recording/filename <string>

反馈:发送到地址的录音状态/atem/recording/state,将包含一个字符串,它是idle|之一。recording|stopping

其他

  • 请求所有可用的反馈 /atem/send-status
    • 这将查询切换台并发回节目/预览、转换控制、键控器和宏的状态
    • atemOSC/atem/led/green的浮点值为 1.0(如果连接)和 0.0(如果断开),以及/atem/led/red反浮点值。led每当连接状态发生变化时,也会发送这些消息。
  • 仅请求节目/预览/酒吧状态 /atem/me/$i/send-status
    • 其中$i是指定 M/E 以获取状态的整数值
    • 这将查询切换器并仅发送回节目/预览、条形图和预览的状态
  • 这可以在新的 OSC 客户端设备联机时使用,以便它获取系统的当前状态

类型转换

为方便起见,atemOSC 会将某些类型转换为某些端点的正确类型

  • 如果将 0 的 int 或 float 值传递给布尔方法,则 0 将被解释为 false
  • 如果将 int 或 float 值 1 传递给布尔方法,则 1 将被解释为 true
  • 如果您将 int 值传递给需要浮点数的端点,它将被正确转换(反之亦然)

TouchOSC 支持

由于 TouchOSC 客户端的功能有限,atemOSC 支持另一种传递值的形式。对于上面列出的任何需要 string 或 int 值的方法,您可以将 string 或 int 作为地址的一部分而不是作为值传递。例如,您可以发送/atem/transition/type/wipe代替/atem/transition/type wipe,或发送/atem/usk/1/source/fill/3代替/atem/usk/1/source/fill 3。此外,使用这些替代地址之一和浮点值发送的任何命令都0.0将被忽略,因为这表示按钮释放并通常会导致问题。如果您想在释放按钮而不是按下按钮时触发更改,只需翻转 TouchOSC 编辑器中的值即可。

发表回复

后才能评论