Quick Start

Get started with MediaX in 5 minutes.

Transmitting Video

C++ Example

#include "rtp/rtp.h"

int main() {
  // Create a transmitter with SAP/SDP announcements
  mediax::RtpSapTransmit<mediax::rtp::uncompressed::RtpUncompressedPayloader> rtp(
      "239.192.1.1",    // Multicast IP address
      5004,             // Port
      "my-stream",      // Session name
      640, 480,         // Width x Height
      30,               // Framerate
      "RGB24"           // Colorspace
  );

  // Get a test pattern buffer
  std::vector<uint8_t> &buffer = rtp.GetBufferTestPattern();

  // Transmit 100 frames
  for (int i = 0; i < 100; i++) {
    rtp.Transmit(buffer.data(), false);
  }

  return 0;
}

Python Example

import sys
sys.path.append('/usr/local/lib/python3/dist-packages/mediax')

import rtp_uncompressed_payloader
import rtp_types

# Create payloader
payloader = rtp_uncompressed_payloader.RtpUncompressedPayloader()

# Configure stream
stream_info = rtp_types.StreamInformation()
stream_info.session_name = "my-stream"
stream_info.hostname = "239.192.1.1"
stream_info.port = 5004
stream_info.width = 640
stream_info.height = 480
stream_info.framerate = 30
stream_info.encoding = rtp_types.ColourspaceType_kColourspaceRgb24

payloader.SetStreamInfo(stream_info)
payloader.Open()

# Transmit frame data
frame_data = bytes(640 * 480 * 3)  # RGB24 buffer
payloader.Transmit(frame_data, True)

payloader.Close()

Receiving Video

C++ Example

#include "rtp/rtp.h"

int main() {
  // Create a receiver
  mediax::RtpSapReceive<mediax::rtp::uncompressed::RtpUncompressedDepayloader> rtp;

  // Wait for SAP/SDP announcement
  rtp.WaitForSap("my-stream");

  // Receive frames
  rtp.RegisterCallback([](const mediax::rtp::RtpFrameData& frame) {
    // Process frame data
    std::cout << "Received frame: " 
              << frame.resolution.width << "x" 
              << frame.resolution.height << std::endl;
  });

  rtp.Start();

  // Run for 10 seconds
  std::this_thread::sleep_for(std::chrono::seconds(10));

  rtp.Stop();
  return 0;
}

Discovering Streams

Use SAP/SDP to discover available streams on the network:

import sys
sys.path.append('/usr/local/lib/python3/dist-packages/mediax')

import sap_listener
import time

# Get SAP listener instance
listener = sap_listener.SapListener.GetInstance()
listener.Start()

# Wait for announcements
time.sleep(5)

listener.Stop()

# Get discovered streams
streams = listener.GetSapAnnouncements()
for name, sdp in streams.items():
    print(f"Found: {sdp.session_name} at {sdp.ip_address}:{sdp.port}")

Command Line Tools

MediaX includes command-line tools for testing:

# Transmit a test pattern
./rtp-transmit --ipaddr 239.192.1.1 --port 5004 --width 640 --height 480

# Receive and display video
./rtp-receive --ipaddr 239.192.1.1 --port 5004

Next Steps

Support

Questions about getting started?