This resource contains two AI applications designed to work with ST 2110 professional broadcast media streams.
This application creates virtual cameras by detecting and tracking persons in a video stream using a person detection model and GStreamer. It processes a high-resolution input stream and creates multiple cropped virtual camera outputs focused on detected persons.
The application consists of two main components:
Input Stream (3840x2160)
↓
GStreamer Pipeline
↓ ↓
┌─────────┐ ┌─────────┐
│ Person │ │ Virtual │
│Detection│ → │ Cameras │
│ Model │ │(cropper)│
└─────────┘ └─────────┘
↓
Multiple Output Streams (1920x1080)
The application uses a GStreamer pipeline with the following key components:
Input Source:
Processing Pipeline:
Output Streams:
NMOS Node:
The application can be configured using environment variables:
FRAMERATE=30000/1001 # Input framerate, e.g. 25 or 30000/1001
INPUT_WIDTH=3840 # Input stream width
INPUT_HEIGHT=2160 # Input stream height
CROP_WIDTH=1280 # YOLO crop width
CROP_HEIGHT=720 # YOLO crop height
OUTPUT_WIDTH=1920 # Virtual camera output width
OUTPUT_HEIGHT=1080 # Virtual camera output height
NUM_CAMERAS=3 # Number of virtual cameras to create
HOSTNAME=ai-virtual-cameras.local # Hostname for NMOS
HTTP_PORT=5231 # HTTP port for NMOS
MODEL_REPO=<model-repo> # GitHub repo from which to load via torch.hub.load
MODEL_NAME=<model-name> # Model entrypoint
Start the application:
python3.10 cropper.py
The application will:
The application has the following features:
A Dockerfile is provided for containerizing the application. Alternatively, you can install and execute the application manually by following these steps.
Start Media Gateway Pod
description: nvdsnmosbin
Set up VS Code Server
Install Dependencies and Run
# Install required Python packages
pip install -r requirements.txt
# From entrypoint.sh
export NVDSNMOS_ORIGINAL_CORE_SET=$(/workspace/coreaffinity.py)
export LC_ALL=C
export NVDS_NMOS_DEFAULT_SEED="aivc" # A unique string to override the default NMOS seed in the container
# Export environment variables as mentioned above in the Configuration section
# Start the application
python3.10 cropper.py
This system provides real-time Automatic Speech Recognition (ASR) capabilities by connecting an ST 2110-30 audio source to the NVIDIA Riva ASR NIM (NVIDIA Inference Microservice), deployed locally. It uses GStreamer to capture audio from a multicast stream, processes it through the Riva ASR service, and provides real-time transcriptions via a web user interface.
The NIM can be deployed simply by using the YAML at NIM Deployment/config.yaml. An NGC API key needs to be provided to download the models.
The system consists of a Python client application that:
The client handles:
The system uses a GStreamer pipeline with the following default configuration:
SOURCE_MC_IP
environment variable and port 5004The following environment variables need to be configured:
# Riva server connection details
RIVA_SERVER_GRPC_IP_PORT="192.168.23.152:32322" # gRPC IP & port of the Riva NIM server deployed <nodeip>:<nodeport> with the provided config.yaml
# ST 2110-30 multicast audio stream configuration
SOURCE_MC_IP="232.220.109.111" # Multicast IP for audio source that is to be consumed via the GStreamer pipeline
LOCAL_IFACE_IP="192.168.20.79" # Local interface IP of the pod where application is running
python riva-static-client.py
http://<server_ip>:5000/stream
The Riva frontend is a Create React App application that provides a simple web UI to visualize the transcriptions generated by the Riva client.
The frontend uses environment variables for configuration. To set up:
Modify the .env
file in the frontend
directory with appropriate Riva Client IP for consuming transcripts.
Build and run the frontend locally:
cd frontend
npm install
npm run build
Build and run using Docker:
# Build with custom backend URL
docker build --build-arg REACT_APP_BACKEND_URL=http://your-backend-host:5000 -t riva-frontend .
# Run the container
docker run -p 3000:3000 riva-frontend
A Dockerfile is provided for containerizing the application. Alternatively, you can install and execute the application manually by following these steps.
oc apply -f config.yaml
or kubectl apply -f config.yaml
Start Media Gateway Pod
description: nvdsnmosbin
Set up VS Code Server
Install Dependencies and Run
# Install required Python packages
pip install -r requirements.txt --ignore-installed
# export environment variables as mentioned above in the Environment Variables Configuration section
# Start the Riva client application
python3.10 riva-static-client.py
The React app can be containerised with the steps above and then deployed on the cluster without any additional configuration.
By downloading and using this software, you accept the terms and conditions of the NVIDIA AI Product Agreement.
The source code for the AI Reference Applications themselves is licensed under the Apache License, Version 2.0. The notices, attribution, licenses and source code are included in the tarball.