Back to MiXiD API Documentation
Detailed MiXiD XCFramework reference for RTSP and ONVIF. Read through each header, class, protocol, and function section to inspect Objective-C declarations, parameters, return values, and usage guidance.
RTSP Server Examples
Use MXDRTSPServer when the app should expose a local MiXiD media pipeline as an RTSP stream on the network.
Swift
final class RTSPOutput {
private let server: MXDRTSPServer
init() {
let config = MXDRTSPServerConfiguration.default()
config.streamName = "mixid"
config.port = 8554
config.videoWidth = 1920
config.videoHeight = 1080
config.videoFrameRate = 30
config.videoBitrate = 4_500_000
config.videoCodec = .h264
config.audioBitrate = 128_000
config.audioSampleRate = 48_000
config.audioChannelCount = 2
self.server = MXDRTSPServer(configuration: config)
}
func start() throws -> URL {
var error: NSError?
guard server.start(&error) else { throw error ?? NSError(domain: "RTSP", code: -1) }
return server.streamURL
}
func stop() { server.stop() }
func appendVideoFrame(_ imageBuffer: CVImageBuffer, time: CMTime) {
server.appendVideoFrame(imageBuffer, presentationTime: time)
}
func appendAudioBuffer(_ audioBuffer: AVAudioPCMBuffer) {
server.appendAudioBuffer(audioBuffer)
}
}
Objective-C
@interface RTSPOutput : NSObject
@property (nonatomic, strong) MXDRTSPServer *server;
@end
@implementation RTSPOutput
- (instancetype)init {
self = [super init];
if (!self) { return nil; }
MXDRTSPServerConfiguration *config = [MXDRTSPServerConfiguration defaultConfiguration];
config.streamName = @"mixid";
config.port = 8554;
config.videoWidth = 1920;
config.videoHeight = 1080;
config.videoFrameRate = 30;
config.videoBitrate = 4500000;
config.videoCodec = MXDRTSPServerVideoCodecH264;
config.audioBitrate = 128000;
config.audioSampleRate = 48000;
config.audioChannelCount = 2;
_server = [[MXDRTSPServer alloc] initWithConfiguration:config];
return self;
}
- (NSURL *)startAndReturnError:(NSError **)error {
if (![self.server start:error]) { return nil; }
return self.server.streamURL;
}
- (void)stop { [self.server stop]; }
- (void)appendVideoFrame:(CVImageBufferRef)imageBuffer time:(CMTime)time {
[self.server appendVideoFrame:imageBuffer presentationTime:time];
}
- (void)appendAudioBuffer:(AVAudioPCMBuffer *)audioBuffer {
[self.server appendAudioBuffer:audioBuffer];
}
@end
RTSP and ONVIF
RTSP and ONVIF
MXDOnvifClient.h
ONVIF discovery and device client.
Enums
MXDOnvifClientErrorCode
MXDOnvifClientErrorInvalidResponse = 1
MXDOnvifClientErrorMissingServiceURL = 2
MXDOnvifClientErrorSOAPFault = 3
Typedefs
typedef void (^MXDOnvifCompletion)(id _Nullable result, NSError *_Nullable error);
typedef void (^MXDOnvifDiscoveryCompletion)(NSArray<NSDictionary<NSString *, id> *> *devices, NSError *_Nullable error);
MXDOnvifClient
Name Declaration Details deviceServiceURL@property (nonatomic, readonly) NSURL *deviceServiceURL;Endpoint or file URL used by the component. username@property (nonatomic, copy, readonly, nullable) NSString *username;Public configuration or state exposed by this API. password@property (nonatomic, copy, readonly, nullable) NSString *password;Public configuration or state exposed by this API. session@property (nonatomic, strong) NSURLSession *session;Public configuration or state exposed by this API. timeout@property (nonatomic) NSTimeInterval timeout;Network transport reliability and buffering configuration.
initWithDeviceServiceURL:username:password:
- (instancetype)initWithDeviceServiceURL:(NSURL *)deviceServiceURL username:(nullable NSString *)username password:(nullable NSString *)password NS_DESIGNATED_INITIALIZER;
Kind Instance method Return instancetypeDetails Initializes the receiver for initWithDeviceServiceURL username password. Use this to provide required URLs, ports, names, peer connections, or configuration objects. Parameters initWithDeviceServiceURL (NSURL *, deviceServiceURL); username (nullable NSString *, username); password (nullable NSString *, password)Swift usage let value = MXDOnvifClient(initWithDeviceServiceURL: url, username: "value", password: "value")
discoverDevicesWithTimeout:interface:completion:
+ (void)discoverDevicesWithTimeout:(NSTimeInterval)timeout interface:(nullable NSString *)interfaceAddress completion:(MXDOnvifDiscoveryCompletion)completion;
Kind Class method Return voidDetails Creates, discovers, or returns shared information for discoverDevicesWithTimeout interface completion. Call this on the class before creating or configuring an instance. Parameters discoverDevicesWithTimeout (NSTimeInterval, timeout); interface (nullable NSString *, interfaceAddress); completion (MXDOnvifDiscoveryCompletion, completion)Swift usage MXDOnvifClient.discoverDevicesWithTimeout(discoverDevicesWithTimeout: 0.0, interface: "value", completion: completion)
getDeviceInformationWithCompletion:
- (void)getDeviceInformationWithCompletion:(MXDOnvifCompletion)completion;
Kind Instance method Return voidDetails Performs the getDeviceInformationWithCompletion operation on this MiXiD component. Parameters getDeviceInformationWithCompletion (MXDOnvifCompletion, completion)Swift usage instance.getDeviceInformationWithCompletion(getDeviceInformationWithCompletion: completion)
getCapabilitiesWithCompletion:
- (void)getCapabilitiesWithCompletion:(MXDOnvifCompletion)completion;
Kind Instance method Return voidDetails Performs the getCapabilitiesWithCompletion operation on this MiXiD component. Parameters getCapabilitiesWithCompletion (MXDOnvifCompletion, completion)Swift usage instance.getCapabilitiesWithCompletion(getCapabilitiesWithCompletion: completion)
getProfilesWithCompletion:
- (void)getProfilesWithCompletion:(MXDOnvifCompletion)completion;
Kind Instance method Return voidDetails Performs the getProfilesWithCompletion operation on this MiXiD component. Parameters getProfilesWithCompletion (MXDOnvifCompletion, completion)Swift usage instance.getProfilesWithCompletion(getProfilesWithCompletion: completion)
getStreamURIForProfileToken:completion:
- (void)getStreamURIForProfileToken:(NSString *)profileToken completion:(MXDOnvifCompletion)completion;
Kind Instance method Return voidDetails Performs the getStreamURIForProfileToken completion operation on this MiXiD component. Parameters getStreamURIForProfileToken (NSString *, profileToken); completion (MXDOnvifCompletion, completion)Swift usage instance.getStreamURIForProfileToken(getStreamURIForProfileToken: "value", completion: completion)
MXDOnvifServer.h
ONVIF device advertisement server.
MXDOnvifServerConfiguration
Name Declaration Details serviceName@property (nonatomic, copy) NSString *serviceName;Public configuration or state exposed by this API. manufacturer@property (nonatomic, copy) NSString *manufacturer;Public configuration or state exposed by this API. model@property (nonatomic, copy) NSString *model;Public configuration or state exposed by this API. firmwareVersion@property (nonatomic, copy) NSString *firmwareVersion;Public configuration or state exposed by this API. serialNumber@property (nonatomic, copy) NSString *serialNumber;Public configuration or state exposed by this API. hardwareId@property (nonatomic, copy) NSString *hardwareId;Public configuration or state exposed by this API. deviceUUID@property (nonatomic, copy) NSString *deviceUUID;Public configuration or state exposed by this API. servicePort@property (nonatomic) uint16_t servicePort;Public configuration or state exposed by this API.
defaultConfiguration
+ (instancetype)defaultConfiguration;
Kind Class method Return instancetypeDetails Creates, discovers, or returns shared information for defaultConfiguration. Call this on the class before creating or configuring an instance. Parameters No parameters. Swift usage let result = MXDOnvifServerConfiguration.defaultConfiguration()
MXDOnvifServer
Name Declaration Details running@property (nonatomic, readonly, getter=isRunning) BOOL running;Read-only runtime state flag. rtspStreamURL@property (nonatomic, strong, nullable) NSURL *rtspStreamURL;Endpoint or file URL used by the component. deviceServiceURL@property (nonatomic, readonly) NSURL *deviceServiceURL;Endpoint or file URL used by the component. mediaServiceURL@property (nonatomic, readonly) NSURL *mediaServiceURL;Endpoint or file URL used by the component. deviceUUID@property (nonatomic, copy, readonly) NSString *deviceUUID;Public configuration or state exposed by this API.
initWithConfiguration:
- (instancetype)initWithConfiguration:(MXDOnvifServerConfiguration *)configuration NS_DESIGNATED_INITIALIZER;
Kind Instance method Return instancetypeDetails Initializes the receiver for initWithConfiguration. Use this to provide required URLs, ports, names, peer connections, or configuration objects. Parameters initWithConfiguration (MXDOnvifServerConfiguration *, configuration)Swift usage let value = MXDOnvifServer(initWithConfiguration: configuration)
start:
- (BOOL)start:(NSError * _Nullable * _Nullable)error;
Kind Instance method Return BOOLDetails Performs the start operation on this MiXiD component. Parameters start (NSError * _Nullable * _Nullable, error)Swift usage let result = instance.start(start: nil)
stop
- (void)stop;
Kind Instance method Return voidDetails Stops the component and releases or finalizes active workflow resources. Parameters No parameters. Swift usage instance.stop()
MXDRTSPMediaDecoder.h
RTSP media transport and decoder.
MXDRTSPMediaDecoderDelegate Protocol
mediaDecoderDidOutputVideoFrame:presentationTime:
- (void)mediaDecoderDidOutputVideoFrame:(CVImageBufferRef)imageBuffer presentationTime:(CMTime)presentationTime;
Kind Delegate / protocol callback Return voidDetails Callback invoked by MiXiD for mediaDecoderDidOutputVideoFrame presentationTime. Implement this method to observe lifecycle, media output, status, or error events. Parameters mediaDecoderDidOutputVideoFrame (CVImageBufferRef, imageBuffer); presentationTime (CMTime, presentationTime)Swift usage instance.mediaDecoderDidOutputVideoFrame(mediaDecoderDidOutputVideoFrame: imageBuffer, presentationTime: 0.0)
mediaDecoderDidOutputAudioBuffer:whenReady:
- (void)mediaDecoderDidOutputAudioBuffer:(AVAudioPCMBuffer *)audioBuffer whenReady:(AVAudioTime * _Nullable)when;
Kind Delegate / protocol callback Return voidDetails Callback invoked by MiXiD for mediaDecoderDidOutputAudioBuffer whenReady. Implement this method to observe lifecycle, media output, status, or error events. Parameters mediaDecoderDidOutputAudioBuffer (AVAudioPCMBuffer *, audioBuffer); whenReady (AVAudioTime * _Nullable, when)Swift usage instance.mediaDecoderDidOutputAudioBuffer(mediaDecoderDidOutputAudioBuffer: audioBuffer, whenReady: when)
mediaDecoderDidOutputAACAccessUnit:sampleRate:channels:objectType:config:
- (void)mediaDecoderDidOutputAACAccessUnit:(NSData *)accessUnit sampleRate:(Float64)sampleRate channels:(UInt32)channels objectType:(UInt32)objectType config:(NSData * _Nullable)config;
Kind Delegate / protocol callback Return voidDetails Callback invoked by MiXiD for mediaDecoderDidOutputAACAccessUnit sampleRate channels objectType config. Implement this method to observe lifecycle, media output, status, or error events. Parameters mediaDecoderDidOutputAACAccessUnit (NSData *, accessUnit); sampleRate (Float64, sampleRate); channels (UInt32, channels); objectType (UInt32, objectType); config (NSData * _Nullable, config)Swift usage instance.mediaDecoderDidOutputAACAccessUnit(mediaDecoderDidOutputAACAccessUnit: data, sampleRate: 0.0, channels: channels, objectType: objectType, config: data)
mediaDecoderDidFailWithError:
- (void)mediaDecoderDidFailWithError:(NSError *)error;
Kind Delegate / protocol callback Return voidDetails Callback invoked by MiXiD for mediaDecoderDidFailWithError. Implement this method to observe lifecycle, media output, status, or error events. Parameters mediaDecoderDidFailWithError (NSError *, error)Swift usage instance.mediaDecoderDidFailWithError(mediaDecoderDidFailWithError: nil)
mediaDecoderDidFinish
- (void)mediaDecoderDidFinish;
Kind Delegate / protocol callback Return voidDetails Callback invoked by MiXiD for mediaDecoderDidFinish. Implement this method to observe lifecycle, media output, status, or error events. Parameters No parameters. Swift usage instance.mediaDecoderDidFinish()
MXDRTSPMediaDecoder
Name Declaration Details delegate@property (nonatomic, weak, nullable) id<MXDRTSPMediaDecoderDelegate> delegate;Receives lifecycle, media output, status, or error callbacks.
initWithURL:
- (instancetype)initWithURL:(NSURL *)url;
Kind Instance method Return instancetypeDetails Initializes the receiver for initWithURL. Use this to provide required URLs, ports, names, peer connections, or configuration objects. Parameters initWithURL (NSURL *, url)Swift usage let value = MXDRTSPMediaDecoder(initWithURL: url)
startDecoding
- (void)startDecoding;
Kind Instance method Return voidDetails Performs the startDecoding operation on this MiXiD component. Parameters No parameters. Swift usage instance.startDecoding()
pause
- (void)pause;
Kind Instance method Return voidDetails Pauses playback while keeping the object available for a later resume. Parameters No parameters. Swift usage instance.pause()
resume
- (void)resume;
Kind Instance method Return voidDetails Performs the resume operation on this MiXiD component. Parameters No parameters. Swift usage instance.resume()
stop
- (void)stop;
Kind Instance method Return voidDetails Stops the component and releases or finalizes active workflow resources. Parameters No parameters. Swift usage instance.stop()
MXDRTSPPlayerView.h
RTSP playback component.
MXDRTSPPlayerViewOutputDelegate Protocol
playerViewDidOutputVideoFrame:presentationTime:
- (void)playerViewDidOutputVideoFrame:(CVImageBufferRef)imageBuffer presentationTime:(CMTime)presentationTime;
Kind Delegate / protocol callback Return voidDetails Callback invoked by MiXiD for playerViewDidOutputVideoFrame presentationTime. Implement this method to observe lifecycle, media output, status, or error events. Parameters playerViewDidOutputVideoFrame (CVImageBufferRef, imageBuffer); presentationTime (CMTime, presentationTime)Swift usage instance.playerViewDidOutputVideoFrame(playerViewDidOutputVideoFrame: imageBuffer, presentationTime: 0.0)
playerViewDidOutputAudioBuffer:whenReady:
- (void)playerViewDidOutputAudioBuffer:(AVAudioPCMBuffer *)audioBuffer whenReady:(AVAudioTime * _Nullable)when;
Kind Delegate / protocol callback Return voidDetails Callback invoked by MiXiD for playerViewDidOutputAudioBuffer whenReady. Implement this method to observe lifecycle, media output, status, or error events. Parameters playerViewDidOutputAudioBuffer (AVAudioPCMBuffer *, audioBuffer); whenReady (AVAudioTime * _Nullable, when)Swift usage instance.playerViewDidOutputAudioBuffer(playerViewDidOutputAudioBuffer: audioBuffer, whenReady: when)
playerViewDidOutputAACAccessUnit:sampleRate:channels:objectType:config:
- (void)playerViewDidOutputAACAccessUnit:(NSData *)accessUnit sampleRate:(Float64)sampleRate channels:(UInt32)channels objectType:(UInt32)objectType config:(NSData * _Nullable)config;
Kind Delegate / protocol callback Return voidDetails Callback invoked by MiXiD for playerViewDidOutputAACAccessUnit sampleRate channels objectType config. Implement this method to observe lifecycle, media output, status, or error events. Parameters playerViewDidOutputAACAccessUnit (NSData *, accessUnit); sampleRate (Float64, sampleRate); channels (UInt32, channels); objectType (UInt32, objectType); config (NSData * _Nullable, config)Swift usage instance.playerViewDidOutputAACAccessUnit(playerViewDidOutputAACAccessUnit: data, sampleRate: 0.0, channels: channels, objectType: objectType, config: data)
MXDRTSPPlayerView
Name Declaration Details URL@property (nonatomic, copy, nullable) NSURL *URL;Endpoint or file URL used by the component. playing@property (nonatomic, assign, readonly, getter=isPlaying) BOOL playing;Public configuration or state exposed by this API. error)@property (nonatomic, copy, nullable) void (^errorHandler)(NSError *error);Public configuration or state exposed by this API. outputDelegate@property (nonatomic, weak, nullable) id<MXDRTSPPlayerViewOutputDelegate> outputDelegate;Receives lifecycle, media output, status, or error callbacks.
init
- (instancetype)init;
Kind Instance method Return instancetypeDetails Initializes the receiver for init. Use this to provide required URLs, ports, names, peer connections, or configuration objects. Parameters No parameters. Swift usage let value = MXDRTSPPlayerView()
initWithURL:
- (instancetype)initWithURL:(NSURL *)url;
Kind Instance method Return instancetypeDetails Initializes the receiver for initWithURL. Use this to provide required URLs, ports, names, peer connections, or configuration objects. Parameters initWithURL (NSURL *, url)Swift usage let value = MXDRTSPPlayerView(initWithURL: url)
play
- (void)play;
Kind Instance method Return voidDetails Begins or resumes playback/rendering for the configured media source. Parameters No parameters. Swift usage instance.play()
pause
- (void)pause;
Kind Instance method Return voidDetails Pauses playback while keeping the object available for a later resume. Parameters No parameters. Swift usage instance.pause()
stop
- (void)stop;
Kind Instance method Return voidDetails Stops the component and releases or finalizes active workflow resources. Parameters No parameters. Swift usage instance.stop()
MXDRTSPServer.h
RTSP output server for local media pipelines.
Enums
MXDRTSPServerVideoCodec
MXDRTSPServerVideoCodecH264 = 0
MXDRTSPServerVideoCodecHEVC = 1
MXDRTSPServerConfiguration
Name Declaration Details streamName@property (nonatomic, copy) NSString *streamName;Public configuration or state exposed by this API. port@property (nonatomic) uint16_t port;Public configuration or state exposed by this API. videoWidth@property (nonatomic) int videoWidth;Video encoding or rendering configuration. videoHeight@property (nonatomic) int videoHeight;Video encoding or rendering configuration. videoBitrate@property (nonatomic) int videoBitrate;Video encoding or rendering configuration. videoFrameRate@property (nonatomic) int videoFrameRate;Public configuration or state exposed by this API. videoRotationDegrees@property (nonatomic) int videoRotationDegrees;Public configuration or state exposed by this API. videoCodec@property (nonatomic) MXDRTSPServerVideoCodec videoCodec;Public configuration or state exposed by this API. audioBitrate@property (nonatomic) int audioBitrate;Video encoding or rendering configuration. audioSampleRate@property (nonatomic) Float64 audioSampleRate;Audio routing, mute, level, or gain configuration. audioChannelCount@property (nonatomic) UInt32 audioChannelCount;Audio routing, mute, level, or gain configuration.
defaultConfiguration
+ (instancetype)defaultConfiguration;
Kind Class method Return instancetypeDetails Creates, discovers, or returns shared information for defaultConfiguration. Call this on the class before creating or configuring an instance. Parameters No parameters. Swift usage let result = MXDRTSPServerConfiguration.defaultConfiguration()
MXDRTSPServer
Name Declaration Details running@property (nonatomic, readonly, getter=isRunning) BOOL running;Read-only runtime state flag. streamURL@property (nonatomic, readonly) NSURL *streamURL;Endpoint or file URL used by the component.
initWithConfiguration:
- (instancetype)initWithConfiguration:(MXDRTSPServerConfiguration *)configuration NS_DESIGNATED_INITIALIZER;
Kind Instance method Return instancetypeDetails Initializes the receiver for initWithConfiguration. Use this to provide required URLs, ports, names, peer connections, or configuration objects. Parameters initWithConfiguration (MXDRTSPServerConfiguration *, configuration)Swift usage let value = MXDRTSPServer(initWithConfiguration: configuration)
start:
- (BOOL)start:(NSError * _Nullable * _Nullable)error;
Kind Instance method Return BOOLDetails Performs the start operation on this MiXiD component. Parameters start (NSError * _Nullable * _Nullable, error)Swift usage let result = instance.start(start: nil)
stop
- (void)stop;
Kind Instance method Return voidDetails Stops the component and releases or finalizes active workflow resources. Parameters No parameters. Swift usage instance.stop()
appendVideoFrame:presentationTime:
- (void)appendVideoFrame:(CVImageBufferRef)imageBuffer presentationTime:(CMTime)presentationTime;
Kind Instance method Return voidDetails Appends media into the component. Use presentation timestamps and matching stream configuration so downstream encoders, mixers, or recorders stay synchronized. Parameters appendVideoFrame (CVImageBufferRef, imageBuffer); presentationTime (CMTime, presentationTime)Swift usage instance.appendVideoFrame(appendVideoFrame: imageBuffer, presentationTime: 0.0)
appendAudioBuffer:
- (void)appendAudioBuffer:(AVAudioPCMBuffer *)audioBuffer;
Kind Instance method Return voidDetails Appends media into the component. Use presentation timestamps and matching stream configuration so downstream encoders, mixers, or recorders stay synchronized. Parameters appendAudioBuffer (AVAudioPCMBuffer *, audioBuffer)Swift usage instance.appendAudioBuffer(appendAudioBuffer: audioBuffer)
appendAACAccessUnit:sampleRate:channels:objectType:config:
- (void)appendAACAccessUnit:(NSData *)accessUnit sampleRate:(Float64)sampleRate channels:(UInt32)channels objectType:(UInt32)objectType config:(NSData * _Nullable)config;
Kind Instance method Return voidDetails Appends media into the component. Use presentation timestamps and matching stream configuration so downstream encoders, mixers, or recorders stay synchronized. Parameters appendAACAccessUnit (NSData *, accessUnit); sampleRate (Float64, sampleRate); channels (UInt32, channels); objectType (UInt32, objectType); config (NSData * _Nullable, config)Swift usage instance.appendAACAccessUnit(appendAACAccessUnit: data, sampleRate: 0.0, channels: channels, objectType: objectType, config: data)
Back to API Reference index