/st2110-toolkit

Primary LanguageShellGNU General Public License v3.0GPL-3.0

ST-2110 software toolkit

Author: Patrick Keroulas

This toolkit provides scripts and config to test, monitor and transcode SMPTE ST 2110 streams. Features:

  • setup network (routes, firewall) and Mellanox NIC (Rx buffer size, checksum, timestamping)
  • capture streams described by SDP file fetched from Embrionix encapsulator
  • transcode st2110-to-h264 from live feeds described by same SDP
  • integration resources for EBU-LIST
  • misc pcap tools
  • analyse stream content like PTP clock

Sponsored by:

logo

Tested distros:

  • Centos 7
  • Dockerized Centos 7
  • Ubuntu 18.04

Install

Install everything (tools, FFmpeg and all the dependencies) using the install scrip:

$ ./install.sh <common|transcoder|capture|ebulist|nmos>

Configuration

Both capture and transcoder scripts have default parameters but they can be overriden by a config filecan to be installed as /etc/st2110.conf. See the sample in ./config/. This config also provisions EBU-list server config.

Capture

Instructions includes network interface configuration.

Transcode

It is required to go through the capture process before in order to validate all the underlying layers that fowards a stream to an application. Then one can use our FFmpeg-based transcoder following this instructions.

EBU-LIST

Integration guide for a complete capture and analysis system.

NMOS

README shows a POC for a NMOSisfied transcoder.

Pcap tools

Pcap script folder contains helper scripts which operate on PCAP files:

  • ancillary editor: insert different types of failure in SMPTE ST 291-1 payload
  • pkt drop detector: count packets and drops for every (src/dst) IP pair found in a given pcap file
  • video yuv extractor: convert RFC4175 payload into raw YUV file

Todos

  • deal with transcoder Dockerfile *nanoseconds ebu-list: fix ptp lock test "The rms value reported by ptp4l once the slave has locked with the GM shows the root mean square of the time offset between the PHC and the GM clock. If ptp4l consistently reports rms lower than 100 ns, the PHC is synchronized." check_clock.c
  • rework./capture/nic_setup.sh
  • nmos-poller: display ffmpeg status
  • ffmpeg: a static route to multicast must be added, why? would it work with a route to source IP only? is it possible to tell ffmpeg which interface to use

Additional resources