Python-onvif-zeep
ONVIF Client Implementation in Python 2+3 (using https://github.com/mvantellingen/python-zeep instead of suds as SOAP client)
Original project
python-onvif 항목 참조.
Example
from onvif import ONVIFCamera
def test_media_profile_configuration(self):
'''
A media profile consists of configuration entities such as video/audio
source configuration, video/audio encoder configuration,
or PTZ configuration. This use case describes how to change one
configuration entity which has been already added to the media profile.
'''
# Create the media service
mycam = ONVIFCamera('192.168.0.50', 80, 'admin', '0000')
media_service = mycam.create_media_service()
profiles = media_service.GetProfiles()
# Use the first profile and Profiles have at least one
token = profiles[0]._token
# Get all video encoder configurations
configurations_list = media_service.GetVideoEncoderConfigurations()
# Use the first profile and Profiles have at least one
video_encoder_configuration = configurations_list[0]
# Get video encoder configuration options
options = media_service.GetVideoEncoderConfigurationOptions({'ProfileToken':token})
# Setup stream configuration
video_encoder_configuration.Encoding = 'H264'
# Setup Resolution
video_encoder_configuration.Resolution.Width = \
options.H264.ResolutionsAvailable[0].Width
video_encoder_configuration.Resolution.Height = \
options.H264.ResolutionsAvailable[0].Height
# Setup Quality
video_encoder_configuration.Quality = options.QualityRange.Min
# Setup FramRate
video_encoder_configuration.RateControl.FrameRateLimit = \
options.H264.FrameRateRange.Min
# Setup EncodingInterval
video_encoder_configuration.RateControl.EncodingInterval = \
options.H264.EncodingIntervalRange.Min
# Setup Bitrate
video_encoder_configuration.RateControl.BitrateLimit = \
options.Extension.H264[0].BitrateRange[0].Min[0]
# Create request type instance
request = media_service.create_type('SetVideoEncoderConfiguration')
request.Configuration = video_encoder_configuration
# ForcePersistence is obsolete and should always be assumed to be True
request.ForcePersistence = True
# Set the video encoder configuration
media_service.SetVideoEncoderConfiguration(request)