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¶
- Streaming Formats - Learn about supported codecs
- SAP/SDP Discovery - Automatic stream discovery
- C++ API Reference - Complete API documentation
Support¶
Questions about getting started?
- Website: https://astutesys.com/support
- Email: [email protected]