Virtual production. Sync ATEM & Decklink & Unreal Engine

Questions about ATEM Switchers, Camera Converter and everything live!
  • Author
  • Message
Offline

Marchelo2012

  • Posts: 1
  • Joined: Sun Jan 29, 2023 8:53 pm
  • Real Name: Mark Kashin

Virtual production. Sync ATEM & Decklink & Unreal Engine

PostMon Jan 30, 2023 12:48 am

Hello
We create virtual production with the following set:
    ATEM 1 M/E Production Studio 4K
    Blackmagic Studio Camera 4K Pro (4 pieces)
    Decklink 8K Pro
    Smart Video Hub 40x40
    Unreal Engine 5
There is a self-developed server that switches cameras using the SDK switcher based on external events. Also, this server controls the change of cameras inside the unreal engine (the virtual cameras are located in the same way as the physical ones).
The Unreal Engine sends an image via decklink output to the ATEM switcher's SDI input, this image is mixed into the program (ATEM Program output) using a chroma key that is configured inside the ATEM switcher.
Everything works well, but the decklink card has a latency of about 2 frames at the output. Because of this, the physical cameras switch (this is done by ATEM on a command from our server) 2 frames earlier than the virtual ones (the picture from the unreal engine virtual cameras is mixed into the chroma key).
Through the decklink input, I captured the ATEM timecode inside the unreal engine. At the decklink output, the card (returns the image to the ATEM SDI input) gives timecode with a lag of 2 frames.
How can I delay all other inputs and switches using this timecode to keep the image in sync? It is very unpleasant that on chroma key I see switching of virtual cameras with a slight lag.
Also in the future I am going to use trackers for cameras, this delay will also give an error.
I've tried on our server that controls everything with an artificial delay of 80 milliseconds (2 frames at 25 fps), this works almost always well, but sometimes I see an error of 1 frame, I want to improve it. Also, such a solution in the future will give trouble when using trackers for cameras.
A good solution I see is the use of a buffer inside ATEM. I want ATEM to delay the signal from the cameras while waiting for the image to synchronize with the unreal engine in timecode (the image comes in SDI input and includes timecode).
I also thought about using SDI metadata but found that Blackmagic doesn't support it.
I know that I can bring all the sources (cameras) inside the unreal engine through the decklink card and then everything will be synchronized inside, I also know how to make a composition inside the unreal engine based on chroma key. But this solution doesn't work for me, because I want to stream using ATEM, not using unreal engine (streaming will be around the clock, so I need the reliability that Blackmagic provides).
Please help me figure out this sync. This is very important for me, I will be grateful for any advice. Thank you

Return to Live Production

Who is online

Users browsing this forum: No registered users and 70 guests