Sometimes we see question about what is better: NDI or SRT, or when SRT will kill NDI. So let's explain who is winner...
About NDI:
NDI (original, not NDI|HX) has two parts under the hood: special codec and transport protocol.
NDI codec was designed for perfect quality for many times encode-decode cycles.
For example:
if you take h264 or h265 codec and do 10 decode-->encode cycles then quality will be not so good.
if you take NDI codec and do 10 decode-->encode cycles then quality will be same.
NDI is the first ever codec to provide multi-generational stability. This means that once a video signal is compressed, there is no further loss. As a practical example, generation 2 and generation 1000 of a decode-to-encode sequence would be identical.
* from NewTek (owner of NDI) document
Perfect, we have cool loss-less codec. Let's go to use it through INTERNET !
Sorry, but- NO
NDI has one disappoint - it requires wide network bandwidth.
This table is bandwidth requirements for NDI stream. It's very heavy for Internet connection.
So we have next question:
Why we need multi-generational stability codec which can't use through INTERNET?
Where we can use it ?
Anwser is simple: NDI is perfect for connect many nodes inside LOCALNET.
You can join apps and hosts to long chain without quality degradation.Also you can easy re-configurate your production workflow. All you need - good local-network (it's not problem and not expensive instead SDI communications).
SUMMARY
NDI is glue for build production workflow inside Studio.
About SRT
SRT is pure transport protocol. It does not provide any codec. SRT is codec agnostic.
This protocol uses modern techniques only for one task: low-latency delivery of data (not only video).
For video transmition SRT suggest standart way and all hardware and software SRT encoders use this:
Encodes captured video to h264 (or h265, mpeg2)
Wraps this encoded data to MPEG-TS data
Wraps MPEG-TS data to SRT-packet and send to destination.
So SRT with h264/265 encoded data applied for one-time sending only, for example from Location to Studio.
Winner is ... COOPERATION
I hope you undestand from the explanation: NDI and SRT created for different tasks.
Cooperation workflow:
SRT: provides low-latency delivery from Locations to Studio over unstable Internet connections. Also it allowsuse modern codec like h265 for low-bandwidth transmission
NDI: provides low-latency workflow between nodes inside Studio without quality degradation.
... oh , if you plan publish finalized result to YouTube, Facebook etc then don't forget about RTMP also.
About RTMP: unfortunatelly YouTube and Facebook don't accept SRT yet and we need use old RTMP