StreamingClient Operator#
Authors: Holoscan Team (NVIDIA)
Supported platforms: x86_64, aarch64
Language: C++, Python
Last modified: August 20, 2025
Latest version: 1.0
Minimum Holoscan SDK version: 3.2.0
Tested Holoscan SDK versions: 3.2.0
Contribution metric: Level 1 - Highly Reliable
The StreamingClientOp class implements a Holoscan operator that provides bidirectional video streaming capabilities with the following key components:
- Configuration and Initialization:
- Configurable parameters for frame dimensions (width, height), frame rate (fps), server connection (IP, port)
- Input/output ports for frame data using GXF entities
- Support for both sending and receiving frames through separate flags
Frame Processing Pipeline: - Input handling: Receives frames as GXF entities containing H.264 encoded video tensors - Frame conversion: Converts input tensors to VideoFrame objects with BGRA format - Memory management: Implements safe memory handling with bounds checking and zero-padding - Output generation: Creates GXF entities with properly configured tensors for downstream processing
Streaming Protocol Implementation: - Bidirectional streaming support through StreamingClient class - Frame callback system for receiving frames - Frame source system for sending frames - Connection management with server including timeout handling
Dependencies#
In order to build the client operator, you must first download the client binaries from NGC and add to the lib
directory for the streaming_client
operator folder
Download the Holoscan Client Cloud Streaming library from NGC: https://catalog.ngc.nvidia.com/orgs/nvidia/resources/holoscan_client_cloud_streaming
# Download using NGC CLI
cd <your_holohub_path>/operators/streaming_client
ngc registry resource download-version nvidia/holoscan_client_cloud_streaming:0.1
unzip -o holoscan_client_cloud_streaming_v0.1/holoscan_client_cloud_streaming.zip
# Copy the appropriate architecture libraries to lib/ directory
# For x86_64 systems:
cp lib/x86_64/* lib/
# For aarch64 systems:
# cp lib/aarch64/* lib/
# Clean up architecture-specific directories and NGC download directory
rm -rf lib/x86_64 lib/aarch64
rm -rf holoscan_client_cloud_streaming_v0.1
After successful extraction and setup, your operators/streaming_client
directory structure should look like this:
├── CMakeLists.txt
├── FindHoloscanStreaming.cmake
├── include
│ ├── StreamingClient.h
│ └── VideoFrame.h
├── lib
│ ├── libcrypto.so.3
│ ├── libcudart.so.12
│ ├── libcudart.so.12.0.107
│ ├── libNvStreamBase.so
│ ├── libNvStreamingSession.so
│ ├── libNvStreamServer.so
│ ├── libPoco.so
│ ├── libssl.so.3
│ ├── libStreamClientShared.so
│ └── libStreamingClient.so
├── metadata.json
├── NOTICE.txt
├── python
│ ├── CMakeLists.txt
│ └── streaming_client.cpp
├── README.md
├── streaming_client.cpp
├── streaming_client.hpp
All dependencies need to be properly installed in the operator directory structure.
Troubleshooting#
If you encounter build errors: - Make sure all required files are copied to the correct locations - Check that the libraries have appropriate permissions (644) - Ensure the directories exist inside the container environment
Supported Platforms#
- Linux x86_64
- Linux aarch64