-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.html
120 lines (89 loc) · 5.66 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
<!-- Blackmagic REST API Tutorial -->
<!-- Home Page -->
<!-- (c) 2024 Dylan Speiser -->
<!-- Licensed under GNU GPL v3 -->
<!DOCTYPE html>
<html>
<head>
<!-- Page Title and Links -->
<title>Blackmagic REST API Tutorials</title>
<!-- Link Stylesheets -->
<link rel="stylesheet" href="resources/prism.css">
<link rel="stylesheet" href="resources/stylesheet.css">
<!-- Page metadata-->
<meta charset="UTF-8">
<meta name="description" content="Tutorial series for Blackmagic Camera Control REST API">
<meta name="author" content="Dylan Speiser">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Favicons -->
<link rel="apple-touch-icon" sizes="180x180" href="resources/favicon/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="resources/favicon/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="resources/favicon/favicon-16x16.png">
</head>
<body class="noto-sans-display">
<!-- Load Scripts -->
<script type="module" src="https://md-block.verou.me/md-block.js"></script>
<script src="resources/prism.js"></script>
<!-- Header Block, same for every page -->
<header>
<h1><a href="index.html">Blackmagic REST API Tutorials</a></h1>
<a href="https://github.com/DylanSpeiser/BM-API-Tutorial">GitHub</a>
</header>
<!-- Next/Previous Page Items -->
<div id="PrevNextBox">
<a href="#" class="disabled">< Previous Page</a>
<a href="1-REST-API-Calls.html">Next Page ></a>
</div>
<!-- Parse page content from markdown -->
<md-block>
# Introduction
<div>
<img src="resources/images/index/Pocket4K.png" width="100vw">
<img src="resources/images/index/Pocket6KP.png" width="100vw">
<img src="resources/images/index/Studio6KP.png" width="100vw">
<img src="resources/images/index/URSAMini.png" width="100vw">
<img src="resources/images/index/PYXIS6K.webp" width="100vw">
</div>
_Welcome!_ I'm glad you could join me in this tutorial series. I noticed a lack of beginner-friendly tutorials for [Blackmagic Design's](https://blackmagicdesign.com) REST API for controlling cameras, HyperDecks, and other BMD products. I'm making these tutorials to help anyone who might be struggling themselves.
These tutorials will serve as a public resource for learning how these APIs work and how to incorporate them into your own workflow/projects. We'll start from the basics and build our way up to a fully custom, functional [Web UI](https://github.com/DylanSpeiser/BM-Camera-Control-WebUI) that can control a camera (or a HyperDeck with minimal tweaking) over the network.
## Official Documentation
Blackmagic hosts the official documentation for the REST API [here](https://documents.blackmagicdesign.com/DeveloperManuals/RESTAPIforBlackmagicCameras.pdf?_v=1696143610000). The first few pages are important, so make sure to read them! This documentation outlines all of the commands and data that can interface with the camera, and is the basis of this tutorial series.
<div><a href="https://documents.blackmagicdesign.com/DeveloperManuals/RESTAPIforBlackmagicCameras.pdf?_v=1696143610000">Click me to go to the official documentation!</a></div>
You can find the code files from these tutorials in the "examples" folder of the [GitHub Repository](https://github.com/DylanSpeiser/BM-API-Tutorial) for this site.
## Requirements
The purpose of implementing the features of these APIs is to control them remotely without needing _any_ extra hardware. We'll implement everything ourselves, in a free and accessible programming language like Python or JavaScript.
Other than a way to write and run scripts in your language of choice, you'll need:
- A Blackmagic device to control (camera, HyperDeck, etc.)
- A network (preferably a private wired one)
- A USB cable (for initial configuration of the device)
---
## Table of Contents
1. [REST API Calls](1-REST-API-Calls.html)
2. [Programming and JSON Data](2-JSON-Data.html)
3. [PUT Requests](3-PUT-Requests.html)
4. [Conducting an Orchestra](4-Conducting-an-Orchestra.html)
5. [Media Management](5-Media-Management.html)
6. [WebSocket Updates](6-WebSockets.html)
7. [Building a WebUI](7-WebUI.html)
---
## About the Author
<div>
<p>Dylan Speiser is a Computer Engineer and cinematographer from New York, NY. Studying at the University of Maryland, Dylan's passion for the technology of storytelling is a main focus of his studies and extracurriculars. He is Vice President of the Maryland Filmmakers club and acts in the Maryland Shakespeare Players' semesterly productions. To learn more about Dylan and his portfolio, check out <a href="https://speiserproductions.com">speiserproductions.com</a>.</p>
<img src="resources/images/index/Dylan.jpg" style="border-radius: 5px; margin: 0px 0px 0px 5vw;" alt="Dylan headshot" width="20%">
</div>
<br>
---
</md-block>
<!-- Footer -->
<footer>
<div style="text-align: center;">
<br>
© 2024 Dylan Speiser
<br>
GNU GPL v3.0
<br>
All product images and trademarks are Copyright Blackmagic Design.
</div>
</footer>
</body>
</html>