ONVIF::...diaPort(3)
π ONVIF::Media::Interfaces::Media::MediaPort π
okay so bestie, this is the manual page for ONVIF::Media::Interfaces::Media::MediaPort π
the header shows ONVIF::...diaPort(3) β it's giving truncated icon energy, but the full name is the one up there. This is the SOAP interface for the Media web service, and we're gonna walk through it together, no cap β¨
πΈ NAME πΈ
ONVIF::Media::Interfaces::Media::MediaPort β SOAP Interface for the Media Web Service π
π¦ SYNOPSIS π¦
use ONVIF::Media::Interfaces::Media::MediaPort;
my $interface = ONVIF::Media::Interfaces::Media::MediaPort->new();
my $response;
$response = $interface->GetServiceCapabilities();
$response = $interface->GetVideoSources();
$response = $interface->GetAudioSources();
$response = $interface->GetAudioOutputs();
$response = $interface->CreateProfile();
$response = $interface->GetProfile();
$response = $interface->GetProfiles();
$response = $interface->AddVideoEncoderConfiguration();
$response = $interface->AddVideoSourceConfiguration();
$response = $interface->AddAudioEncoderConfiguration();
$response = $interface->AddAudioSourceConfiguration();
$response = $interface->AddPTZConfiguration();
$response = $interface->AddVideoAnalyticsConfiguration();
$response = $interface->AddMetadataConfiguration();
$response = $interface->AddAudioOutputConfiguration();
$response = $interface->AddAudioDecoderConfiguration();
$response = $interface->RemoveVideoEncoderConfiguration();
$response = $interface->RemoveVideoSourceConfiguration();
$response = $interface->RemoveAudioEncoderConfiguration();
$response = $interface->RemoveAudioSourceConfiguration();
$response = $interface->RemovePTZConfiguration();
$response = $interface->RemoveVideoAnalyticsConfiguration();
$response = $interface->RemoveMetadataConfiguration();
$response = $interface->RemoveAudioOutputConfiguration();
$response = $interface->RemoveAudioDecoderConfiguration();
$response = $interface->DeleteProfile();
$response = $interface->GetVideoSourceConfigurations();
$response = $interface->GetVideoEncoderConfigurations();
$response = $interface->GetAudioSourceConfigurations();
$response = $interface->GetAudioEncoderConfigurations();
$response = $interface->GetVideoAnalyticsConfigurations();
$response = $interface->GetMetadataConfigurations();
$response = $interface->GetAudioOutputConfigurations();
$response = $interface->GetAudioDecoderConfigurations();
$response = $interface->GetVideoSourceConfiguration();
$response = $interface->GetVideoEncoderConfiguration();
$response = $interface->GetAudioSourceConfiguration();
$response = $interface->GetAudioEncoderConfiguration();
$response = $interface->GetVideoAnalyticsConfiguration();
$response = $interface->GetMetadataConfiguration();
$response = $interface->GetAudioOutputConfiguration();
$response = $interface->GetAudioDecoderConfiguration();
$response = $interface->GetCompatibleVideoEncoderConfigurations();
$response = $interface->GetCompatibleVideoSourceConfigurations();
$response = $interface->GetCompatibleAudioEncoderConfigurations();
$response = $interface->GetCompatibleAudioSourceConfigurations();
$response = $interface->GetCompatibleVideoAnalyticsConfigurations();
$response = $interface->GetCompatibleMetadataConfigurations();
$response = $interface->GetCompatibleAudioOutputConfigurations();
$response = $interface->GetCompatibleAudioDecoderConfigurations();
$response = $interface->SetVideoSourceConfiguration();
$response = $interface->SetVideoEncoderConfiguration();
$response = $interface->SetAudioSourceConfiguration();
$response = $interface->SetAudioEncoderConfiguration();
$response = $interface->SetVideoAnalyticsConfiguration();
$response = $interface->SetMetadataConfiguration();
$response = $interface->SetAudioOutputConfiguration();
$response = $interface->SetAudioDecoderConfiguration();
$response = $interface->GetVideoSourceConfigurationOptions();
$response = $interface->GetVideoEncoderConfigurationOptions();
$response = $interface->GetAudioSourceConfigurationOptions();
$response = $interface->GetAudioEncoderConfigurationOptions();
$response = $interface->GetMetadataConfigurationOptions();
$response = $interface->GetAudioOutputConfigurationOptions();
$response = $interface->GetAudioDecoderConfigurationOptions();
$response = $interface->GetGuaranteedNumberOfVideoEncoderInstances();
$response = $interface->GetStreamUri();
$response = $interface->StartMulticastStreaming();
$response = $interface->StopMulticastStreaming();
$response = $interface->SetSynchronizationPoint();
$response = $interface->GetSnapshotUri();
$response = $interface->GetVideoSourceModes();
$response = $interface->SetVideoSourceMode();
$response = $interface->GetOSDs();
$response = $interface->GetOSD();
$response = $interface->GetOSDOptions();
$response = $interface->SetOSD();
$response = $interface->CreateOSD();
$response = $interface->DeleteOSD();
π DESCRIPTION π
SOAP Interface for the Media web service located at http://www.examples.com/Media/ π
β¨ SERVICE Media β¨
π Port MediaPort π
π METHODS π
π§ General methods
new
Constructor, bestie π«Ά
All arguments are forwarded to SOAP::WSDL::Client.
π¦ SOAP Service methods
Method synopsis is displayed with hash refs as parameters β that's the vibe here.
The commented class names in the method's parameters denote that objects of the corresponding class can be passed instead of the marked hash ref. cute, right? π
You may pass any combination of objects, hash and list refs to these methods, as long as you meet the structure.
List items (i.e. multiple occurrences) are not displayed in the synopsis. You may generally pass a list ref of hash refs (or objects) instead of a hash ref β this may result in invalid XML if used improperly, though. so like, don't do that wrong, okay? π
Note that SOAP::WSDL always expects list references at maximum depth position.
XML attributes are not displayed in this synopsis and cannot be set using hash refs. See the respective class' documentation for additional information.
GetServiceCapabilities
Returns the capabilities of the media service. The result is returned in a typed answer.
Returns a ONVIF::Media::Elements::GetServiceCapabilitiesResponse object.
$response = $interface->GetServiceCapabilities( {
},,
);
GetVideoSources
This command lists all available physical video inputs of the device.
Returns a ONVIF::Media::Elements::GetVideoSourcesResponse object.
$response = $interface->GetVideoSources( {
},,
);
GetAudioSources
This command lists all available physical audio inputs of the device.
Returns a ONVIF::Media::Elements::GetAudioSourcesResponse object.
$response = $interface->GetAudioSources( {
},,
);
GetAudioOutputs
This command lists all available physical audio outputs of the device.
Returns a ONVIF::Media::Elements::GetAudioOutputsResponse object.
$response = $interface->GetAudioOutputs( {
},,
);
CreateProfile
This operation creates a new empty media profile. The media profile shall be created in the device and shall be persistent (remain after reboot). A created profile shall be deletable and a device shall set the "fixed" attribute to false in the returned Profile.
Returns a ONVIF::Media::Elements::CreateProfileResponse object.
$response = $interface->CreateProfile( {
Name => $some_value, # Name
Token => $some_value, # ReferenceToken
},,
);
GetProfile
If the profile token is already known, a profile can be fetched through the GetProfile command.
Returns a ONVIF::Media::Elements::GetProfileResponse object.
$response = $interface->GetProfile( {
ProfileToken => $some_value, # ReferenceToken
},,
);
GetProfiles
Any endpoint can ask for the existing media profiles of a device using the GetProfiles command. Pre-configured or dynamically configured profiles can be retrieved using this command. This command lists all configured profiles in a device. The client does not need to know the media profile in order to use the command.
Returns a ONVIF::Media::Elements::GetProfilesResponse object.
$response = $interface->GetProfiles( {
},,
);
AddVideoEncoderConfiguration
This operation adds a VideoEncoderConfiguration to an existing media profile. If a configuration exists in the media profile, it will be replaced. The change shall be persistent. A device shall support adding a compatible VideoEncoderConfiguration to a Profile containing a VideoSourceConfiguration and shall support streaming video data of such a profile.
Returns a ONVIF::Media::Elements::AddVideoEncoderConfigurationResponse object.
$response = $interface->AddVideoEncoderConfiguration( {
ProfileToken => $some_value, # ReferenceToken
ConfigurationToken => $some_value, # ReferenceToken
},,
);
AddVideoSourceConfiguration
This operation adds a VideoSourceConfiguration to an existing media profile. If such a configuration exists in the media profile, it will be replaced. The change shall be persistent.
Returns a ONVIF::Media::Elements::AddVideoSourceConfigurationResponse object.
$response = $interface->AddVideoSourceConfiguration( {
ProfileToken => $some_value, # ReferenceToken
ConfigurationToken => $some_value, # ReferenceToken
},,
);
AddAudioEncoderConfiguration
This operation adds an AudioEncoderConfiguration to an existing media profile. If a configuration exists in the media profile, it will be replaced. The change shall be persistent. A device shall support adding a compatible AudioEncoderConfiguration to a profile containing an AudioSourceConfiguration and shall support streaming audio data of such a profile.
Returns a ONVIF::Media::Elements::AddAudioEncoderConfigurationResponse object.
$response = $interface->AddAudioEncoderConfiguration( {
ProfileToken => $some_value, # ReferenceToken
ConfigurationToken => $some_value, # ReferenceToken
},,
);
AddAudioSourceConfiguration
This operation adds an AudioSourceConfiguration to an existing media profile. If a configuration exists in the media profile, it will be replaced. The change shall be persistent.
Returns a ONVIF::Media::Elements::AddAudioSourceConfigurationResponse object.
$response = $interface->AddAudioSourceConfiguration( {
ProfileToken => $some_value, # ReferenceToken
ConfigurationToken => $some_value, # ReferenceToken
},,
);
AddPTZConfiguration
This operation adds a PTZConfiguration to an existing media profile. If a configuration exists in the media profile, it will be replaced. The change shall be persistent. Adding a PTZConfiguration to a media profile means that streams using that media profile can contain PTZ status (in the metadata), and that the media profile can be used for controlling PTZ movement.
Returns a ONVIF::Media::Elements::AddPTZConfigurationResponse object.
$response = $interface->AddPTZConfiguration( {
ProfileToken => $some_value, # ReferenceToken
ConfigurationToken => $some_value, # ReferenceToken
},,
);
π
AddVideoAnalyticsConfiguration
Okay so this one drops a VideoAnalytics configuration onto a media profile you already have. And bestie, heads up: if there's already one chilling in that profile, it gets replaced. Like, gone. And the change shall be persistent β that's not a maybe, that's forever.
Adding a VideoAnalyticsConfiguration to a media profile means streams using that profile can carry video analytics data (inside the metadata) as defined by the configuration reference you handed over. Sounds iconic, right? But here's the tea π β a profile that has only a video analytics configuration and no video source configuration is incomplete. So a client should first add a video source configuration to the profile before adding a video analytics configuration. And yes, the device can deny adding a video analytics configuration before a video source configuration exists. Rude but fair.
Returns a ONVIF::Media::Elements::AddVideoAnalyticsConfigurationResponse object.
$response = $interface->AddVideoAnalyticsConfiguration( {
ProfileToken => $some_value, # ReferenceToken
ConfigurationToken => $some_value, # ReferenceToken
},,
);
πΈ AddMetadataConfiguration
This operation adds a Metadata configuration to an existing media profile. Same rule as always: if a configuration already exists in the media profile, it will be replaced, and the change shall be persistent. β¨
Adding a MetadataConfiguration to a Profile means streams using that profile contain metadata. And what's in that metadata? Events, PTZ status, and/or video analytics data. It's giving variety pack π.
Returns a ONVIF::Media::Elements::AddMetadataConfigurationResponse object.
$response = $interface->AddMetadataConfiguration( {
ProfileToken => $some_value, # ReferenceToken
ConfigurationToken => $some_value, # ReferenceToken
},,
);
π AddAudioOutputConfiguration
Adds an AudioOutputConfiguration to an existing media profile. Configuration already there? Replaced. The change shall be persistent. That's the whole vibe π .
Returns a ONVIF::Media::Elements::AddAudioOutputConfigurationResponse object.
$response = $interface->AddAudioOutputConfiguration( {
ProfileToken => $some_value, # ReferenceToken
ConfigurationToken => $some_value, # ReferenceToken
},,
);
π¦ AddAudioDecoderConfiguration
Adds an AudioDecoderConfiguration to an existing media profile. If a configuration exists in the media profile, it shall be replaced, and the change shall be persistent. Same energy, different config π₯.
Returns a ONVIF::Media::Elements::AddAudioDecoderConfigurationResponse object.
$response = $interface->AddAudioDecoderConfiguration( {
ProfileToken => $some_value, # ReferenceToken
ConfigurationToken => $some_value, # ReferenceToken
},,
);
π RemoveVideoEncoderConfiguration
Removes a VideoEncoderConfiguration from an existing media profile. And here's the chill part β if the media profile doesn't contain a VideoEncoderConfiguration, the operation just... has no effect. No drama, no error, it just shrugs π. The removal shall be persistent.
Returns a ONVIF::Media::Elements::RemoveVideoEncoderConfigurationResponse object.
$response = $interface->RemoveVideoEncoderConfiguration( {
ProfileToken => $some_value, # ReferenceToken
},,
);
π RemoveVideoSourceConfiguration
Removes a VideoSourceConfiguration from an existing media profile. If the media profile doesn't contain a VideoSourceConfiguration, the operation has no effect. The removal shall be persistent.
Now this is the important bit, bestie π«Ά: video source configurations should only be removed after removing a VideoEncoderConfiguration from the media profile. Order matters, iykyk.
Returns a ONVIF::Media::Elements::RemoveVideoSourceConfigurationResponse object.
$response = $interface->RemoveVideoSourceConfiguration( {
ProfileToken => $some_value, # ReferenceToken
},,
);
π RemoveAudioEncoderConfiguration
Removes an AudioEncoderConfiguration from an existing media profile. If the media profile doesn't contain an AudioEncoderConfiguration, the operation has no effect. The removal shall be persistent.
Returns a ONVIF::Media::Elements::RemoveAudioEncoderConfigurationResponse object.
$response = $interface->RemoveAudioEncoderConfiguration( {
ProfileToken => $some_value, # ReferenceToken
},,
);
π RemoveAudioSourceConfiguration
Removes an AudioSourceConfiguration from an existing media profile. If the media profile doesn't contain an AudioSourceConfiguration, the operation has no effect. The removal shall be persistent.
And the same sequencing rule as the video side π§: audio source configurations should only be removed after removing an AudioEncoderConfiguration from the media profile. Do it out of order and you're on your own, fr fr.
Returns a ONVIF::Media::Elements::RemoveAudioSourceConfigurationResponse object.
$response = $interface->RemoveAudioSourceConfiguration( {
ProfileToken => $some_value, # ReferenceToken
},,
);
β¨ RemovePTZConfiguration
Removes a PTZConfiguration from an existing media profile. If the media profile doesn't contain a PTZConfiguration, the operation has no effect. The removal shall be persistent.
Returns a ONVIF::Media::Elements::RemovePTZConfigurationResponse object.
$response = $interface->RemovePTZConfiguration( {
ProfileToken => $some_value, # ReferenceToken
},,
);
π₯ RemoveVideoAnalyticsConfiguration
Removes a VideoAnalyticsConfiguration from an existing media profile. If the media profile doesn't contain a VideoAnalyticsConfiguration, the operation has no effect. The removal shall be persistent.
Returns a ONVIF::Media::Elements::RemoveVideoAnalyticsConfigurationResponse object.
$response = $interface->RemoveVideoAnalyticsConfiguration( {
ProfileToken => $some_value, # ReferenceToken
},,
);
π RemoveMetadataConfiguration
Removes a MetadataConfiguration from an existing media profile. If the media profile doesn't contain a MetadataConfiguration, the operation has no effect. The removal shall be persistent.
Returns a ONVIF::Media::Elements::RemoveMetadataConfigurationResponse object.
$response = $interface->RemoveMetadataConfiguration( {
ProfileToken => $some_value, # ReferenceToken
},,
);
π§ RemoveAudioOutputConfiguration
Removes an AudioOutputConfiguration from an existing media profile. If the media profile doesn't contain an AudioOutputConfiguration, the operation has no effect. The removal shall be persistent.
Returns a ONVIF::Media::Elements::RemoveAudioOutputConfigurationResponse object.
$response = $interface->RemoveAudioOutputConfiguration( {
ProfileToken => $some_value, # ReferenceToken
},,
);
π RemoveAudioDecoderConfiguration
Removes an AudioDecoderConfiguration from an existing media profile. If the media profile doesn't contain an AudioDecoderConfiguration, the operation has no effect. The removal shall be persistent.
Returns a ONVIF::Media::Elements::RemoveAudioDecoderConfigurationResponse object.
$response = $interface->RemoveAudioDecoderConfiguration( {
ProfileToken => $some_value, # ReferenceToken
},,
);
π DeleteProfile
This one straight-up deletes a profile. And the change shall always be persistent β no takesies backsies, periodt π .
β οΈ Big caveat incoming: deletion of a profile is only possible for non-fixed profiles. Fixed ones are not it. Not happening. π
Returns a ONVIF::Media::Elements::DeleteProfileResponse object.
$response = $interface->DeleteProfile( {
ProfileToken => $some_value, # ReferenceToken
},,
);
π GetVideoSourceConfigurations
Lists all existing video source configurations for a device. And the best part β the client doesn't need to know anything about the video source configurations to use the command. Just vibe and call it π¦.
Returns a ONVIF::Media::Elements::GetVideoSourceConfigurationsResponse object.
$response = $interface->GetVideoSourceConfigurations( {
},,
);
β GetVideoEncoderConfigurations
Lists all existing video encoder configurations of a device. Like, all the configured video encoder configurations in the device. And again, the client need not know anything apriori about the video encoder configurations in order to use the command π
Returns a ONVIF::Media::Elements::GetVideoEncoderConfigurationsResponse object.
$response = $interface->GetVideoEncoderConfigurations( {
},,
);
π GetAudioSourceConfigurations
Lists all existing audio source configurations of a device. This command lists all audio source configurations in a device, and the client need not know anything apriori about the audio source configurations in order to use the command π.
Returns a ONVIF::Media::Elements::GetAudioSourceConfigurationsResponse object.
$response = $interface->GetAudioSourceConfigurations( {
},,
);
πΈ GetAudioEncoderConfigurations
Lists all existing device audio encoder configurations. Client need not know anything apriori about the audio encoder configurations in order to use the command. Slay, honestly β¨.
Returns a ONVIF::Media::Elements::GetAudioEncoderConfigurationsResponse object.
$response = $interface->GetAudioEncoderConfigurations( {
},,
);
π₯ GetVideoAnalyticsConfigurations
Lists all video analytics configurations of a device. This command lists all the configured video analytics in a device, and the client need not know anything apriori about the video analytics in order to use the command.
Returns a ONVIF::Media::Elements::GetVideoAnalyticsConfigurationsResponse object.
$response = $interface->GetVideoAnalyticsConfigurations( {
},,
);
π¦ GetMetadataConfigurations
Lists all existing metadata configurations. The client need not know anything apriori about the metadata in order to use the command. Iconic low-effort energy π«Ά.
Returns a ONVIF::Media::Elements::GetMetadataConfigurationsResponse object.
$response = $interface->GetMetadataConfigurations( {
},,
);
π GetAudioOutputConfigurations
Lists all existing AudioOutputConfigurations of a device. The NVC need not know anything apriori about the audio configurations to use this command. (Yes, that's NVC, not NVT β copying the facts exactly, bestie π .)
Returns a ONVIF::Media::Elements::GetAudioOutputConfigurationsResponse object.
$response = $interface->GetAudioOutputConfigurations( {
},,
);
π GetAudioDecoderConfigurations
Lists all existing AudioDecoderConfigurations of a device. The NVC need not know anything apriori about the audio decoder configurations in order to use this command.
Returns a ONVIF::Media::Elements::GetAudioDecoderConfigurationsResponse object.
$response = $interface->GetAudioDecoderConfigurations( {
},,
);
πΈ GetVideoSourceConfiguration
Okay so if you already have the video source configuration token, you can totally pull the video source configuration with the GetVideoSourceConfiguration command. Token in hand? Configuration out. Slay. β¨
Returns a ONVIF::Media::Elements::GetVideoSourceConfigurationResponse object.
$response = $interface->GetVideoSourceConfiguration( {
ConfigurationToken => $some_value, # ReferenceToken
},,
);
π GetVideoEncoderConfiguration
Same energy, encoder edition: if the video encoder configuration token is already known, the encoder configuration can be fetched through the GetVideoEncoderConfiguration command.
Returns a ONVIF::Media::Elements::GetVideoEncoderConfigurationResponse object.
$response = $interface->GetVideoEncoderConfiguration( {
ConfigurationToken => $some_value, # ReferenceToken
},,
);
π¦ GetAudioSourceConfiguration
The GetAudioSourceConfiguration command fetches the audio source configurations if the audio source configuration token is already known. An
bestie the source text literally just ends that sentence on the word "An" π not me, not my edit, that's just what's in the doc fr fr
Returns a ONVIF::Media::Elements::GetAudioSourceConfigurationResponse object.
$response = $interface->GetAudioSourceConfiguration( {
ConfigurationToken => $some_value, # ReferenceToken
},,
);
π GetAudioEncoderConfiguration
The GetAudioEncoderConfiguration command fetches the encoder configuration if the audio encoder configuration token is known. iykyk, token = configuration π
Returns a ONVIF::Media::Elements::GetAudioEncoderConfigurationResponse object.
$response = $interface->GetAudioEncoderConfiguration( {
ConfigurationToken => $some_value, # ReferenceToken
},,
);
β GetVideoAnalyticsConfiguration
The GetVideoAnalyticsConfiguration command fetches the video analytics configuration if the video analytics token is known.
Returns a ONVIF::Media::Elements::GetVideoAnalyticsConfigurationResponse object.
$response = $interface->GetVideoAnalyticsConfiguration( {
ConfigurationToken => $some_value, # ReferenceToken
},,
);
π GetMetadataConfiguration
The GetMetadataConfiguration command fetches the metadata configuration if the metadata token is known.
Returns a ONVIF::Media::Elements::GetMetadataConfigurationResponse object.
$response = $interface->GetMetadataConfiguration( {
ConfigurationToken => $some_value, # ReferenceToken
},,
);
π GetAudioOutputConfiguration
If the audio output configuration token is already known, the output configuration can be fetched through the GetAudioOutputConfiguration command. We love a token-based fetch, no cap.
Returns a ONVIF::Media::Elements::GetAudioOutputConfigurationResponse object.
$response = $interface->GetAudioOutputConfiguration( {
ConfigurationToken => $some_value, # ReferenceToken
},,
);
π§ GetAudioDecoderConfiguration
If the audio decoder configuration token is already known, the decoder configuration can be fetched through the GetAudioDecoderConfiguration command.
Returns a ONVIF::Media::Elements::GetAudioDecoderConfigurationResponse object.
$response = $interface->GetAudioDecoderConfiguration( {
ConfigurationToken => $some_value, # ReferenceToken
},,
);
π₯ The "Compatible" Era (aka the compatibility-checking girlies)
π GetCompatibleVideoEncoderConfigurations
This operation lists all the video encoder configurations of the device that are compatible with a certain media profile. Each of the returned configurations shall be a valid input parameter for the AddVideoEncoderConfiguration command on the media profile. The result will vary depending on the capabilities, configurations and settings in the device β so like, your mileage is genuinely your device's vibe π«
Returns a ONVIF::Media::Elements::GetCompatibleVideoEncoderConfigurationsResponse object.
$response = $interface->GetCompatibleVideoEncoderConfigurations( {
ProfileToken => $some_value, # ReferenceToken
},,
);
πΈ GetCompatibleVideoSourceConfigurations
This operation requests all the video source configurations of the device that are compatible with a certain media profile. Each of the returned configurations shall be a valid input parameter for the AddVideoSourceConfiguration command on the media profile. The result will vary depending on the capabilities, configurations and settings in the device.
Returns a ONVIF::Media::Elements::GetCompatibleVideoSourceConfigurationsResponse object.
$response = $interface->GetCompatibleVideoSourceConfigurations( {
ProfileToken => $some_value, # ReferenceToken
},,
);
π
GetCompatibleAudioEncoderConfigurations
This operation requests all audio encoder configurations of a device that are compatible with a certain media profile. Each of the returned configurations shall be a valid input parameter for the AddAudioSourceConfiguration command on the media profile. The result varies depending on the capabilities, configurations and settings in the device.
yes it says AddAudioSourceConfiguration in the encoder section, and yes the next one flips them around β I'm not touching it, take it up with the upstream doc π
Returns a ONVIF::Media::Elements::GetCompatibleAudioEncoderConfigurationsResponse object.
$response = $interface->GetCompatibleAudioEncoderConfigurations( {
ProfileToken => $some_value, # ReferenceToken
},,
);
π GetCompatibleAudioSourceConfigurations
This operation requests all audio source configurations of the device that are compatible with a certain media profile. Each of the returned configurations shall be a valid input parameter for the AddAudioEncoderConfiguration command on the media profile. The result varies depending on the capabilities, configurations and settings in the device.
Returns a ONVIF::Media::Elements::GetCompatibleAudioSourceConfigurationsResponse object.
$response = $interface->GetCompatibleAudioSourceConfigurations( {
ProfileToken => $some_value, # ReferenceToken
},,
);
π¦ GetCompatibleVideoAnalyticsConfigurations
This operation requests all video analytic configurations of the device that are compatible with a certain media profile. Each of the returned configurations shall be a valid input parameter for the AddVideoAnalyticsConfiguration command on the media profile. The result varies depending on the capabilities, configurations and settings in the device.
Returns a ONVIF::Media::Elements::GetCompatibleVideoAnalyticsConfigurationsResponse object.
$response = $interface->GetCompatibleVideoAnalyticsConfigurations( {
ProfileToken => $some_value, # ReferenceToken
},,
);
π«Ά GetCompatibleMetadataConfigurations
This operation requests all the metadata configurations of the device that are compatible with a certain media profile. Each of the returned configurations shall be a valid input parameter for the AddMetadataConfiguration command on the media profile. The result varies depending on the capabilities, configurations and settings in the device.
Returns a ONVIF::Media::Elements::GetCompatibleMetadataConfigurationsResponse object.
$response = $interface->GetCompatibleMetadataConfigurations( {
ProfileToken => $some_value, # ReferenceToken
},,
);
π₯ GetCompatibleAudioOutputConfigurations
This command lists all audio output configurations of a device that are compatible with a certain media profile. Each returned configuration shall be a valid input for the AddAudioOutputConfiguration command.
Returns a ONVIF::Media::Elements::GetCompatibleAudioOutputConfigurationsResponse object.
$response = $interface->GetCompatibleAudioOutputConfigurations( {
ProfileToken => $some_value, # ReferenceToken
},,
);
π GetCompatibleAudioDecoderConfigurations
This operation lists all the audio decoder configurations of the device that are compatible with a certain media profile. Each of the returned configurations shall be a valid input parameter for the AddAudioDecoderConfiguration command on the media profile.
Returns a ONVIF::Media::Elements::GetCompatibleAudioDecoderConfigurationsResponse object.
$response = $interface->GetCompatibleAudioDecoderConfigurations( {
ProfileToken => $some_value, # ReferenceToken
},,
);
π Now we're setting things (main character energy incoming)
π SetVideoSourceConfiguration
This operation modifies a video source configuration. The ForcePersistence flag indicates if the changes shall remain after reboot of the device.
Running streams using this configuration may be immediately updated according to the new settings. But bestie, listen β the changes are not guaranteed to take effect unless the client requests a new stream URI and restarts any affected stream. NVC methods for changing a running stream are out of scope for this specification.
β οΈ So like, don't just assume your live stream instantly reshaped itself. New stream URI + restart = the actual safe path. Fr fr.
Returns a ONVIF::Media::Elements::SetVideoSourceConfigurationResponse object.
$response = $interface->SetVideoSourceConfiguration( {
Configuration => { # ONVIF::Media::Types::VideoSourceConfiguration
SourceToken => $some_value, # ReferenceToken
Bounds => ,
Extension => { # ONVIF::Media::Types::VideoSourceConfigurationExtension
Rotate => { # ONVIF::Media::Types::Rotate
Mode => $some_value, # RotateMode
Degree => $some_value, # int
Extension => { # ONVIF::Media::Types::RotateExtension
},
},
Extension => { # ONVIF::Media::Types::VideoSourceConfigurationExtension2
},
},
},
ForcePersistence => $some_value, # boolean
},,
);
π¦ SetVideoEncoderConfiguration
SessionTimeout is provided as a hint for keeping the rtsp session by a device. If necessary the device may adapt parameter values for SessionTimeout elements without returning an error. For the time between keep alive calls the client shall adhere to the timeout value signaled via RTSP. π
Returns a ONVIF::Media::Elements::SetVideoEncoderConfigurationResponse object.
$response = $interface->SetVideoEncoderConfiguration( {
Configuration => { # ONVIF::Media::Types::VideoEncoderConfiguration
Encoding => $some_value, # VideoEncoding
Resolution => { # ONVIF::Media::Types::VideoResolution
Width => $some_value, # int
Height => $some_value, # int
},
Quality => $some_value, # float
RateControl => { # ONVIF::Media::Types::VideoRateControl
FrameRateLimit => $some_value, # int
EncodingInterval => $some_value, # int
BitrateLimit => $some_value, # int
},
MPEG4 => { # ONVIF::Media::Types::Mpeg4Configuration
GovLength => $some_value, # int
Mpeg4Profile => $some_value, # Mpeg4Profile
},
H264 => { # ONVIF::Media::Types::H264Configuration
GovLength => $some_value, # int
H264Profile => $some_value, # H264Profile
},
Multicast => { # ONVIF::Media::Types::MulticastConfiguration
Address => { # ONVIF::Media::Types::IPAddress
Type => $some_value, # IPType
IPv4Address => $some_value, # IPv4Address
IPv6Address => $some_value, # IPv6Address
},
Port => $some_value, # int
TTL => $some_value, # int
AutoStart => $some_value, # boolean
},
SessionTimeout => $some_value, # duration
},
ForcePersistence => $some_value, # boolean
},,
);
π« SetAudioSourceConfiguration
Bestie, this one changes up an audio source configuration β¨. That ForcePersistence flag? It tells you whether the changes are gonna stick around after the device reboots or nah π.
Heads up though, real talk: streams that are already running with this configuration may get updated immediately with the new settings β but it's not a promise, okay? The changes are not guaranteed to take effect unless the client asks for a brand new stream URI and restarts every affected stream. And listen β NVC methods for changing a running stream? Totally out of scope for this specification. Not our problem, not our era π.
Returns a ONVIF::Media::Elements::SetAudioSourceConfigurationResponse object π.
$response = $interface->SetAudioSourceConfiguration( {
Configuration => { # ONVIF::Media::Types::AudioSourceConfiguration
SourceToken => $some_value, # ReferenceToken
},
ForcePersistence => $some_value, # boolean
},,
);
π§ SetAudioEncoderConfiguration
Same vibe, audio encoder edition π. This modifies an audio encoder configuration. ForcePersistence = do these changes survive the reboot or not, your call π.
Running streams using this config may update right away with the new settings β but again, no guarantee, it only really lands once the client requests a new stream URI and restarts the affected streams. NVC methods for swapping out a running stream? Out of scope for this spec, periodt π .
Returns a ONVIF::Media::Elements::SetAudioEncoderConfigurationResponse object β¨.
$response = $interface->SetAudioEncoderConfiguration( {
Configuration => { # ONVIF::Media::Types::AudioEncoderConfiguration
Encoding => $some_value, # AudioEncoding
Bitrate => $some_value, # int
SampleRate => $some_value, # int
Multicast => { # ONVIF::Media::Types::MulticastConfiguration
Address => { # ONVIF::Media::Types::IPAddress
Type => $some_value, # IPType
IPv4Address => $some_value, # IPv4Address
IPv6Address => $some_value, # IPv6Address
},
Port => $some_value, # int
TTL => $some_value, # int
AutoStart => $some_value, # boolean
},
SessionTimeout => $some_value, # duration
},
ForcePersistence => $some_value, # boolean
},,
);
π SetVideoAnalyticsConfiguration
Okay so this command modifies a video analytics configuration π§ . The ForcePersistence flag says whether the changes stay after the device reboots or not.
Here's the lowkey important part π: running streams using this config shall be immediately updated according to the new settings. Like, it's not optional, because otherwise you get inconsistencies between the scene description that the rule engine processes and the notifications coming out of the analytics engine and rule engine β and both of those are referencing the very same video analytics configuration token. Messy. We don't do messy π.
Returns a ONVIF::Media::Elements::SetVideoAnalyticsConfigurationResponse object π¦.
$response = $interface->SetVideoAnalyticsConfiguration( {
Configuration => { # ONVIF::Media::Types::VideoAnalyticsConfiguration
AnalyticsEngineConfiguration => { # ONVIF::Media::Types::AnalyticsEngineConfiguration
AnalyticsModule => { # ONVIF::Media::Types::Config
Parameters => { # ONVIF::Media::Types::ItemList
SimpleItem => ,
ElementItem => {
},
Extension => { # ONVIF::Media::Types::ItemListExtension
},
},
},
Extension => { # ONVIF::Media::Types::AnalyticsEngineConfigurationExtension
},
},
RuleEngineConfiguration => { # ONVIF::Media::Types::RuleEngineConfiguration
Rule => { # ONVIF::Media::Types::Config
Parameters => { # ONVIF::Media::Types::ItemList
SimpleItem => ,
ElementItem => {
},
Extension => { # ONVIF::Media::Types::ItemListExtension
},
},
},
Extension => { # ONVIF::Media::Types::RuleEngineConfigurationExtension
},
},
},
ForcePersistence => $some_value, # boolean
},,
);
πΌ SetMetadataConfiguration
This operation modifies a metadata configuration β¨. ForcePersistence tells you if the changes stay after the device reboots. Oh, and a little special rule just for this one π: changes in the Multicast settings shall always be persistent. No take-backs, no exceptions, they live there now π
.
Running streams using this config may be updated immediately with the new settings β but it's not guaranteed to take effect unless the client requests a new stream URI and restarts all the affected streams. And NVC methods for changing a running stream? Out of scope for this specification, iykyk π.
Returns a ONVIF::Media::Elements::SetMetadataConfigurationResponse object πΈ.
$response = $interface->SetMetadataConfiguration( {
Configuration => { # ONVIF::Media::Types::MetadataConfiguration
PTZStatus => { # ONVIF::Media::Types::PTZFilter
Status => $some_value, # boolean
Position => $some_value, # boolean
},
Analytics => $some_value, # boolean
Multicast => { # ONVIF::Media::Types::MulticastConfiguration
Address => { # ONVIF::Media::Types::IPAddress
Type => $some_value, # IPType
IPv4Address => $some_value, # IPv4Address
IPv6Address => $some_value, # IPv6Address
},
Port => $some_value, # int
TTL => $some_value, # int
AutoStart => $some_value, # boolean
},
SessionTimeout => $some_value, # duration
AnalyticsEngineConfiguration => { # ONVIF::Media::Types::AnalyticsEngineConfiguration
AnalyticsModule => { # ONVIF::Media::Types::Config
Parameters => { # ONVIF::Media::Types::ItemList
SimpleItem => ,
ElementItem => {
},
Extension => { # ONVIF::Media::Types::ItemListExtension
},
},
},
Extension => { # ONVIF::Media::Types::AnalyticsEngineConfigurationExtension
},
},
Extension => { # ONVIF::Media::Types::MetadataConfigurationExtension
},
},
ForcePersistence => $some_value, # boolean
},,
);
π SetAudioOutputConfiguration
This one modifies an audio output configuration πΆ. The ForcePersistence flag indicates if the changes shall remain after reboot of the device β short and sweet, no dramatic caveats this time π.
Returns a ONVIF::Media::Elements::SetAudioOutputConfigurationResponse object π«Ά.
$response = $interface->SetAudioOutputConfiguration( {
Configuration => { # ONVIF::Media::Types::AudioOutputConfiguration
OutputToken => $some_value, # ReferenceToken
SendPrimacy => $some_value, # anyURI
OutputLevel => $some_value, # int
},
ForcePersistence => $some_value, # boolean
},,
);
ποΈ SetAudioDecoderConfiguration
Modifies an audio decoder configuration. That's it, that's the whole thing π. And the ForcePersistence flag indicates if the changes shall remain after reboot of the device π.
Returns a ONVIF::Media::Elements::SetAudioDecoderConfigurationResponse object β¨.
$response = $interface->SetAudioDecoderConfiguration( {
Configuration => { # ONVIF::Media::Types::AudioDecoderConfiguration
},
ForcePersistence => $some_value, # boolean
},,
);
π₯ GetVideoSourceConfigurationOptions
Okay so this operation returns the available options β like the supported values and ranges for video source configuration parameters β for when the video source parameters get reconfigured π.
Here's how the resolution works: if a video source configuration is specified, the options shall concern that particular configuration. If a media profile is specified instead, the options shall be compatible with that media profile. Context matters, bestie π¦.
Returns a ONVIF::Media::Elements::GetVideoSourceConfigurationOptionsResponse object π.
$response = $interface->GetVideoSourceConfigurationOptions( {
ConfigurationToken => $some_value, # ReferenceToken
ProfileToken => $some_value, # ReferenceToken
},,
);
πΉ GetVideoEncoderConfigurationOptions
This response contains all the available video encoder configuration options β¨. If a video encoder configuration is specified, the options shall concern that particular configuration. If a media profile is specified, the options shall be compatible with that media profile. And if you pass no tokens at all? Then the options shall be considered generic for the device π«Ά β like a little default menu, no cap.
Returns a ONVIF::Media::Elements::GetVideoEncoderConfigurationOptionsResponse object π.
$response = $interface->GetVideoEncoderConfigurationOptions( {
ConfigurationToken => $some_value, # ReferenceToken
ProfileToken => $some_value, # ReferenceToken
},,
);
π€ GetAudioSourceConfigurationOptions
This operation returns the available options (supported values and ranges for audio source configuration parameters) for when the audio source parameters are reconfigured π . If an audio source configuration is specified, the options shall concern that particular configuration. If a media profile is specified, the options shall be compatible with that media profile π¦.
Returns a ONVIF::Media::Elements::GetAudioSourceConfigurationOptionsResponse object β.
$response = $interface->GetAudioSourceConfigurationOptions( {
ConfigurationToken => $some_value, # ReferenceToken
ProfileToken => $some_value, # ReferenceToken
},,
);
$response = $interface->GetAudioSourceConfigurationOptions( { ConfigurationToken => $some_value, # ReferenceToken ProfileToken => $some_value, # ReferenceToken },, );
### π§ GetAudioEncoderConfigurationOptions
Okay so picture this: you're reconfiguring the audio encoder params and you need to know what's actually allowed. This operation hands you the available options β the supported values and the ranges for audio encoder configuration parameters. It's giving "here's your menu, bestie" π
Returns a `ONVIF::Media::Elements::GetAudioEncoderConfigurationOptionsResponse` object.
$response = $interface->GetAudioEncoderConfigurationOptions( { ConfigurationToken => $some_value, # ReferenceToken ProfileToken => $some_value, # ReferenceToken },, );
### ποΈ GetMetadataConfigurationOptions
Same vibe, different config: this one returns the available options (supported values and ranges for metadata configuration parameters) for changing the metadata configuration.
Returns a `ONVIF::Media::Elements::GetMetadataConfigurationOptionsResponse` object.
$response = $interface->GetMetadataConfigurationOptions( { ConfigurationToken => $some_value, # ReferenceToken ProfileToken => $some_value, # ReferenceToken },, );
### π GetAudioOutputConfigurationOptions
You're configuring an audio output and you need the deets. This operation returns the available options (supported values and ranges for audio output configuration parameters) for configuring an audio output. Slay. β¨
Returns a `ONVIF::Media::Elements::GetAudioOutputConfigurationOptionsResponse` object.
$response = $interface->GetAudioOutputConfigurationOptions( { ConfigurationToken => $some_value, # ReferenceToken ProfileToken => $some_value, # ReferenceToken },, );
### π GetAudioDecoderConfigurationOptions
This command lists the audio decoding capabilities for a given profile and configuration of a device. Like a little capability show-and-tell π«Ά
Returns a `ONVIF::Media::Elements::GetAudioDecoderConfigurationOptionsResponse` object.
$response = $interface->GetAudioDecoderConfigurationOptions( { ConfigurationToken => $some_value, # ReferenceToken ProfileToken => $some_value, # ReferenceToken },, );
### π’ GetGuaranteedNumberOfVideoEncoderInstances
The `GetGuaranteedNumberOfVideoEncoderInstances` command can be used to request the minimum number of guaranteed video encoder instances (applications) per Video Source Configuration. Yes, it's a whole mouthful of a name, and yes, it's doing exactly what it says π
Returns a `ONVIF::Media::Elements::GetGuaranteedNumberOfVideoEncoderInstancesResponse` object.
$response = $interface->GetGuaranteedNumberOfVideoEncoderInstances( { ConfigurationToken => $some_value, # ReferenceToken },, );
### π‘ GetStreamUri
> Heads up, bestie: for full compatibility with other ONVIF services, a device should **not** generate Uris longer than 128 octets. That's `128`, not vibes-based. Note it. π
Returns a `ONVIF::Media::Elements::GetStreamUriResponse` object.
$response = $interface->GetStreamUri( { StreamSetup => { # ONVIF::Media::Types::StreamSetup Stream => $some_value, # StreamType Transport => { # ONVIF::Media::Types::Transport Protocol => $some_value, # TransportProtocol }, }, ProfileToken => $some_value, # ReferenceToken },, );
### βΆοΈ StartMulticastStreaming
This command starts multicast streaming using a specified media profile of a device. Here's the important part: streaming continues until `StopMulticastStreaming` is called for the same Profile. And the streaming **shall continue after a reboot** of the device until a `StopMulticastStreaming` request is received. Iconic levels of commitment, honestly. The multicast address, port and TTL are configured in the `VideoEncoderConfiguration`, `AudioEncoderConfiguration` and `MetadataConfiguration` respectively.
Returns a `ONVIF::Media::Elements::StartMulticastStreamingResponse` object.
$response = $interface->StartMulticastStreaming( { ProfileToken => $some_value, # ReferenceToken },, );
### βΉοΈ StopMulticastStreaming
This command stops multicast streaming using a specified media profile of a device. The off switch. The "we're done here" button π
Returns a `ONVIF::Media::Elements::StopMulticastStreamingResponse` object.
$response = $interface->StopMulticastStreaming( { ProfileToken => $some_value, # ReferenceToken },, );
### π― SetSynchronizationPoint
Okay this one needs a sec, because it's actually so clever. Synchronization points allow clients to decode and correctly use all data after the synchronization point. Example time: if a video stream is configured with a large I-frame distance and a client loses a single packet, the client does **not** display video until the next I-frame is transmitted. Rude, right? π In such cases, the client can request a Synchronization Point which enforces the device to add an I-Frame as soon as possible.
Clients can request Synchronization Points for profiles. The device shall add synchronization points for all streams associated with this profile. Similarly, a synchronization point is used to get an update on full PTZ or event status through the metadata stream. If a video stream is associated with the profile, an I-frame shall be added to this video stream. If a PTZ metadata stream is associated to the profile, the PTZ position shall be repeated within the metadata stream. Honestly? Chef's kiss. π
Returns a `ONVIF::Media::Elements::SetSynchronizationPointResponse` object.
$response = $interface->SetSynchronizationPoint( { ProfileToken => $some_value, # ReferenceToken },, );
### πΈ GetSnapshotUri
A client uses the `GetSnapshotUri` command to obtain a JPEG snapshot from the device. Now listen closely, because these next bits matter:
- The returned URI shall remain valid **indefinitely** even if the profile is changed.
- The `ValidUntilConnect`, `ValidUntilReboot` and `Timeout` Parameter shall be set accordingly (`ValidUntilConnect=false`, `ValidUntilReboot=false`, `timeout=PT0S`).
- The URI can be used for acquiring a JPEG image through a HTTP GET operation.
- The image encoding will **always** be JPEG regardless of the encoding setting in the media profile.
- The Jpeg settings (like resolution or quality) may be taken from the profile if suitable.
- The provided image will be updated automatically and independent from calls to `GetSnapshotUri`.
Returns a `ONVIF::Media::Elements::GetSnapshotUriResponse` object.
$response = $interface->GetSnapshotUri( { ProfileToken => $some_value, # ReferenceToken },, );
### π₯ GetVideoSourceModes
A device returns the information for current video source mode and settable video source modes of specified video source. And a device that indicates a capability of `VideoSourceModes` shall support this command. No skipping, bestie π«
Returns a `ONVIF::Media::Elements::GetVideoSourceModesResponse` object.
$response = $interface->GetVideoSourceModes( { VideoSourceToken => $some_value, # ReferenceToken },, );
### π SetVideoSourceMode
`SetVideoSourceMode` changes the media profile structure relating to video source for the specified video source mode. A device that indicates a capability of `VideoSourceModes` shall support this command. And uh, heads up: **the behavior after changing the mode is not defined in this specification.** So likeβ¦ undefined behaviour central. Proceed accordingly π
Returns a `ONVIF::Media::Elements::SetVideoSourceModeResponse` object.
$response = $interface->SetVideoSourceMode( { VideoSourceToken => $some_value, # ReferenceToken VideoSourceModeToken => $some_value, # ReferenceToken },, );
### π₯οΈ GetOSDs
Get the OSDs. Plural. All of them. β¨
Returns a `ONVIF::Media::Elements::GetOSDsResponse` object.
$response = $interface->GetOSDs( { ConfigurationToken => $some_value, # ReferenceToken },, );
### πΌοΈ GetOSD
Get the OSD. Singular. One of them π
Returns a `ONVIF::Media::Elements::GetOSDResponse` object.
$response = $interface->GetOSD( { OSDToken => $some_value, # ReferenceToken },, );
### ποΈ GetOSDOptions
Get the OSD Options. That's it, that's the whole description π
Returns a `ONVIF::Media::Elements::GetOSDOptionsResponse` object.
$response = $interface->GetOSDOptions( { ConfigurationToken => $some_value, # ReferenceToken },, );
### π οΈ SetOSD
Set the OSD. Big config object incoming β this is the whole `ONVIF::Media::Types::OSDConfiguration` situation, so buckle up π¦
Returns a `ONVIF::Media::Elements::SetOSDResponse` object.
$response = $interface->SetOSD( { OSD => { # ONVIF::Media::Types::OSDConfiguration VideoSourceConfigurationToken => { value => $some_value }, Type => $some_value, # OSDType Position => { # ONVIF::Media::Types::OSDPosConfiguration Type => $some_value, # string Pos => , Extension => { # ONVIF::Media::Types::OSDPosConfigurationExtension }, }, TextString => { # ONVIF::Media::Types::OSDTextConfiguration Type => $some_value, # string DateFormat => $some_value, # string TimeFormat => $some_value, # string FontSize => $some_value, # int FontColor => { # ONVIF::Media::Types::OSDColor Color => , }, BackgroundColor => { # ONVIF::Media::Types::OSDColor Color => , }, PlainText => $some_value, # string Extension => { # ONVIF::Media::Types::OSDTextConfigurationExtension }, }, Image => { # ONVIF::Media::Types::OSDImgConfiguration ImgPath => $some_value, # anyURI Extension => { # ONVIF::Media::Types::OSDImgConfigurationExtension }, }, Extension => { # ONVIF::Media::Types::OSDConfigurationExtension }, }, },, );
### β CreateOSD
Create the OSD. Same giant `ONVIF::Media::Types::OSDConfiguration` payload as `SetOSD`, bestie β no shortcuts here π«Ά
Returns a `ONVIF::Media::Elements::CreateOSDResponse` object.
$response = $interface->CreateOSD( { OSD => { # ONVIF::Media::Types::OSDConfiguration VideoSourceConfigurationToken => { value => $some_value }, Type => $some_value, # OSDType Position => { # ONVIF::Media::Types::OSDPosConfiguration Type => $some_value, # string Pos => , Extension => { # ONVIF::Media::Types::OSDPosConfigurationExtension }, }, TextString => { # ONVIF::Media::Types::OSDTextConfiguration Type => $some_value, # string DateFormat => $some_value, # string TimeFormat => $some_value, # string FontSize => $some_value, # int FontColor => { # ONVIF::Media::Types::OSDColor Color => , }, BackgroundColor => { # ONVIF::Media::Types::OSDColor Color => , }, PlainText => $some_value, # string Extension => { # ONVIF::Media::Types::OSDTextConfigurationExtension }, }, Image => { # ONVIF::Media::Types::OSDImgConfiguration ImgPath => $some_value, # anyURI Extension => { # ONVIF::Media::Types::OSDImgConfigurationExtension }, }, Extension => { # ONVIF::Media::Types::OSDConfigurationExtension }, }, },, );
### ποΈ DeleteOSD
Delete the OSD. Bye bestie, so sad to see you go π
Returns a `ONVIF::Media::Elements::DeleteOSDResponse` object.
$response = $interface->DeleteOSD( { OSDToken => $some_value, # ReferenceToken },, );
$response = $interface->DeleteOSD( { OSDToken => $some_value, # ReferenceToken },, );
okay so like β bestie β yes, that double comma really is in there π don't come for me, I'm just the messenger. That's the `DeleteOSD` call, `$response` catching whatever comes back, and `OSDToken` getting your `ReferenceToken` value. Slay, that's the whole call π
---
# β¨ AUTHOR β¨
This absolute icon of a page was generated by `SOAP::WSDL` β and the exact timestamp, no cap, is:
Mon Jun 30 13:26:09 2014
not me getting emotional over a build script from 2014 doing its little job and clocking out π honestly king behavior π
---
and that's a wrap on this whole thing, bestie!! you made it to the very end, which is honestly main character energy π the page you just read is from `perl v5.42.3`, dated `1980-01-01` (yes, the actual date on the footer, she's vintage and she knows it π
), and it lives at `ONVIF::...diaPort(3)` in the User Contributed Perl Documentation section. go forth and delete your OSDs responsibly π«Άβ¨π¦
π¦ where this page comes from
- nixpkgs unstable: zoneminder 1.38.6
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms