Azure Video Analyzer Edge-clientbibliotheek voor Python - versie 1.0.0b4
Afgeschaft. De preview-service van Azure Video Analyzer wordt buiten gebruik gesteld. U wordt geadviseerd om uw toepassingen uiterlijk 1 december 2022 van Video Analyzer over te zetten. Deze SDK wordt niet meer onderhouden.
Azure Video Analyzer is een Azure Applied AI-service die een platform biedt voor het bouwen van intelligente videotoepassingen die zowel edge- als cloudinfrastructuren kunnen omvatten. Het platform biedt de mogelijkheid om live video vast te leggen, op te nemen en te analyseren, samen met het publiceren van de resultaten, video- en videoanalyses naar Azure-services aan de rand of in de cloud. Het is ontworpen als een uitbreidbaar platform, waarmee u verschillende edge-modules voor videodeductie kunt verbinden, zoals Cognitive Services-modules of aangepaste deductiemodules die zijn getraind met uw eigen gegevens met behulp van opensource-machine learning of Azure Machine Learning.
Gebruik de clientbibliotheek voor Video Analyzer Edge voor het volgende:
- Interacties met de Microsoft Azure IoT SDK's vereenvoudigen
- Programmatisch pijplijntopologieën en live-pijplijnen maken
Pakket (PyPI) | Productdocumentatie | Directe methoden | Pijpleidingen | Broncode | Monsters
Aan de slag
Het pakket installeren
Installeer de Video Analyzer Edge-clientbibliotheek voor Python met pip:
pip install azure-media-videoanalyzer-edge
Vereisten
Python 2.7 of 3.6 of hoger is vereist om dit pakket te gebruiken.
U hebt een actief Azure-abonnement en een IoT-apparaat connection string nodig om dit pakket te kunnen gebruiken.
Als u wilt communiceren met Azure IoT Hub moet u uitvoeren
pip install azure-iot-hub
U moet de versie van de SDK gebruiken die overeenkomt met de versie van de Video Analyzer Edge-module die u gebruikt.
SDK Video Analyzer Edge-module 1.0.0b3 1.1 1.0.0b2 1.0 1.0.0b1 1.0
Een pijplijntopologie maken en aanvragen indienen
Ga naar de voorbeelden voor starterscode.
Belangrijkste concepten
Pijplijntopologie versus livepijplijn
Een pijplijntopologie is een blauwdruk of sjabloon voor het maken van live-pijplijnen. Hiermee worden de parameters van de pijplijn gedefinieerd met behulp van tijdelijke aanduidingen als waarden voor de pijplijn. Een live-pijplijn verwijst naar een pijplijntopologie en geeft de parameters op. Op deze manier kunt u meerdere live-pijplijnen hebben die verwijzen naar dezelfde topologie, maar met verschillende waarden voor parameters. Ga voor meer informatie naar pijplijntopologieën en live-pijplijnen.
CloudToDeviceMethod
De CloudToDeviceMethod
maakt deel uit van de azure-iot-hub SDk. Met deze methode kunt u meldingen in één richting communiceren met een apparaat in uw IoT-hub. In ons geval willen we verschillende directe methoden communiceren, zoals PipelineTopologySetRequest
en PipelineTopologyGetRequest
. Als u wilt gebruiken CloudToDeviceMethod
, moet u twee parameters doorgeven: method_name
en payload
.
De eerste parameter, method_name
, is de naam van de aanvraag voor de directe methode die u verzendt. Zorg ervoor dat u de vooraf method_name
gedefinieerde eigenschap van elke methode gebruikt. Bijvoorbeeld PipelineTopologySetRequest.method_name
.
De tweede parameter, , payload
verzendt de volledige serialisatie van de aanvraag voor de pijplijntopologie. Bijvoorbeeld: PipelineTopologySetRequest.serialize()
Voorbeelden
Een pijplijntopologie maken
Als u een pijplijntopologie wilt maken, moet u bronnen en sinks definiëren.
#Parameters
user_name_param = ParameterDeclaration(name="rtspUserName",type="String",default="testusername")
password_param = ParameterDeclaration(name="rtspPassword",type="SecretString",default="testpassword")
url_param = ParameterDeclaration(name="rtspUrl",type="String",default="rtsp://www.sample.com")
#Source and Sink
source = RtspSource(name="rtspSource", endpoint=UnsecuredEndpoint(url="${rtspUrl}",credentials=UsernamePasswordCredentials(username="${rtspUserName}",password="${rtspPassword}")))
node = NodeInput(node_name="rtspSource")
sink = VideoSink(name="videoSink", inputs=[node], video_name="video", local_media_cache_path="/var/lib/videoanalyzer/tmp/", local_media_cache_maximum_size_mi_b="1024");
pipeline_topology_properties = PipelineTopologyProperties()
pipeline_topology_properties.parameters = [user_name_param, password_param, url_param]
pipeline_topology_properties.sources = [source]
pipeline_topology_properties.sinks = [sink]
pipeline_topology = PipelineTopology(name=pipeline_topology_name,properties=pipeline_topology_properties)
Een live-pijplijn maken
Als u een live-pijplijn wilt maken, moet u een bestaande pijplijntopologie hebben.
url_param = ParameterDefinition(name="rtspUrl", value=pipeline_url)
pass_param = ParameterDefinition(name="rtspPassword", value="secret_password")
live_pipeline_properties = LivePipelineProperties(description="Sample pipeline description", topology_name=pipeline_topology_name, parameters=[url_param])
live_pipeline = LivePipeline(name=live_pipeline_name, properties=live_pipeline_properties)
Een directe methode aanroepen
Als u een directe methode op uw apparaat wilt aanroepen, moet u eerst de aanvraag definiëren met behulp van de Video Analyzer Edge SDK en vervolgens die methodeaanvraag verzenden met behulp van de IoT SDK CloudToDeviceMethod
.
set_method_request = PipelineTopologySetRequest(pipeline_topology=pipeline_topology)
direct_method = CloudToDeviceMethod(method_name=set_method_request.method_name, payload=set_method_request.serialize())
registry_manager = IoTHubRegistryManager(connection_string)
registry_manager.invoke_device_module_method(device_id, module_d, direct_method)
Als u verschillende pijplijntopologieën met de SDK wilt proberen, raadpleegt u de officiële voorbeelden.
Problemen oplossen
- Wanneer u een methodeaanvraag verzendt met behulp van de IoT Hub vergeet niet om de naam van
CloudToDeviceMethod
de methodeaanvraag rechtstreeks in te voeren. Gebruik in plaats daarvan[MethodRequestName.method_name]
- Zorg ervoor dat u de hele methodeaanvraag serialiseert voordat u deze doorgeeft aan
CloudToDeviceMethod
Volgende stappen
Bijdragen
Wij verwelkomen bijdragen en suggesties voor dit project. Voor de meeste bijdragen moet u instemmen met een licentieovereenkomst voor bijdragers (CLA: Contributor License Agreement) waarin u verklaart dat u gerechtigd bent ons het recht te geven uw bijdrage te gebruiken, en dat u dit ook doet. Ga naar https://cla.microsoft.com voor meer informatie.
Als u problemen ondervindt, opent u een probleem op onze Github.
Wanneer u een pull-aanvraag indient, wordt met een CLA-bot automatisch bepaald of u een CLA moet verschaffen en wordt de pull-aanvraag dienovereenkomstig opgemaakt (bijvoorbeeld met een label of commentaar). Volg gewoon de instructies van de bot. U hoeft dit maar eenmaal te doen voor alle repo's waar gebruik wordt gemaakt van onze CLA.
Op dit project is de Microsoft Open Source Code of Conduct (Microsoft Open Source-gedragscode) van toepassing. Raadpleeg de Veelgestelde vragen over de gedragscode voor meer informatie of neem contact op met opencode@microsoft.com als u meer vragen of opmerkingen hebt.
Azure SDK for Python