Skip to content

Video ​

Skip this page if your payload has no camera.

Before you start ​

Complete Set up a test bench. Video needs a bench bus: Payload Lab has no Video tab yet. Talk to Urban Sky before you build video. Video needs a route, a codec and a bandwidth plan for each flight.

1. Declare the stream ​

Do not send video as telemetry. Add a streams entry to your capability document (device API) or to your announcement (self-announce), then re-announce:

json
"streams": [{ "name": "eo", "protocol": "srt", "port": 9595 }]

Send MPEG-TS over SRT, in H.264 or H.265. MC transcodes it to H.264 for browsers. Field rules: API reference: Video.

Route. With only port, MC pulls srt://<your announced address>:<port>. The bus link carries TCP, and SRT is UDP, so MC cannot pull from your payload-LAN address through the bus link. Ask Urban Sky for the route for your flight: either a url that Urban Sky gives you to send to, or a route that Urban Sky sets up.

2. Add camera metadata (optional) ​

If your camera knows where it points, put MISB ST 0601 KLV in the MPEG-TS stream. MC draws the camera footprint on the map from it. Tags MC reads: API reference: Camera metadata (KLV).

If your payload points a camera, use the pointing names for its telemetry and commands. MC's camera and gimbal controls then work with it.

Check it worked ​

  • Before you connect to a bus, play your stream on your own computer, for example ffplay 'srt://<payload address>:9595'. Fix the codec and timing there first.
  • In the Balto app, open the bus and choose the Payloads tab. Balto plays the video that MC receives for your payload.
  • With KLV, GET /payloads/:id/camera-pose returns poses from the last 30 seconds.

← Set up a test bench · Next: Test with Balto on a bus →