Automated NDI to SDI conversion

Hi.
I´m realy new in CasparCG and I´m searching for a solution to make a automated NDI to SDI conversion.
I have a PC with a Decklink Card and two PTZ Cameras with NDI.
My plan is to have Caspar Server in my Starttup and everytime the NDI Signal from my PTZs is in the Network it will be converted to SDI. I have no problem with the configuration of the SDI Out to set as a consumer, but the NDI as producer in autoplay.
I hope you understand what I want to do and you can help me.

Best
Alex

Have you tried using the producers config block inside each channel?

2 Likes

id stands for the layer? And we can add any supported producer?

Nice solution @Julusian , I wasn’t aware of it.

Hi I have tried this conifg but it woint work. I am new in Caspar and can you help me please.

<configuration>
  <paths>
    <media-path>media/</media-path>
    <log-path>log/</log-path>
    <data-path>data/</data-path>
    <template-path>template/</template-path>
    <thumbnail-path>thumbnail/</thumbnail-path>
  </paths>

  <lock-clear-phrase>secret</lock-clear-phrase>

  <channels>
    <channel>
      <video-mode>1080p5000</video-mode>
      <consumers>
        <decklink>
          <device>1</device>
          <embedded-audio>true</embedded-audio>
          <channel-layout>stereo</channel-layout>
          <latency>normal</latency>
        </decklink>
      </consumers>
    </channel>
  </channels>

  <controllers>
   
  </controllers>

  <decklink>
    <device>
      <id>1</id>
      <embedded-audio>true</embedded-audio>
      <latency>normal</latency>
    </device>
  </decklink>

  <ndi>
    <input>
      <channel>NDI1</channel>
      <format>1080p5000</format>
    </input>
    <input>
      <channel>NDI2</channel>
      <format>1080p5000</format>
    </input>
    <input>
      <channel>NDI3</channel>
      <format>1080p5000</format>
    </input>
    <input>
      <channel>NDI4</channel>
      <format>1080p5000</format>
    </input>
  </ndi>

  <route>
    <command>ROUTE</command>
    <channel>NDI1</channel>
    <output>dante:1</output>
    <channel>NDI2</channel>
    <output>dante:2</output>
    <channel>NDI3</channel>
    <output>dante:3</output>
    <channel>NDI4</channel>
    <output>dante:4</output>
    <channel>NDI1</channel>
    <output>decklink:1</output>
    <channel>NDI2</channel>
    <output>decklink:2</output>
    <channel>NDI3</channel>
    <output>decklink:3</output>
    <channel>NDI4</channel>
    <output>decklink:4</output>
  </route>

  <audiomixer>
    <channel-layout>stereo</channel-layout>
    <channels>8</channels>
    <consumers>
      <decklink>
        <device>1</device>
        <embedded-audio>true</embedded-audio>
        <channel-layout>stereo</channel-layout>
        <latency>normal</latency>
      </decklink>
      <dante>
        <address>127.0.0.1</address>
        <channels>8</channels>
      </dante>
    </consumers>
  </audiomixer>

  <audiodevice>
    <id>dante</id>
    <channel-layout>stereo</channel-layout>
  </audiodevice>
</configuration>

You don’t need to replace all <> with (), that is weird. Just format the XML with the </> button above.

okay, thank you.

There is a lot wrong in this config. Everything below the </controllers> line is not valid syntax

Okay, thank you.
I think I have to read a lot more articles about Casparcg to solve my problems.

Best
Ali

I still don’t understand what you want to do. Maybe you can explain your needs and what hardware you have. Decklink card(s)? What type etc. What the system should output and what you want to input.

By the way: I am not sure, if we can do Dante audio? Can we @Julusian?

Dante is possible via NDI and extra software :wink: Tested and using :slight_smile:

1 Like

Hi, first thank you for your great support.

Okay and here what I want to do. I want to use Caspar to convert NDI Inputs to SDI Outputs and Dante Outputs.

I have a Decklink 8K Pro and a Dante Virtual Soundcard.

I thought I could just configure the Server that he convertes the NDI1, … Signal to SDI1,… of my Decklink and to the Dante outputs 1+2 (If possible) or just 1 as mono Signal.

As an example: In my Network there is the NDI1 Signal and casparcg route it to the SDI1 Output and Dante 1.
NDI2 to SDI2 + Dante2
and so on.

The output of the SDI should be 1080p50, the NDI Inputs could be 1080p50 or 720p30.

Thank you

Ali

Start with this:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <paths>
        <media-path>media/</media-path>
        <log-path>log/</log-path>
        <data-path>data/</data-path>
        <template-path>template/</template-path>
    </paths>
    <lock-clear-phrase>secret</lock-clear-phrase>
    <channels>
        <channel>
            <video-mode>1080p5000</video-mode>
            <consumers>
				<decklink>
					<device>1</device>
					<embedded-audio>true</embedded-audio>
					<channel-layout>stereo</channel-layout>
					<latency>normal</latency>
					<keyer>external</keyer>
					<key-only>false</key-only>
					<buffer-depth>3</buffer-depth>
					<custom-allocator>true</custom-allocator>
				</decklink>
            </consumers>
        </channel>
    </channels>
    <controllers>
        <tcp>
            <port>5250</port>
            <protocol>AMCP</protocol>
        </tcp>
    </controllers>
    <amcp>
        <media-server>
            <host>localhost</host>
            <port>8000</port>
        </media-server>
    </amcp>
</configuration>

Then add as many channels as you need, by copying from <channel> to </channel> and incrementing the device number.

Then play the NDI sources using these commands. For the Dante part @bencius may help, as I have not tried this yet. And maybe it will not work to play 720p30 sources on a p50 output, but you can try.

Dumb question, why not to use vMix or OBS with dante virtual sound card instead?

I want to run casparcg on one server that is just converting every NDI Signal I route via the NDI Router to a specific NDI Stream, in my case NDI1 to NDI4, and I don´t need to setup everytime something on my system.
As I know vMix will not have 4 SDI Outputs at the same time.

Thank you, I will try it.
But I have one question, how can I define the SDI output for the NDI sources?

Hi.
Thanks for all your support, I made running Server, but I have still a Problem with the different resolutions of my NDI Streams. I have streams from 720p30 up ti 1080p50 and Casparcg can´t scale or resync them to my 1080p50 of my DeckLink Card. If anyone has an idea it would be great, otherwise I have to look for another workflow.

Best
Alex

Caspar can play 25p, 50i and 50p on a 50p channel or 30p 60i or 60p on a 60p channel. Would you be able to switch the 30p sources to 25p? Or why are they 30p?

These frame rates come from the old analog days when TV systems were synchronized by the frequency of the electric current. In Europe 50Hz in the US 60Hz. There are devices, that can transcode one to the other, but they are quite expensive, or moving elements in the picture look jerky.

1 Like

I can´t change the framerate from the 720p Signal, 30p is the framerate of every MS Teams NDI stream and I can´t change it. All our other NDI Sources run with 50p, like our whole technic.

I see. Then I would set one of the Caspar channels to 720p60 and play the Teams over this. Afterwards send the 720p60 to a BMD Teranex standards converter (or something similar) to convert it to 1080p50 (The converter only supports 720p60 not 720p30).

How many of these feed are used at the same time? You could either switch them before inputting into Caspar, via AMCP commands, or run multiple channels in Caspar and use a cross-point switcher to send it to the converter(s).

I will give it a try with 720p60 or 1080p60. I use a Constellation 8K so I don´t need any extra converter. My last problem is the Dante output.