Tag Archives: NDI

FAQ: From HDMI to NDI

1. What is all about?

Starting with Corona I have been streaming  lectures and church concerts. Using a Macbook and a Linux laptop, old iPhones and Nikon DSLR cameras were connected by HDMI cables to a Blackmagic ATEM mini pro. This worked well in the beginning although there are many shortcomings of HDMI as it is basically a protocol to connect just screens to a computer and not devices in a large nave.

  • cables are expensive and there are several connector types (A=Standard, B=Dual, C=Mini, D=Micro, E=Automotive) where the right length and type is always missing
  • it never worked for me more than 15-20m distance even with amplifier inserted
  • the signal was never 100% stable, it was lost it in the middle of the performance
  • HDMI is only unidirectional, there is no tally light signal to the camera
  • there is no PTZ control for camera movement

 

2. What are the options?

WIFI transmission would be nice but is probably not the first choice for video transmission in a crowded space with even considerable latency in the range of 200ms.  SDI is an IP industry standard for video but this would require dedicated and expensive cabling for each video sources including expensive transceivers.  The NDI protocol (network device interface) can use existing ethernet networks and WIFI to transmit video and audio signals. NDI enabled devices started slowly due to copyright and license issues but is expected to be a future market leader due to its high performance and low latency.

 

3. Is there any low-cost but high quality NDI solution?

NDI producing videocameras with PTZ (pan(tilt/zoom) movements are expensive in the range of 1,000-20,000€. But there are NDI encoder for existing hardware like DSLRs or mobile phones. These encoders are sometimes difficult to find, I am listing below what I have been used so far. Whenever a signal is live, it can be easily displayed and organized by Open Broadcaster Software  running on MacOS,  Linux or Windows. There are even apps for iOS and Android that can send and receive NDI data replacing now whole broadcasting vehicles ;-)

 

4. What do I need to buy?

Assuming that you already have some camera equipment that can produce clean HDMI out (Android needs  an USB to HDMI and iPhones a Lightning to HDMI cable), you will need

  • a few cheap CAT6 cables at different lengths (superfluous if you just want a WIFI solution)
  • an industrial router with SIM card slots (satellite transmission is still out of reach for semi-professional transmission  ;-(
  • one or more HDMI to NDI transceiver
  • an additional PTZ camera is not required at the beginning

 

5. Which devices did you test and which do you currently use?

  • router: I tested AVM FritzBox , TP Link and various Netgear devices all without RJ45 network ports. I am using now a Teltonika RUT950  with three RJ45 ports as it has great connectivity and a super detailed configuration menu.
  • NDI transceiver:I  tried a DIY solution with FFMPEG/Ubuntu, then a Kiloview P2 and a LINk Pi ENC2. I am now using Zowietek 4K HDMI which is giving a stable signal, being fully configurable, silent and can be powered by USB port or PoE.
  • PTZ:  so far I used a Logitech Pro2, but will replace it with an OBSBOT Tail Air

The Teltonika router and the two Zowietek converter cost you less than 500€, the  Obsbot also comes at less than 500€ while this setup allows for semi-professional grade live streams.

 

6. Tell me a bit more about your DSLR cameras and the iPhones please.

There is nothing particular, some old Nikon D4s and a Z6, all with good glass and an outdated  iPhone SE without SIM card.

 

7. Have you ever tried live streaming directly from a camera like the Insta 360 X3?

No.

 

8. What computer hardware and  software do you use for streaming and does this integrate PTZ control?

I used a 2017 and a 2020 Macbook (which showed ab  advantage over a Linux  notebook when directly connecting the DSLR).  NDI Video has to be delayed due to the latency of other NDI remote sources. I usually sync sound and different video sources at +400ms in OBS.
Right now I am testing an iPad app for wireless management called TopDirector. The app looks promising but haven’t tested it in the wild so far.
PTZ control can be managed by an OBS plugin, while TopDirector has it already built in.

 

9. How much setup time do you need?

Setting up 2 DSLR cameras, 1 phone and 1 audio recorder on tripods and laying cables takes 30-40 minutes . OBS configuration and Youtube setup takes another 10 minutes if everything goes well.

 

FFMPEG with NDI support

Unfortunately, FFMPEG does not support NDI due to copyright issues but wait there is a recent Github tutorial that brings back NDI support on Linux machines.

For MacOS several patches/versions are outdated while I now found that the old method posted by Johan Els on Github several years ago still works.

As I can stream now basically every camera under macOS and Ubuntu using gphoto2 and ffmpeg, I am ready to sell my whole HDMI setup including the Atem Mini – at least at sometime in the near future ;-)

How to revamp an outdated chromebook into an up to date multimedia machine

I have here a left over 4 year old Acer Chromebook 14 (CB3-431) here that nobody wanted to buy even for 20€ on the flea market. It was running under Chrome OS Edgar 2016 Intel Braswell where software support expired recently. So I decided to refresh it with a modern Ubuntu/Debian version as there are many positive reports out there, that it will run even even better than before.

As recommended I installed Gallium OS 3.1. Bismuth as a dual boot system with 22 GB of 24 GB for the new operating system (Gallium takes about 3,5 GB while my 1 TB external SSD works flawless with this setup). https://chrx.org has step by step instructions  for a dual boot system.

This takes about 2 hours as this is a long and complicated process: resetting the Chromebook to developer mode (ESC + F3/circle + power), followed by  firmware update and fresh  partitioning.

Now the machine boots into a white OS verification screen from where CTRL+D goes into ChromeOS (as before) while CTRL+L leads to Gallium (user chrx, password chrx). Sounds perfect but on the second day I accidentally hit a wrong key deleting everything. So I removed now also the hardware boot lock and restarted the firmware utility script a second time for setting the GBB flag to boot directly to Gallium OS without delay.

 

removing the Acer Chromebook hardware lock, screwdriver pointing to it

 

Next I installed OBS to connecting my DSLR  cameras for streaming a Christmas service. Took me some time to figure out which OBS version was working with NDI. I can recommend NDI Plugin 4.9.1 and  PTZ Plugin 0.10.2 that work with OBS 25.0.8. (OBS 28 had issues with NDI).

# system
sudo apt-get install libusb-1.0-0 gparted ufw gufw

# php
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt-get install php7.4-cli php7.4-fpm php7.4-opcache php7.4-sqlite3 php7.0-gd
sudo php -S 0.0.0.0:80 -t /home/chrx/Downloads/phpserver

# camera control
sudo apt-get install exiftool gphoto2 v4l2loopback-dkms

# streaming
git clone https://github.com/puhitaku/mtplvcap.git
sudo add-apt-repository ppa:obsproject/obs-studio
sudo apt-get update
sudo apt-get install obs-studio

# selphy printer
sudo apt-get install printer-driver-gutenprint cheese photoprint

# nextcloud
sudo add-apt-repository ppa:nextcloud-devs/client
sudo apt install nextcloud-client

Connecting to an iPhone Wifi Hotspot running the EpoCam App works with NDI. Also the Atem Mini is recognized in the LAN as a video source. Tested also Millumin 2 as NDI feed while Magic Music Visuals needs NDISyphon as MMV has no native NDI output…

The USB connection of Nikon Z cameraw was a bit more difficult, so I went back to a trusted D.

Gphoto2 sees the camera, but unfortunately FFMPEG has no more NDI support since 2019 – fresh compile, patches or downgrading did not work for me. v4l2loopback recommended elsewhere also failed due to some kernel issues. The only strategy that worked is mtplvcap. It provides an output that can be accessed via a web URL in OBS.

As USB was frozen from time to time, I wrote a shell script that could quickly resetting the port when necessary. Finally I added also PHP 7 as a server (and nextcloud as online backup) for my photobooth. And well, also the trusted Selphy 800 is working after fiddling around with CUPS.

The old chromebook is now a great multimedia machine, it can stream from various sources and can also run a photobooth with image download and printing.

So far it is running stable with many hours of low power consumption. At 20€, I believe it is now worth  the twentyfold price competing even with a Macbook in this price range.

Postscriptum: Unintentional disabling of the developer mode results in a complete system loss but can be prevented with

# https://wiki.archlinux.org/title/Chrome_OS_devices
/usr/share/vboot/bin/set_gbb_flags.sh 0x489

A quick fix for OBS 28.0 and NDI 4.9

It would be a dream to use Airplay for  sharing the OBS output using  the window modus. However, whenever switching the window to full screen, I can’t control OBS anymore as the main screen goes black, even when using different spaces. Also sync screens is not an option here as I only get the Airplay output.

 

 

So Airplay isn’t a good choice here, the reason why I have been falling back now to NDI to transmit my output to another machine.

It turned out, however, that the NDI plugin is not working anymore with the revamped OBS version 28 because the QT5 sources are not correctly referenced in the plugin according to the log file.

So the only choice is now to go back to version 27 until this error has been corrected.