This is a Helm chart package to manage Media Gateway Next deployment on your Kubernetes cluster.
Rivermax license
kubectl create secret generic rivermax-license --from-file=rivermax.lic -n <your-namespace>
where:default
when you're getting startedImage pull secret
kubectl create secret docker-registry <secret-name> --docker-server=nvcr.io '--docker-username=$oauthtoken' --docker-password=<API-KEY> --docker-email=<your-email> -n <your-namespace>
where:alice-ngc-secret
to be used on your local system when deploying applicationsdefault
when you're getting startedPlease see the NGC Helm Charts documentation for general guidance.
This Helm chart can be installed on your Kubernetes cluster using the Helm Dashboard UI once the Helm Dashboard Helm Chart is installed.
Login to the NGC registry
helm registry login nvcr.io
Add repo on your local system
helm repo add <your-repo-name> https://helm.ngc.nvidia.com/nvidia/holoscan-for-media/ '--username=$oauthtoken' --password=<API-KEY>
where:
holoscan-for-media
to be used on your local system to indicate the chart repository on NGC specified by the URLUpdate the repo or fetch particular chart
helm repo update
or
helm pull <your-repo-name>/nvds-nmos-bin
where:
helm repo add
command aboveNow you can see all the charts available
helm search repo
You are ready to install Media Gateway Next using its Helm chart
Install using below command if the image pull secret was created beforehand as mentioned in prerequisites
helm install --set imagePullSecrets[0].name=<secret-name>,<...more key=value overrides...> <release-name> <your-repo-name>/nvds-nmos-bin
else
helm install --set imageCredentials.password=<API-KEY>,<...more key=value overrides...> <release-name> <your-repo-name>/nvds-nmos-bin
where:
kubectl create secret
command abovealice-nvds-nmos-bin-1
, which should be unique on your local system, to indicate this particular installation of this applicationhelm repo add
command aboveAfter installation you can check the status
kubectl get all -o wide
Once each pod is running its pipeline is started
If the pipeline includes nvdsnmosbin
, an NMOS device is created.
Install the NMOS Registry and NMOS Controller to interact with NMOS devices.
Other commands to manage the installed application
helm status <release-name>
helm get all <release-name>
helm uninstall <release-name>
where:
helm install
command aboveMedia Gateway Next is built on DeepStream. It provides NMOS registration and control of ST 2110 sinks and sources in a flexible GStreamer pipeline passed to the container.
Sample pipeline for a videotestsrc
with corresponding SDP file for the sink, all defined in values.yaml
GST_DEBUG
can be used to set the log level for GStreamer and elements/plugins for nvdsnmosbin
description
is the actual pipeline that is appended to gst-launch-1.0
. Apart from the pipeline we can define some additional properties of nvdsudpsink
and/or nvdsudpsrc
in the manner shown below.
description: videotestsrc pattern=smpte100 is-live=true ! video/x-raw,width={{ .Values.width }},height={{ .Values.height }},format=UYVP,framerate={{ .Values.framerate }}/1 ! nvdsnmosbin dump-graphviz=true name=sender hostname="simple-video.local" sink_0::nvdsudpsink-desc="nvdsudpsink payload-size=1220 packets-per-line=4 internal-thread-core=0 render-thread-core=1 ptp-src=''" sink_0::sdp="file:///sdps/video"
The rtp-caps
allow simple control over the SDP media parameters.
Alternatively, SDP files can be specified directly as above.
The SDP files used in the pipeline are defined as below.
sdps:
video: |
v=0
o=- 1443716955 1443716955 IN IP4 0.0.0.0
s=Static-color-bar {{ .Values.height }}p{{ .Values.framerate }}
t=0 0
m=video 50004 RTP/AVP 96
c=IN IP4 233.252.0.1/64
a=source-filter: incl IN IP4 233.252.0.1 0.0.0.0
a=rtpmap:96 raw/90000
a=fmtp:96 sampling=YCbCr-4:2:2; width={{ .Values.width }}; height={{ .Values.height }}; exactframerate={{ .Values.framerate }}; depth=10; TCS=SDR; colorimetry=BT709; PM=2110GPM; SSN=ST2110-20:2017; TP=2110TPN;
a=ts-refclk:ptp=IEEE1588-2008:traceable
The main container used by this Helm chart requires the following capabilities to run properly:
Capability | Purpose | Related Function |
---|---|---|
IPC_LOCK | To enable locking memory, to allocate hugepages via mmap |
Rivermax |
NET_RAW | To use RAW sockets | Rivermax |
SYS_CHROOT | To start avahi-daemon , for name resolution and service discovery |
NMOS |
SYS_NICE | To set process and thread affinity | Rivermax |