CueCam
Docs» wiki» wiki:framesync

Frame Sync

When using CueCam with a networked video source (e.g. Continuity Camera, NDI®, or OMT), latency can be introduced between the network OSC messages from your console and CueCam.

To counter this, CueCam provides the ability to offset the received data on the recording by up to 30 frames (1s) within the Recording Settings.

It is also possible to automatically measure this latency as follows;

  • Create two new cues in your showfile with Time 0 (i.e. a snap)
  • The first cue should be as dark as possible (i.e. a blackout, with the house lights off)
  • The second cue should be as bright as possible or a fixture directed directly at the camera
  • Set Execute OSC String on the first cue to
    /cuecam/sync/arm
  • Set Execute OSC String on the second cue to
    /cuecam/sync/trigger
  • Ensure CueCam is NOT recording
  • Run the first cue, observe “Waiting for Event” on CueCam's display
  • Run the second cue, a calculated delay should appear on screen.

NB This works best with LED or shuttered fixtures, as opposed to incandescent lamps.

The detected delay will be automatically stored in the Recording Settings, and can be manipulated there (sometimes you may find it is up to 1 frame out)


Alternative (Scripted) Method

This is for people comfortable with scripting and the command line, if you're not, use the method above with your Eos console.

You can also use the following simple python script, save this to your Mac and change the IP and Port to reflect your cuecam instance, then point the camera at the terminal window. Note this requires your terminal window to be white-on-black not black-on-white

#!/usr/bin/env python3
import socket, sys, time

# Set your CueCam IP and Port here
HOST, PORT = "10.24.60.100", 5555

### No need to change anything beyond this point, but it's commented
### to explain what each command does 

# Very simple OSC packet formatter
def osc(address):
    address = address.encode() + b"\0"
    address += b"\0" * (-len(address) % 4)
    return address + b",\0\0\0"

with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as udp:
    # Stop CueCam recording and arm sync
    udp.sendto(osc("/cuecam/stop"), (HOST, PORT))
    udp.sendto(osc("/cuecam/sync/arm"), (HOST, PORT))
    sys.stdout.write("\033[0m\033[2J\033[H")
    try:
        # wait 2s
        time.sleep(2);
        # trigger sync pulse
        udp.sendto(osc("/cuecam/sync/trigger"), (HOST, PORT))
        sys.stdout.write("\033[47;30m\033[2J\033[H")
        sys.stdout.flush()
        # wait 1 frame
        time.sleep(1/30)
    finally:
        # clear screen
        sys.stdout.write("\033[0m\033[2J\033[H")
        sys.stdout.flush()
Previous Next

CueCam

Table of Contents

Introduction

  • Overview
  • Requirements
  • Trial Version

Using CueCam

  • EOS Integration
  • Timecode
  • User Interface
  • Markers
  • Tags
  • Colours in CueCam
  • RTSP Streams
  • Locking
  • Dropbox
  • Apple Watch
  • Settings

OSC Integration

  • OSC Commands
  • Sample Magic Sheet

Reviewing your Cues

  • CueCam Play Web

Help

  • Troubleshooting
  • Support

More

  • Thanks
  • Privacy Notice
  • Licenses