Swift 5.1 Platforms: macOS & Linux

Atem 网络协议实现

用 Swift 实现 BlackMagicDesign 的 ATEM 通讯协议。它构建在 Apple 的网络库 NIO 之上,并实现了协议的两个方面:控制面板端和切换台端。这意味着您不仅可以使用它来控制 Atem 切换台,还可以连接到您的控制面板,而无需切换台。为 Atem 控制面板开启了全新的应用领域。 示例可以在 Atem-Simulator 中找到。

从 1.0.0 版本开始,此软件包使用 Swift 5 和 NIO2。

已测试平台

安装

在开始一个新项目时:通过 SPM 创建一个 Swift 包。

# Shell
> swift package init # --type empty|library|executable|system-module

然后将此库添加到 package description 的依赖项中

.package(url: "https://github.com/Dev1an/Swift-Atem", from: "1.0.0")

并解析这个新的依赖项

# Shell
> swift package resolve

最后在您的代码中导入 Atem 模块

import Atem

您现在可以创建 atem 控制器和切换台了 😎 !

用法

在查看以下示例后,请研究 API 参考 以了解更多详细信息。

控制器

此示例显示如何创建一个连接到 IP 地址为 10.1.0.67 的切换台的控制器,并在每次预览母线更改时打印一条消息。

try Controller(ipAddress: "10.1.0.67") { connection in
  connection.when{ (change: PreviewBusChanged) in
    print(change) // prints: 'Preview bus changed to input(x)'
  }
}

发送消息

要向切换台发送消息,请使用 send(...) 方法,如下所示

controller.send(message: ChangeTransitionPosition(to: 5000))

切换台

以下示例显示了如何模拟 atem 切换台的基本功能。 它会将包含转场以及预览和节目母线更改的传入消息转发给所有连接的控制器。

此代码段也包含在单独的 SPM 目标 "Simulator" (./Sources/Simulator) 中,可以通过在终端中简单地执行 swift run Simulator 来运行它。

let switcher = Switcher { controllers in
  controllers.when { (change: ChangePreviewBus, _) in
    controllers.send(
      PreviewBusChanged(
        to: change.previewBus,
        mixEffect: change.mixEffect
      )
    )
  }
  controllers.when{ (change: ChangeProgramBus, _) in
    controllers.send(
      ProgramBusChanged(
        to: change.programBus,
        mixEffect: change.mixEffect
      )
    )
  }
  controllers.when { (change: ChangeTransitionPosition, _) in
    controllers.send(
      TransitionPositionChanged(
        to: change.position,
        remainingFrames: 250 - UInt8(change.position/40),
        mixEffect: change.mixEffect
      )
    )
  }
  controllers.when { (change: ChangeAuxiliaryOutput, _) in
    controllers.send(
      AuxiliaryOutputChanged(
        source: change.source,
        output: change.output
      )
    )
  }
}