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;

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()