1 | ATEM Specification
|
2 | ========
|
3 | This document is the unofficial specification of control Blackmagic Design(BMD) ATEM Switcher.
|
4 |
|
5 | Introduction
|
6 | --------
|
7 | Blackmagic ATEM Switcher can be controlled by UDP protocol, port 9910.
|
8 |
|
9 | Packet specification
|
10 | --------
|
11 |
|
12 | ### Send packet structure
|
13 | ```
|
14 | 0 1 2 3
|
15 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
|
16 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
17 | | Flags | Packet Length | Session Id |
|
18 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
19 | | Echo Data | ? |
|
20 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
21 | | ? | Packet Id |
|
22 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
23 | ```
|
24 |
|
25 | ### Receive packet structure
|
26 | ```
|
27 | 0 1 2 3
|
28 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
|
29 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
30 | | Flags | Packet Length | Session Id |
|
31 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
32 | | ? |
|
33 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
34 | | ? |
|
35 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
36 | | Commands... |
|
37 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
38 | ```
|
39 |
|
40 | ### Flags
|
41 | ```
|
42 | Flags[0] = Pong
|
43 | Flags[1] =
|
44 | Flags[2] = Connected?
|
45 | Flags[3] = Hello
|
46 | Flags[4] = Ping
|
47 | ```
|
48 |
|
49 | ### Command structure
|
50 | ```
|
51 | 0 1 2 3
|
52 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
|
53 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
54 | | Command Length | Checksum? |
|
55 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
56 | | Command Name |
|
57 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
58 | | Command Data... |
|
59 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
60 | ```
|
61 |
|
62 | ----
|
63 |
|
64 | 文字はヌル文字以降は適当な値が入っていることがある。
|
65 |
|
66 | ### PrgI (Program Input)
|
67 |
|
68 | Packet structure
|
69 | ```
|
70 | 0 1 2 3 4
|
71 | +---+---+---+---+
|
72 | | 0 |18 |Channel|
|
73 | +---+---+---+---+
|
74 | ```
|
75 |
|
76 | Packet log
|
77 | ```
|
78 | PrgI <Buffer 00 00 00 05>
|
79 | ```
|
80 |
|
81 | ### PrvI (Preview Input)
|
82 |
|
83 | Packet structure
|
84 | ```
|
85 | 0 1 2 3 4 5 6 7 8
|
86 | +---+---+---+---+---+---+---+---+
|
87 | | 0 |18 |Channel| 0 |4d |49 |50 |
|
88 | +---+---+---+---+---+---+---+---+
|
89 | ```
|
90 |
|
91 | Packet log
|
92 | ```
|
93 | PrvI <Buffer 00 32 00 02 00 00 00 0a>
|
94 | ```
|
95 |
|
96 | ### InPr (Input Preference?)
|
97 |
|
98 | Packet structure
|
99 | ```
|
100 | 0 1
|
101 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
|
102 | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
|
103 | |Channel| Name |
|
104 | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
|
105 | | Name | Label | InMsk | Input | - | - | - | - |
|
106 | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
|
107 | | - | - | *Input = (0=Bar, 1=SDI, 2=HDMI, 256=None)
|
108 | +---+---+
|
109 | ```
|
110 |
|
111 | Packet log after label
|
112 | ```
|
113 | InPr 0 <Buffer 01 00 01 00 01 f0 12 01 00 dc>
|
114 | InPr 1 <Buffer 00 02 00 02 00 e0 12 01 01 a4>
|
115 | InPr 2 <Buffer 00 02 00 02 00 b4 12 01 01 40>
|
116 | InPr 3 <Buffer 00 03 00 02 00 00 12 01 01 e8>
|
117 | InPr 4 <Buffer 00 03 00 01 00 8c 12 01 01 b8>
|
118 | InPr 5 <Buffer 00 01 00 01 00 b8 12 01 01 80>
|
119 | InPr 6 <Buffer 00 01 00 01 00 3c 12 01 01 84>
|
120 | InPr 1000 <Buffer 00 00 01 00 02 a4 12 01 01 a2>
|
121 | InPr 2001 <Buffer 01 00 01 00 03 c8 02 01 00 dc>
|
122 | InPr 2002 <Buffer 01 00 01 00 03 00 02 01 00 14>
|
123 | InPr 3010 <Buffer 01 00 01 00 04 e8 12 01 00 c8>
|
124 | InPr 3011 <Buffer 01 00 01 00 05 8c 12 01 00 08>
|
125 | InPr 3020 <Buffer 01 00 01 00 04 14 12 01 00 00>
|
126 | InPr 3021 <Buffer 01 00 01 00 05 69 12 01 00 90>
|
127 | InPr 10010 <Buffer 01 00 01 00 80 28 02 00 00 74>
|
128 | InPr 10011 <Buffer 01 00 01 00 80 80 02 00 00 bc>
|
129 | InPr 7001 <Buffer 01 00 01 00 80 00 02 00 00 00>
|
130 | InPr 7002 <Buffer 01 00 01 00 80 6c 02 00 00 90>
|
131 | ```
|
132 |
|
133 | ### TrSS (Transition Style State)
|
134 |
|
135 | Packet structure
|
136 | ```
|
137 | 0 1 2 3 4 5 6 7 8
|
138 | +---+---+---+---+---+---+---+---+
|
139 | | Style | 1 | - | - | - | 0 | 0 |
|
140 | +---+---+---+---+---+---+---+---+
|
141 | ```
|
142 |
|
143 | ### FtbS (Fade to black State)
|
144 | ```
|
145 | # Fade to black
|
146 | # buf0 = ?
|
147 | # 1 = blacking
|
148 | # 2 = working
|
149 | # 3 = frames
|
150 | ```
|
151 |
|
152 | ### AMLv (Audio Monitor Level)
|
153 | If you get audio monitor level, must send `SALN (Send Audio Level Number)` command.
|
154 |
|
155 |
|
156 | ### AMIP (Audio Monitor Input Preference?)
|
157 |
|
158 | Packet structure
|
159 | ```
|
160 | 0 1
|
161 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
|
162 | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
|
163 | |Channel| 0 | 1 |Channel|Channel|Sta| 3 | Gain | Pan | 0 |
|
164 | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
|
165 | | 5 | *Sta = (0=OFF, 1=ON, 2=AFV)
|
166 | +---+
|
167 | ```
|
168 |
|
169 | Send command specification
|
170 | --------
|
171 |
|
172 | ## Input mapping
|
173 | | # | Name |
|
174 | | ----- | ------------ |
|
175 | | 0 | Black |
|
176 | | 1 | Cam1 |
|
177 | | 2 | Cam2 |
|
178 | | 3 | Cam3 |
|
179 | | 4 | Cam4 |
|
180 | | 5 | Cam5 |
|
181 | | 6 | Cam6 |
|
182 | | 1000 | Color Bars |
|
183 | | 2001 | Color 1 |
|
184 | | 2002 | Color 2 |
|
185 | | 3010 | Media 1 |
|
186 | | 3011 | Media 1 Key |
|
187 | | 3020 | Media 2 |
|
188 | | 3021 | Media 2 Key |
|
189 | | 7001 | Clean Feed 1 |
|
190 | | 7002 | Clean Feed 2 |
|
191 | | 10010 | Program |
|
192 | | 10011 | Preview |
|