ONVIF:...iaPort(3pm)

πŸ“¦
version 1.36.37 Β· 5 versions
, in ubuntu resolute, ubuntu stonking

✨ ONVIF::Media::Interfaces::Media::MediaPort ✨

okay so bestie, this is the manual page for ONVIF::Media::Interfaces::Media::MediaPort(3pm) πŸ’– like, the whole thing lives in the User Contributed Perl Documentation corner of the man pages, and we're about to go through every single bit of it, no skips, no shortcuts, periodt.


πŸŽ€ NAME πŸŽ€

ONVIF::Media::Interfaces::Media::MediaPort β€” it's the SOAP Interface for the Media Web Service πŸ¦‹


🌸 SYNOPSIS 🌸

here's the vibe, literally just how you'd spin it up and start calling stuff:

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();

like, that's the whole menu of things you can ask this thing to do πŸ‘‘ every single one of them is real and every single one of them gets its own little moment later on, i promise.


πŸ¦‹ DESCRIPTION πŸ¦‹

So it's the SOAP Interface for the Media web service, and the service is hanging out at http://www.examples.com/Media/ 🌈 that's literally where it lives, that's the address, don't @ me.


πŸ’– SERVICE Media πŸ’–

🌈 Port MediaPort 🌈

(yes bestie, that's the port πŸ’…)


🫢 METHODS 🫢

⭐ General methods ⭐

new

It's the Constructor πŸŽ€ like, this is how you make the thing exist in the first place.

Every single argument you hand it gets forwarded straight on to SOAP::WSDL::Client. all of them. no filter. it's giving very "i don't gatekeep" energy.


πŸ“ SOAP Service methods πŸ“

okay so before we get into the individual methods, there's some house rules you need to know, and i'm gonna tell you all of them because skipping them would be a crime:

  • The method synopsis shows parameters as hash refs. that's just the format, ok?
  • Those commented class names sitting in the method's parameters? They mean you can pass objects of the corresponding class instead of the marked hash ref. so you got options, bestie 🫢
  • You may pass any combination of objects, hash and list refs to these methods β€” as long as you actually meet the structure. structure is non-negotiable, it's the main character here.
  • List items (like, the ones that show up multiple times) are not displayed in the synopsis. you can generally pass a list ref of hash refs (or objects) instead of a hash ref β€” but heads up, this may result in invalid XML if used improperly πŸ’€ so like, be careful, fr fr.
  • Note that SOAP::WSDL always expects list references at maximum depth position. that's just how it is.
  • XML attributes are not displayed in this synopsis and cannot be set using hash refs. nope. not happening. see the respective class' documentation for additional information if you need them.

cool? cool. let's go 🧚


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 🌱

Here's the rules, and they're serious ones:

  • The media profile shall be created in the device and shall be persistent β€” meaning it remains after reboot, it's not just gonna ghost you.
  • 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 πŸŽ€ like, you already got the token bestie, you might as well use it.

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. And the best part? The client does not need to know the media profile in order to use the command. no prerequisites, just vibes ✨

Returns a ONVIF::Media::Elements::GetProfilesResponse object.

 $response = $interface->GetProfiles( {
 },,
);

AddVideoEncoderConfiguration

This operation adds a VideoEncoderConfiguration to an existing media profile 🎬

  • If a configuration already 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 already 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.

And okay this one's actually iconic so listen up: 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. that's the whole point, that's the moment πŸ‘‘

Returns a ONVIF::Media::Elements::AddPTZConfigurationResponse object.

 $response = $interface->AddPTZConfiguration( {
   ProfileToken => $some_value, # ReferenceToken
   ConfigurationToken => $some_value, # ReferenceToken
 },,
);

okay we are literally not even close to done bestie, there's so much more of this page and every bit of it matters πŸ’– keep going, i'm right here 🫢

$response = $interface->AddPTZConfiguration( {
   ProfileToken => $some_value, # ReferenceToken
   ConfigurationToken => $some_value, # ReferenceToken
 },,
);

AddVideoAnalyticsConfiguration πŸŽ₯

okay so this one adds a VideoAnalytics configuration to an existing media profile. and bestie, heads up: if a configuration already exists in that media profile, it gets replaced. no warning, no nothing. the change shall be persistent, meaning it sticks around. πŸ’Ύ

so what does adding a VideoAnalyticsConfiguration actually do? it means streams using that media profile can contain video analytics data (in the metadata) as defined by the configuration reference you submitted. the vibe is: analytics data, now streaming. ✨

⚠️ real talk: a profile containing only a video analytics configuration but no video source configuration is incomplete. so a client should first add a video source configuration to a profile before adding a video analytics configuration. and the device can straight up deny adding a video analytics configuration before a video source configuration. so like, order matters, fr fr. 😭

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. and again β€” if a configuration already exists in the media profile, it gets replaced. the change shall be persistent. πŸ’…

adding a MetadataConfiguration to a Profile means that streams using that profile contain metadata. and what's metadata made of? it can consist of events, PTZ status, and/or video analytics data. pick your fave combo, honestly. 🌈

returns a ONVIF::Media::Elements::AddMetadataConfigurationResponse object.

$response = $interface->AddMetadataConfiguration( {
   ProfileToken => $some_value, # ReferenceToken
   ConfigurationToken => $some_value, # ReferenceToken
 },,
);

AddAudioOutputConfiguration πŸ”Š

this operation adds an AudioOutputConfiguration to an existing media profile. if a configuration exists in the media profile, it gets replaced. the change shall be persistent. short and sweet, that's the whole thing bestie. πŸ’–

returns a ONVIF::Media::Elements::AddAudioOutputConfigurationResponse object.

$response = $interface->AddAudioOutputConfiguration( {
   ProfileToken => $some_value, # ReferenceToken
   ConfigurationToken => $some_value, # ReferenceToken
 },,
);

AddAudioDecoderConfiguration 🎧

this operation adds an AudioDecoderConfiguration to an existing media profile. if a configuration exists in the media profile, it shall be replaced. the change shall be persistent. yes queen, consistency. πŸ‘‘

returns a ONVIF::Media::Elements::AddAudioDecoderConfigurationResponse object.

$response = $interface->AddAudioDecoderConfiguration( {
   ProfileToken => $some_value, # ReferenceToken
   ConfigurationToken => $some_value, # ReferenceToken
 },,
);

RemoveVideoEncoderConfiguration πŸ—‘οΈ

okay so this one removes a VideoEncoderConfiguration from an existing media profile. and lowkey if the media profile doesn't contain a VideoEncoderConfiguration, the operation has no effect β€” it just vibes and does nothing. the removal shall be persistent. ✨

returns a ONVIF::Media::Elements::RemoveVideoEncoderConfigurationResponse object.

$response = $interface->RemoveVideoEncoderConfiguration( {
   ProfileToken => $some_value, # ReferenceToken
 },,
);

RemoveVideoSourceConfiguration πŸ“Ή

this operation 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. 🫢

πŸ’‘ little note 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 πŸ”‡

this operation 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 πŸŽ™οΈ

this operation 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 same energy as before: audio source configurations should only be removed after removing an AudioEncoderConfiguration from the media profile. okay bestie?? 😭

returns a ONVIF::Media::Elements::RemoveAudioSourceConfigurationResponse object.

$response = $interface->RemoveAudioSourceConfiguration( {
   ProfileToken => $some_value, # ReferenceToken
 },,
);

RemovePTZConfiguration πŸŽ₯

this operation 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. periodt. πŸ’…

returns a ONVIF::Media::Elements::RemovePTZConfigurationResponse object.

$response = $interface->RemovePTZConfiguration( {
   ProfileToken => $some_value, # ReferenceToken
 },,
);

RemoveVideoAnalyticsConfiguration πŸ“‰

this operation 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 🧹

this operation 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. bye metadata, slay. πŸ’–

returns a ONVIF::Media::Elements::RemoveMetadataConfigurationResponse object.

$response = $interface->RemoveMetadataConfiguration( {
   ProfileToken => $some_value, # ReferenceToken
 },,
);

RemoveAudioOutputConfiguration πŸ”ˆ

this operation 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 🎢

this operation 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. that's it, that's the tweet. 🐦

returns a ONVIF::Media::Elements::RemoveAudioDecoderConfigurationResponse object.

$response = $interface->RemoveAudioDecoderConfiguration( {
   ProfileToken => $some_value, # ReferenceToken
 },,
);

DeleteProfile πŸ’€

this operation deletes a profile. this change shall always be persistent β€” like, permanently permanently. πŸ”₯

⚠️ bestie READ THIS: deletion of a profile is only possible for non-fixed profiles. fixed profiles are staying, no cap. don't even try it. 😀

returns a ONVIF::Media::Elements::DeleteProfileResponse object.

$response = $interface->DeleteProfile( {
   ProfileToken => $some_value, # ReferenceToken
 },,
);

GetVideoSourceConfigurations πŸ“œ

this operation lists all existing video source configurations for a device. and the best part? the client need not know anything about the video source configurations in order to use the command. it's giving ✨effortless✨. the client is not the main character here, the device is. πŸ‘‘

returns a ONVIF::Media::Elements::GetVideoSourceConfigurationsResponse object.

$response = $interface->GetVideoSourceConfigurations( {
 },,
);

GetVideoEncoderConfigurations πŸ“‹

this operation lists all existing video encoder configurations of a device. this command lists all configured video encoder configurations in a device. and the client need not know anything apriori about the video encoder configurations in order to use the command. yes they said apriori, we love a fancy word. 🎩

returns a ONVIF::Media::Elements::GetVideoEncoderConfigurationsResponse object.

$response = $interface->GetVideoEncoderConfigurations( {
 },,
);

GetAudioSourceConfigurations 🎀

this operation lists all existing audio source configurations of a device. this command lists all audio source configurations in a device. 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 πŸŽ›οΈ

this operation lists all existing device audio encoder configurations. the client need not know anything apriori about the audio encoder configurations in order to use the command. literally just ask and receive. πŸ™

returns a ONVIF::Media::Elements::GetAudioEncoderConfigurationsResponse object.

$response = $interface->GetAudioEncoderConfigurations( {
 },,
);

GetVideoAnalyticsConfigurations πŸ“ˆ

this operation lists all video analytics configurations of a device. this command lists all configured video analytics in a device. 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 πŸ—‚οΈ

this operation lists all existing metadata configurations. the client need not know anything apriori about the metadata in order to use the command. metadata said "i'll introduce myself." πŸ’β€β™€οΈ

returns a ONVIF::Media::Elements::GetMetadataConfigurationsResponse object.

$response = $interface->GetMetadataConfigurations( {
 },,
);

GetAudioOutputConfigurations πŸ“’

this command lists all existing AudioOutputConfigurations of a device. and the NVC need not know anything apriori about the audio configurations to use this command. yes bestie, NVC, not client β€” that's what it says, keeping it exactly as is. πŸ’―

returns a ONVIF::Media::Elements::GetAudioOutputConfigurationsResponse object.

$response = $interface->GetAudioOutputConfigurations( {
 },,
);

GetAudioDecoderConfigurations 🎚️

this command 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. same energy, same NVC. πŸ‘―

returns a ONVIF::Media::Elements::GetAudioDecoderConfigurationsResponse object.

$response = $interface->GetAudioDecoderConfigurations( {
 },,
);

🌸 GetVideoSourceConfiguration 🌸

Okay bestie, so if you already have the video source configuration token in your pocket, you can just go grab the config with the GetVideoSourceConfiguration command. Easy.

Hands you back a ONVIF::Media::Elements::GetVideoSourceConfigurationResponse object. πŸ’–

 $response = $interface->GetVideoSourceConfiguration( {
    ConfigurationToken => $some_value, # ReferenceToken
  },,
 );

✨ GetVideoEncoderConfiguration ✨

Same energy, different config. Got the video encoder configuration token already? Then GetVideoEncoderConfiguration is literally right there waiting for you.

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

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. no cap.

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. slay.

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. that's it, that's the whole vibe.

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. go off.

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
  },,
 );

🎬 GetCompatibleVideoEncoderConfigurations 🎬

This operation lists all the video encoder configurations of the device that are compatible with a certain media profile. Every single one of the returned configurations shall be a valid input parameter for the AddVideoEncoderConfiguration command on the media profile. Heads up though β€” the result will vary depending on the capabilities, configurations and settings in the device. it's giving "depends on your setup." πŸ™ˆ

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. And yeah, 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. iykyk. πŸ’«

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. main character energy, honestly. πŸ‘‘

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. periodt. πŸ”₯

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. no notes. ✨

Returns a ONVIF::Media::Elements::GetCompatibleAudioDecoderConfigurationsResponse object.

 $response = $interface->GetCompatibleAudioDecoderConfigurations( {
    ProfileToken => $some_value, # ReferenceToken
  },,
 );

πŸ’– 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. 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 come for it if your stream doesn't refresh, bestie. 😭

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 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. basically: the device is allowed to be a little flexible with your timeout hints, but you still gotta respect what RTSP tells you. 🫢

Returns a ONVIF::Media::Elements::SetVideoEncoderConfigurationResponse object.

and here's the exact shape of the payload you're sending, bestie β€” don't freestyle this one:

        $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 ✨

okay so this one modifies an audio source configuration. The ForcePersistence flag is basically telling the device "bestie, keep this after you reboot, k?" πŸ’…

Streams that are already running with this configuration may be immediately updated to match the new settings. BUT β€” and this is the important part β€” the changes are not guaranteed to take effect unless the client asks for a brand new stream URI and restarts any affected stream. NVC methods for changing a running stream are out of scope for this specification, so don't come for them, they're not here. πŸ™ˆ

It hands you back a ONVIF::Media::Elements::SetAudioSourceConfigurationResponse object. πŸŽ€

        $response = $interface->SetAudioSourceConfiguration( {
           Configuration =>  { # ONVIF::Media::Types::AudioSourceConfiguration
             SourceToken => $some_value, # ReferenceToken
           },
           ForcePersistence =>  $some_value, # boolean
         },,
        );

🎧 SetAudioEncoderConfiguration 🎧

same energy, different encoder: this one modifies an audio encoder configuration. ForcePersistence again = "shall the changes remain after reboot of the device?" ✨

Running streams using this configuration may be immediately updated according to the new settings. The changes are not guaranteed to take effect unless the client requests a new stream URI and restarts any affected streams. And once again, NVC methods for changing a running stream are out of scope for this specification. 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 🧠

a video analytics configuration gets modified with this command, and honestly this one's the main character of consistency. The ForcePersistence flag tells you whether the changes shall remain after reboot of the device or not. πŸ‘‘

Running streams using this configuration shall be immediately updated according to the new settings. Why so strict? Because otherwise inconsistencies can occur between the scene description processed by the rule engine and the notifications produced by analytics engine and rule engine which reference the very same video analytics configuration token. so yeah. no vibe mismatches allowed here. πŸ’€

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 = "shall the changes remain after reboot of the device?" ✨

and here's the lil exception that's lowkey iconic: changes in the Multicast settings shall always be persistent. no flag needed, they just stay. πŸ’…

Running streams using this configuration may be updated immediately according to the new settings. The changes are not guaranteed to take effect unless the client requests a new stream URI and restarts any affected streams. NVC methods for changing a running stream are out of scope for this specification. same disclaimer, different day, bestie. 😭

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 operation modifies an audio output configuration. The ForcePersistence flag indicates if the changes shall remain after reboot of the device. that's it, that's the whole vibe. short and slay. πŸ’…

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 🎚️

this operation modifies an audio decoder configuration. The ForcePersistence flag indicates if the changes shall remain after reboot of the device. yes bestie, same flag, same meaning, no notes. ✨

Returns a ONVIF::Media::Elements::SetAudioDecoderConfigurationResponse object. πŸ“

        $response = $interface->SetAudioDecoderConfiguration( {
           Configuration =>  { # ONVIF::Media::Types::AudioDecoderConfiguration
           },
           ForcePersistence =>  $some_value, # boolean
         },,
        );

πŸ” GetVideoSourceConfigurationOptions πŸ”

this operation returns the available options β€” and by that I mean supported values and ranges for video source configuration parameters β€” for when the video source parameters are reconfigured. 🫢

the rules, since there's always rules:

  • if a video 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::GetVideoSourceConfigurationOptionsResponse object. ⭐

        $response = $interface->GetVideoSourceConfigurationOptions( {
           ConfigurationToken => $some_value, # ReferenceToken
           ProfileToken => $some_value, # ReferenceToken
         },,
        );

πŸ”Ž GetVideoEncoderConfigurationOptions πŸ”Ž

this response contains the available video encoder configuration options. the breakdown, because ikyk:

  • 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.
  • if no tokens are specified, the options shall be considered generic for the device. πŸŽ€

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, bestie, you know the drill β€” for when the audio source parameters are reconfigured. ✨

the same two rules as its video sibling:

  • 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. 🌈

GetAudioSourceConfigurationOptions 🎀

Bestie, this one hands you back the available options β€” like, the supported values and ranges for audio source configuration params β€” for when you're reconfiguring the audio source. It's giving "show me the menu before I order" energy.

Returns a ONVIF::Media::Elements::GetAudioSourceConfigurationOptionsResponse object. πŸ’–

$response = $interface->GetAudioSourceConfigurationOptions( {
   ConfigurationToken => $some_value, # ReferenceToken
   ProfileToken => $some_value, # ReferenceToken
 },,
);

GetAudioEncoderConfigurationOptions 🎧

Same vibe, but for the audio encoder. This operation returns the available options (supported values and ranges for audio encoder configuration parameters) when the audio encoder parameters are reconfigured. Lowkey the same handshake, different little guy. ✨

Returns a ONVIF::Media::Elements::GetAudioEncoderConfigurationOptionsResponse object.

$response = $interface->GetAudioEncoderConfigurationOptions( {
   ConfigurationToken => $some_value, # ReferenceToken
   ProfileToken => $some_value, # ReferenceToken
 },,
);

GetMetadataConfigurationOptions πŸ“

This operation returns the available options (supported values and ranges for metadata configuration parameters) for changing the metadata configuration. Metadata's moment, fr fr. πŸ¦‹

Returns a ONVIF::Media::Elements::GetMetadataConfigurationOptionsResponse object.

$response = $interface->GetMetadataConfigurationOptions( {
   ConfigurationToken => $some_value, # ReferenceToken
   ProfileToken => $some_value, # ReferenceToken
 },,
);

GetAudioOutputConfigurationOptions πŸ”Š

This operation returns the available options (supported values and ranges for audio output configuration parameters) for configuring an audio output. Slay, now we're talking out loud. πŸ‘‘

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. It's the decoder's turn in the spotlight, periodt. πŸ’…

Returns a ONVIF::Media::Elements::GetAudioDecoderConfigurationOptionsResponse object.

$response = $interface->GetAudioDecoderConfigurationOptions( {
   ConfigurationToken => $some_value, # ReferenceToken
   ProfileToken => $some_value, # ReferenceToken
 },,
);

GetGuaranteedNumberOfVideoEncoderInstances πŸŽ₯

Okay so this one is a whole mouthful, but the tea is simple: the GetGuaranteedNumberOfVideoEncoderInstances command can be used to request the minimum number of guaranteed video encoder instances (applications) per Video Source Configuration. Guaranteed, bestie. No cap. πŸ”₯

Returns a ONVIF::Media::Elements::GetGuaranteedNumberOfVideoEncoderInstancesResponse object.

$response = $interface->GetGuaranteedNumberOfVideoEncoderInstances( {
   ConfigurationToken => $some_value, # ReferenceToken
 },,
);

GetStreamUri 🌈

For full compatibility with other ONVIF services a device should not generate Uris longer than 128 octets. Keep it cute, keep it short. πŸŽ€

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. Streaming continues until StopMulticastStreaming is called for the same Profile. And listen β€” the streaming shall continue after a reboot of the device until a StopMulticastStreaming request is received. Iconic, it just keeps going. 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. That's it, that's the whole vibe β€” the off switch to the thing above. πŸ’œ

Returns a ONVIF::Media::Elements::StopMulticastStreamingResponse object.

$response = $interface->StopMulticastStreaming( {
   ProfileToken => $some_value, # ReferenceToken
 },,
);

SetSynchronizationPoint 🎯

Synchronization points allow clients to decode and correctly use all data after the synchronization point. Bestie, picture it: 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. 😭 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. It's giving "refresh me right now." πŸ’…

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. 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. Obsessed, it just keeps itself fresh. 🫢

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. A device that indicates a capability of VideoSourceModes shall support this command. Iykyk. 🌸

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. The behavior after changing the mode is not defined in this specification β€” so, yeah, that part's a mystery, bestie, we don't make it up. πŸ’€

Returns a ONVIF::Media::Elements::SetVideoSourceModeResponse object.

$response = $interface->SetVideoSourceMode( {
   VideoSourceToken => $some_value, # ReferenceToken
   VideoSourceModeToken => $some_value, # ReferenceToken
 },,
);

GetOSDs πŸ–ΌοΈ

Get the OSDs. Short, sweet, to the point. ✨

Returns a ONVIF::Media::Elements::GetOSDsResponse object.

$response = $interface->GetOSDs( {
   ConfigurationToken => $some_value, # ReferenceToken
 },,
);

GetOSD πŸ–ΌοΈ

Get the OSD. (Singular this time, we're being specific.) πŸ’–

Returns a ONVIF::Media::Elements::GetOSDResponse object.

$response = $interface->GetOSD( {
   OSDToken => $some_value, # ReferenceToken
 },,
);

GetOSDOptions βš™οΈ

Get the OSD Options. The menu before the menu, you know how it is. 🌈

Returns a ONVIF::Media::Elements::GetOSDOptionsResponse object.

$response = $interface->GetOSDOptions( {
   ConfigurationToken => $some_value, # ReferenceToken
 },,
);

SetOSD 🎨

Set the OSD. Here's where you actually configure it β€” look at this whole nested tree, it's giving ancient scroll, but it's fine, we got this. 🧚

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 structure as SetOSD, but this one's making a brand new one from scratch β€” main character energy, a whole new OSD is born. πŸ‘‘

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, we hardly knew ye. πŸ™ˆ

Returns a ONVIF::Media::Elements::DeleteOSDResponse object.

        $response = $interface->DeleteOSD( {
           OSDToken => $some_value, # ReferenceToken
         },,
        );

copy that exactly, bestie β€” every brace, every comma, yes even that double comma at the end, it's literally written that way on the page so we do not touch it πŸ’… that's the whole DeleteOSD example, and with that the method list is done and dusted ✨


πŸŽ€ AUTHOR πŸŽ€

Generated by SOAP::WSDL on Mon Jun 30 13:26:09 2014 πŸ¦‹

that's it. that's the whole author section. no human's name, no email, no "please report bugs to…", just a timestamp from a tool that auto-spat this page out on a Monday afternoon in 2014 😭 iconic honestly, the manpage equivalent of "this document was generated automatically, do not reply" πŸ™ˆ

lowkey a vibe: the entire interface you just read about was described by a machine, for a machine, and now you're here reading it too. circle of life 🌈

and that's a wrap on the whole page, bestie 🫢 you made it to the end of a very long, very SOAP::WSDL-generated interface description and honestly? slay πŸ‘‘

quick lil send-off β€” this one came from the ONVIF::...iaPort(3pm) page, part of the User Contributed Perl Documentation crew, written against perl v5.40.1, and dated 2026-02-01 πŸŽ€ that's the version line and the date stamp, so if you're citing it or checking freshness, that's your receipt ⭐

go forth, call your methods, pass your ReferenceTokens, and don't forget the trailing commas (or do forget them, the docs didn't πŸ’€) β€” bye bestie, mwah πŸ’–βœ¨πŸŒΈ

πŸ“¦ where this page comes from