MiXiD API Reference: RTSP and ONVIF

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

NameDeclarationDetails
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;
KindInstance method
Returninstancetype
DetailsInitializes the receiver for initWithDeviceServiceURL username password. Use this to provide required URLs, ports, names, peer connections, or configuration objects.
ParametersinitWithDeviceServiceURL (NSURL *, deviceServiceURL); username (nullable NSString *, username); password (nullable NSString *, password)
Swift usagelet value = MXDOnvifClient(initWithDeviceServiceURL: url, username: "value", password: "value")
discoverDevicesWithTimeout:interface:completion:
+ (void)discoverDevicesWithTimeout:(NSTimeInterval)timeout interface:(nullable NSString *)interfaceAddress completion:(MXDOnvifDiscoveryCompletion)completion;
KindClass method
Returnvoid
DetailsCreates, discovers, or returns shared information for discoverDevicesWithTimeout interface completion. Call this on the class before creating or configuring an instance.
ParametersdiscoverDevicesWithTimeout (NSTimeInterval, timeout); interface (nullable NSString *, interfaceAddress); completion (MXDOnvifDiscoveryCompletion, completion)
Swift usageMXDOnvifClient.discoverDevicesWithTimeout(discoverDevicesWithTimeout: 0.0, interface: "value", completion: completion)
getDeviceInformationWithCompletion:
- (void)getDeviceInformationWithCompletion:(MXDOnvifCompletion)completion;
KindInstance method
Returnvoid
DetailsPerforms the getDeviceInformationWithCompletion operation on this MiXiD component.
ParametersgetDeviceInformationWithCompletion (MXDOnvifCompletion, completion)
Swift usageinstance.getDeviceInformationWithCompletion(getDeviceInformationWithCompletion: completion)
getCapabilitiesWithCompletion:
- (void)getCapabilitiesWithCompletion:(MXDOnvifCompletion)completion;
KindInstance method
Returnvoid
DetailsPerforms the getCapabilitiesWithCompletion operation on this MiXiD component.
ParametersgetCapabilitiesWithCompletion (MXDOnvifCompletion, completion)
Swift usageinstance.getCapabilitiesWithCompletion(getCapabilitiesWithCompletion: completion)
getProfilesWithCompletion:
- (void)getProfilesWithCompletion:(MXDOnvifCompletion)completion;
KindInstance method
Returnvoid
DetailsPerforms the getProfilesWithCompletion operation on this MiXiD component.
ParametersgetProfilesWithCompletion (MXDOnvifCompletion, completion)
Swift usageinstance.getProfilesWithCompletion(getProfilesWithCompletion: completion)
getStreamURIForProfileToken:completion:
- (void)getStreamURIForProfileToken:(NSString *)profileToken completion:(MXDOnvifCompletion)completion;
KindInstance method
Returnvoid
DetailsPerforms the getStreamURIForProfileToken completion operation on this MiXiD component.
ParametersgetStreamURIForProfileToken (NSString *, profileToken); completion (MXDOnvifCompletion, completion)
Swift usageinstance.getStreamURIForProfileToken(getStreamURIForProfileToken: "value", completion: completion)

MXDOnvifServer.h

ONVIF device advertisement server.

MXDOnvifServerConfiguration

NameDeclarationDetails
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;
KindClass method
Returninstancetype
DetailsCreates, discovers, or returns shared information for defaultConfiguration. Call this on the class before creating or configuring an instance.
ParametersNo parameters.
Swift usagelet result = MXDOnvifServerConfiguration.defaultConfiguration()

MXDOnvifServer

NameDeclarationDetails
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;
KindInstance method
Returninstancetype
DetailsInitializes the receiver for initWithConfiguration. Use this to provide required URLs, ports, names, peer connections, or configuration objects.
ParametersinitWithConfiguration (MXDOnvifServerConfiguration *, configuration)
Swift usagelet value = MXDOnvifServer(initWithConfiguration: configuration)
start:
- (BOOL)start:(NSError * _Nullable * _Nullable)error;
KindInstance method
ReturnBOOL
DetailsPerforms the start operation on this MiXiD component.
Parametersstart (NSError * _Nullable * _Nullable, error)
Swift usagelet result = instance.start(start: nil)
stop
- (void)stop;
KindInstance method
Returnvoid
DetailsStops the component and releases or finalizes active workflow resources.
ParametersNo parameters.
Swift usageinstance.stop()

MXDRTSPMediaDecoder.h

RTSP media transport and decoder.

MXDRTSPMediaDecoderDelegate Protocol

mediaDecoderDidOutputVideoFrame:presentationTime:
- (void)mediaDecoderDidOutputVideoFrame:(CVImageBufferRef)imageBuffer presentationTime:(CMTime)presentationTime;
KindDelegate / protocol callback
Returnvoid
DetailsCallback invoked by MiXiD for mediaDecoderDidOutputVideoFrame presentationTime. Implement this method to observe lifecycle, media output, status, or error events.
ParametersmediaDecoderDidOutputVideoFrame (CVImageBufferRef, imageBuffer); presentationTime (CMTime, presentationTime)
Swift usageinstance.mediaDecoderDidOutputVideoFrame(mediaDecoderDidOutputVideoFrame: imageBuffer, presentationTime: 0.0)
mediaDecoderDidOutputAudioBuffer:whenReady:
- (void)mediaDecoderDidOutputAudioBuffer:(AVAudioPCMBuffer *)audioBuffer whenReady:(AVAudioTime * _Nullable)when;
KindDelegate / protocol callback
Returnvoid
DetailsCallback invoked by MiXiD for mediaDecoderDidOutputAudioBuffer whenReady. Implement this method to observe lifecycle, media output, status, or error events.
ParametersmediaDecoderDidOutputAudioBuffer (AVAudioPCMBuffer *, audioBuffer); whenReady (AVAudioTime * _Nullable, when)
Swift usageinstance.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;
KindDelegate / protocol callback
Returnvoid
DetailsCallback invoked by MiXiD for mediaDecoderDidOutputAACAccessUnit sampleRate channels objectType config. Implement this method to observe lifecycle, media output, status, or error events.
ParametersmediaDecoderDidOutputAACAccessUnit (NSData *, accessUnit); sampleRate (Float64, sampleRate); channels (UInt32, channels); objectType (UInt32, objectType); config (NSData * _Nullable, config)
Swift usageinstance.mediaDecoderDidOutputAACAccessUnit(mediaDecoderDidOutputAACAccessUnit: data, sampleRate: 0.0, channels: channels, objectType: objectType, config: data)
mediaDecoderDidFailWithError:
- (void)mediaDecoderDidFailWithError:(NSError *)error;
KindDelegate / protocol callback
Returnvoid
DetailsCallback invoked by MiXiD for mediaDecoderDidFailWithError. Implement this method to observe lifecycle, media output, status, or error events.
ParametersmediaDecoderDidFailWithError (NSError *, error)
Swift usageinstance.mediaDecoderDidFailWithError(mediaDecoderDidFailWithError: nil)
mediaDecoderDidFinish
- (void)mediaDecoderDidFinish;
KindDelegate / protocol callback
Returnvoid
DetailsCallback invoked by MiXiD for mediaDecoderDidFinish. Implement this method to observe lifecycle, media output, status, or error events.
ParametersNo parameters.
Swift usageinstance.mediaDecoderDidFinish()

MXDRTSPMediaDecoder

NameDeclarationDetails
delegate@property (nonatomic, weak, nullable) id<MXDRTSPMediaDecoderDelegate> delegate;Receives lifecycle, media output, status, or error callbacks.
initWithURL:
- (instancetype)initWithURL:(NSURL *)url;
KindInstance method
Returninstancetype
DetailsInitializes the receiver for initWithURL. Use this to provide required URLs, ports, names, peer connections, or configuration objects.
ParametersinitWithURL (NSURL *, url)
Swift usagelet value = MXDRTSPMediaDecoder(initWithURL: url)
startDecoding
- (void)startDecoding;
KindInstance method
Returnvoid
DetailsPerforms the startDecoding operation on this MiXiD component.
ParametersNo parameters.
Swift usageinstance.startDecoding()
pause
- (void)pause;
KindInstance method
Returnvoid
DetailsPauses playback while keeping the object available for a later resume.
ParametersNo parameters.
Swift usageinstance.pause()
resume
- (void)resume;
KindInstance method
Returnvoid
DetailsPerforms the resume operation on this MiXiD component.
ParametersNo parameters.
Swift usageinstance.resume()
stop
- (void)stop;
KindInstance method
Returnvoid
DetailsStops the component and releases or finalizes active workflow resources.
ParametersNo parameters.
Swift usageinstance.stop()

MXDRTSPPlayerView.h

RTSP playback component.

MXDRTSPPlayerViewOutputDelegate Protocol

playerViewDidOutputVideoFrame:presentationTime:
- (void)playerViewDidOutputVideoFrame:(CVImageBufferRef)imageBuffer presentationTime:(CMTime)presentationTime;
KindDelegate / protocol callback
Returnvoid
DetailsCallback invoked by MiXiD for playerViewDidOutputVideoFrame presentationTime. Implement this method to observe lifecycle, media output, status, or error events.
ParametersplayerViewDidOutputVideoFrame (CVImageBufferRef, imageBuffer); presentationTime (CMTime, presentationTime)
Swift usageinstance.playerViewDidOutputVideoFrame(playerViewDidOutputVideoFrame: imageBuffer, presentationTime: 0.0)
playerViewDidOutputAudioBuffer:whenReady:
- (void)playerViewDidOutputAudioBuffer:(AVAudioPCMBuffer *)audioBuffer whenReady:(AVAudioTime * _Nullable)when;
KindDelegate / protocol callback
Returnvoid
DetailsCallback invoked by MiXiD for playerViewDidOutputAudioBuffer whenReady. Implement this method to observe lifecycle, media output, status, or error events.
ParametersplayerViewDidOutputAudioBuffer (AVAudioPCMBuffer *, audioBuffer); whenReady (AVAudioTime * _Nullable, when)
Swift usageinstance.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;
KindDelegate / protocol callback
Returnvoid
DetailsCallback invoked by MiXiD for playerViewDidOutputAACAccessUnit sampleRate channels objectType config. Implement this method to observe lifecycle, media output, status, or error events.
ParametersplayerViewDidOutputAACAccessUnit (NSData *, accessUnit); sampleRate (Float64, sampleRate); channels (UInt32, channels); objectType (UInt32, objectType); config (NSData * _Nullable, config)
Swift usageinstance.playerViewDidOutputAACAccessUnit(playerViewDidOutputAACAccessUnit: data, sampleRate: 0.0, channels: channels, objectType: objectType, config: data)

MXDRTSPPlayerView

NameDeclarationDetails
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;
KindInstance method
Returninstancetype
DetailsInitializes the receiver for init. Use this to provide required URLs, ports, names, peer connections, or configuration objects.
ParametersNo parameters.
Swift usagelet value = MXDRTSPPlayerView()
initWithURL:
- (instancetype)initWithURL:(NSURL *)url;
KindInstance method
Returninstancetype
DetailsInitializes the receiver for initWithURL. Use this to provide required URLs, ports, names, peer connections, or configuration objects.
ParametersinitWithURL (NSURL *, url)
Swift usagelet value = MXDRTSPPlayerView(initWithURL: url)
play
- (void)play;
KindInstance method
Returnvoid
DetailsBegins or resumes playback/rendering for the configured media source.
ParametersNo parameters.
Swift usageinstance.play()
pause
- (void)pause;
KindInstance method
Returnvoid
DetailsPauses playback while keeping the object available for a later resume.
ParametersNo parameters.
Swift usageinstance.pause()
stop
- (void)stop;
KindInstance method
Returnvoid
DetailsStops the component and releases or finalizes active workflow resources.
ParametersNo parameters.
Swift usageinstance.stop()

MXDRTSPServer.h

RTSP output server for local media pipelines.

Enums

MXDRTSPServerVideoCodec

  • MXDRTSPServerVideoCodecH264 = 0
  • MXDRTSPServerVideoCodecHEVC = 1

MXDRTSPServerConfiguration

NameDeclarationDetails
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;
KindClass method
Returninstancetype
DetailsCreates, discovers, or returns shared information for defaultConfiguration. Call this on the class before creating or configuring an instance.
ParametersNo parameters.
Swift usagelet result = MXDRTSPServerConfiguration.defaultConfiguration()

MXDRTSPServer

NameDeclarationDetails
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;
KindInstance method
Returninstancetype
DetailsInitializes the receiver for initWithConfiguration. Use this to provide required URLs, ports, names, peer connections, or configuration objects.
ParametersinitWithConfiguration (MXDRTSPServerConfiguration *, configuration)
Swift usagelet value = MXDRTSPServer(initWithConfiguration: configuration)
start:
- (BOOL)start:(NSError * _Nullable * _Nullable)error;
KindInstance method
ReturnBOOL
DetailsPerforms the start operation on this MiXiD component.
Parametersstart (NSError * _Nullable * _Nullable, error)
Swift usagelet result = instance.start(start: nil)
stop
- (void)stop;
KindInstance method
Returnvoid
DetailsStops the component and releases or finalizes active workflow resources.
ParametersNo parameters.
Swift usageinstance.stop()
appendVideoFrame:presentationTime:
- (void)appendVideoFrame:(CVImageBufferRef)imageBuffer presentationTime:(CMTime)presentationTime;
KindInstance method
Returnvoid
DetailsAppends media into the component. Use presentation timestamps and matching stream configuration so downstream encoders, mixers, or recorders stay synchronized.
ParametersappendVideoFrame (CVImageBufferRef, imageBuffer); presentationTime (CMTime, presentationTime)
Swift usageinstance.appendVideoFrame(appendVideoFrame: imageBuffer, presentationTime: 0.0)
appendAudioBuffer:
- (void)appendAudioBuffer:(AVAudioPCMBuffer *)audioBuffer;
KindInstance method
Returnvoid
DetailsAppends media into the component. Use presentation timestamps and matching stream configuration so downstream encoders, mixers, or recorders stay synchronized.
ParametersappendAudioBuffer (AVAudioPCMBuffer *, audioBuffer)
Swift usageinstance.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;
KindInstance method
Returnvoid
DetailsAppends media into the component. Use presentation timestamps and matching stream configuration so downstream encoders, mixers, or recorders stay synchronized.
ParametersappendAACAccessUnit (NSData *, accessUnit); sampleRate (Float64, sampleRate); channels (UInt32, channels); objectType (UInt32, objectType); config (NSData * _Nullable, config)
Swift usageinstance.appendAACAccessUnit(appendAACAccessUnit: data, sampleRate: 0.0, channels: channels, objectType: objectType, config: data)

Back to API Reference index