Exploring the Canon Browser Remote API

Polling the Live View Preview

Besides changing properties and starting or stopping a recording the Canon C100 II’s Browser Remote API offers an endpoint to get the current Live View image.

To make a continuous Live View preview work, you must repeatedly poll the endpoint, which sadly does not allow for a smooth framerate. We are talking about 5 to 10 FPS, which might be way too low for pulling focus remotely, but it’s still great for checking your framing and exposure.

Start and Stop Live View

Before requesting the current preview image, you must enable the feature with a request to /api/cam/lv and the cmd query parameter set to start. Additionally, you must set the size parameter sz, which selects the resolution of the preview images, to one of the following values:

  • s: 284 × 160 pixels
  • l: 680 × 383 pixels

Although I have tried multiple other apparent values like m, xl and so on, these were the only values that worked.

GET
http://192.168.0.80
/api/cam/lv?cmd=start&sz=l
Request Header
Cookie: acid={SESSION_ID}; productId=VKIX00; brlang=0;
Response Body
{
  "res": "ok"
}

To disable the Live View feature, call the same endpoint but set the cmd parameter to stop this time. Therefore, the request looks like this: /api/cam/lv?cmd=stop.

Poll Live View Images

With the Live View functionality enabled, you can poll the current preview image using the /api/cam/lvgetimg endpoint, which expects a single parameter d set to the current timestamp in the following format: yyyy-MM-ddTHH:mm:ssmmm. Except for the missing dot between the seconds and milliseconds, the format follows the ISO standard.

GET
http://192.168.0.80
/api/cam/lvgetimg?d={timestamp}
Request Header
Cookie: acid={SESSION_ID}; productId=VKIX00; brlang=0;
Response Body
Live View preview image of a demo scene

The response body contains an image in JPEG format, but sadly the response times vary a lot, which makes a smooth Live View preview with stable frame times impossible.

If you forget to enable the Live View feature before calling lvgetimg, the camera responds with the status code 503 Service Unavailable.

With the ability to change properties and poll for live view previews, we have discovered the essential building blocks required to implement our own remote control app.

As teased by the posts header image, the next post will showcase a mobile app I am working on, which utilizes the Browser Remote API to control the Canon C100 II wirelessly.