The Media Communications Mesh (MCM) enables efficient, low-latency media transport for media microservices for Edge, Edge-to-Cloud, and both private and public Cloud environments. The framework creates a secure, standards-based media data plane for inter-microservices communications using a new media proxy leveraging the Intel® Media Transport Library (IMTL) and adds the necessary microservices control-plane communications infrastructure to implement any media control protocol.
The Media Proxy can work as a Data Plane component in "Service Mesh" for media applications. It provides "Shared Memory" APIs to all media microservices to abstract away the complexity of media transport.
Detailed information about Media Proxy can be found under the media-proxy subdirectory.
- Zero memory copy, ultra low-latency media transfers between containers.
- Transport video stream with compressed (JPEG XS) or RAW (uncompressed) protocols.
- Support multiple media transport protocols (SMPTE ST 2110, RTSP, ...).
Media Proxy implements the shared memory buffer communications using MemIF protocol.
The MCM SDK library can be used by microservice application to offload the media transport functionalities. It is designed to abstract the network transport functions for media data, and wrap the "libmemif" APIs to communicate with "Media Proxy".
Detailed information about MCM SDK can be found in sdk directory.
The MCM source code can be compiled with the "build.sh" script.
$ ./build.sh
The program "media_proxy" and SDK library can be installed on system, after the "build.sh" script run successfully. And the "Media Proxy" can be run with below command.
$ media_proxy
INFO: TCP Server listening on 0.0.0.0:8002
INFO: gRPC Server listening on 0.0.0.0:8001
If Media Proxy successfully launches up, it will open 2 port to listen on control messages.
- gRPC port (default 8001) is for service mesh control plane connection.
- TCP port (default 8002) is for the connection with MCM SDK.
All supported parameters can get with the program "helper" function.
$ media_proxy -h
Usage: media_proxy [OPTION]
-h, --help Print this help and exit.
-d, --dev=dev_port PCI device port (defaults: 0000:31:00.0).
-i, --ip=ip_address IP address for media data transportation (defaults: 192.168.96.1).
-g, --grpc=port_number Port number gRPC controller (defaults: 8001).
-t, --tcp=port_number Port number for TCP socket controller (defaults: 8002).
-
There is one bug with default docker.io package installation (version 20.10.25-0ubuntu1~22.04.2) with Ubuntu 22.04.3 LTS. The
USER
command andchown
command don't work as expected. It's preferred to install docker-ce package following instruction from docker community. -
The Authentication function of Media Proxy interfaces is missing. This feature is under development, and current implentation is weak to defend network attacks.
If you have any problem during use this project, you could find support in following ways.
- Search in the project documents
- Ask your question in the Discussions
- Submit Issues for bug.
This project is under development. All source code and features on the main branch are for the purpose of testing or evaluation and not production ready.