Video Streaming Operators#
Authors: Holoscan Team (NVIDIA)
Supported platforms: x86_64, aarch64
Language: C++
Last modified: November 7, 2025
Latest version: 1.1.0
Minimum Holoscan SDK version: 3.5.0
Tested Holoscan SDK versions: 3.5.0
Contribution metric: Level 2 - Trusted
A unified package containing both streaming client and server operators for real-time video communication in Holoscan streaming applications.
Overview#
This operator package combines video_streaming_client and video_streaming_server into a single, cohesive video streaming solution.
Structure#
video_streaming/
├── video_streaming_client/ # Complete streaming client operator
│ ├── video_streaming_client.cpp # Main client implementation
│ ├── frame_saver.cpp # Frame saving utility
│ └── holoscan_client_cloud_streaming/ # Client streaming binary once NGC download is complete
├── video_streaming_server/ # Complete streaming server operator
│ ├── video_streaming_server_*.cpp # Server implementations
│ ├── frame_debug_utils.cpp # Debug utilities
│ └── holoscan_server_cloud_streaming/ # Server streaming binary once NGC download is complete
├── CMakeLists.txt # Unified build configuration
├── metadata.json # Combined metadata
└── README.md # This file
Components#
Video Streaming Client (video_streaming_client/)#
The client component provides bidirectional video streaming capabilities:
- VideoStreamingClientOp: Main operator for video streaming client functionality
- FrameSaverOp: Utility operator for saving frames to disk
- Features:
- Send and receive video frames
- V4L2 camera support
- Frame validation and debugging
Documentation: See video_streaming_client/README.md for detailed information.
Streaming Server (video_streaming_server/)#
The server component provides comprehensive streaming server functionality:
- StreamingServerResource: Shared resource managing server connections
- StreamingServerUpstreamOp: Handles incoming video streams from clients
- StreamingServerDownstreamOp: Handles outgoing video streams to clients
- Features:
- Multi-client support
- Format conversion utilities
- Frame processing and validation
- Debug utilities for troubleshooting
Documentation: See video_streaming_server/README.md for detailed information.
Usage#
In Applications#
CMakeLists.txt#
add_holohub_application(my_streaming_app DEPENDS OPERATORS video_streaming)
C++ Applications#
// Client functionality
#include "video_streaming_client.hpp"
#include "frame_saver.hpp"
// Server functionality
#include "video_streaming_server_resource.hpp"
#include "video_streaming_server_upstream_op.hpp"
#include "video_streaming_server_downstream_op.hpp"
Python Applications#
Both client and server operators have Python bindings available. To use them in Python:
# Client functionality
from holohub.video_streaming_client import VideoStreamingClientOp
# Server functionality
from holohub.video_streaming_server import (
StreamingServerResource,
StreamingServerUpstreamOp,
StreamingServerDownstreamOp,
)
Building with Python support:
./holohub build video_streaming --language python
Running the Applications#
The video streaming demo provides both client and server applications. For complete documentation and setup instructions, see the Applications README.
⚠️ Important: These applications are currently only compatible with CUDA 12.x. If your system uses CUDA 13.x, ensure you add the
--cuda 12flag to all command-line invocations shown below.
For complete Python application documentation, see:
Dependencies#
Required#
- Holoscan SDK 3.5.0 or higher: Core framework
- CUDA 12.x: GPU acceleration support
Cloud Streaming Binaries#
Client Binary#
To build the client operator, first download the client binaries from NGC:
# Download using NGC CLI
cd <your_holohub_path>/operators/video_streaming/video_streaming_client
ngc registry resource download-version "nvidia/holoscan_client_cloud_streaming:0.2"
unzip -o holoscan_client_cloud_streaming_v0.2/holoscan_client_cloud_streaming.zip -d holoscan_client_cloud_streaming
# Clean up NGC download directory
rm -rf ./holoscan_client_cloud_streaming_v0.2/
Server Binary#
To build the server operator, first download the server binaries from NGC:
# Download using NGC CLI
cd <your_holohub_path>/operators/video_streaming/video_streaming_server
ngc registry resource download-version "nvidia/holoscan_server_cloud_streaming:0.2"
unzip -o holoscan_server_cloud_streaming_v0.2/holoscan_server_cloud_streaming.zip -d holoscan_server_cloud_streaming
# Clean up NGC download directory
rm -rf ./holoscan_server_cloud_streaming_v0.2/
All dependencies need to be properly installed in the operator directory structure.
Testing#
This package includes comprehensive testing at multiple levels:
Unit Tests#
For comprehensive test output examples, expected results, and detailed test information, see UNIT_TESTS_SUMMARY.md.
Run Instructions#
Run all unit tests from the holohub root directory:
# Run all unit tests with verbose output
./holohub test video_streaming --ctest-options="-R unit_tests -V"
Integration Tests#
Please refer to the Integration Tests for end-to-end integration tests validate the complete streaming pipeline with actual server/client communication and frame transmission.
Related Applications#
- Streaming Client Demo: Example client application
- Streaming Server Demo: Example server application
Performance Notes#
- Both components support GPU memory allocation for optimal performance
- Configure appropriate buffer sizes for your streaming requirements
- Monitor network bandwidth for remote streaming scenarios
- Use debug utilities to troubleshoot frame processing issues
License#
Apache-2.0 - See the LICENSE file for details.