Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Preterido. Estamos desativando o serviço de visualização do Analisador de Vídeo do Azure. Aconselhamos que você faça a transição de seus aplicativos do Analisador de Vídeo até 01 de dezembro de 2022. Esse SDK não é mais mantido.
O Analisador de Vídeo do Azure é um Serviço de IA Aplicada do Azure que fornece uma plataforma para você criar aplicativos de vídeo inteligentes que podem abranger infraestruturas de borda e nuvem. A plataforma oferece a capacidade de capturar, gravar e analisar vídeo ao vivo, juntamente com a publicação dos resultados, análise de vídeo e vídeo, nos serviços do Azure na borda ou na nuvem. Ele foi projetado para ser uma plataforma extensível, permitindo que você conecte diferentes módulos de borda de inferência de vídeo, como módulos de serviços cognitivos, ou módulos de inferência personalizados que foram treinados com seus próprios dados usando o aprendizado de máquina de software livre ou o Azure Machine Learning.
Use a biblioteca de clientes para o Analisador de Vídeo do Edge para:
- Simplificar as interações com os SDKs de IoT do Microsoft Azure
- Construir programaticamente topologias de pipeline e pipelines dinâmicos
Pacote (PyPI) | Documentação do produto | Métodos diretos | Pipelines | Código-fonte | Amostras
Introdução
Instalar o pacote
Instale a biblioteca de clientes do Analisador de Vídeo do Edge para Python com pip:
pip install azure-media-videoanalyzer-edge
Pré-requisitos
Python 2.7, ou 3.6 ou posteriores, é necessário para usar esse pacote.
Você precisa de uma assinatura ativa do Azure e de uma cadeia de conexão de dispositivo IoT para usar esse pacote.
Para interagir com Hub IoT do Azure você precisará executar
pip install azure-iot-hubVocê precisará usar a versão do SDK que corresponde à versão do módulo do Analisador de Vídeo no Edge que você está usando.
. Módulo de borda do Analisador de Vídeo 1.0.0b3 1,1 1.0.0b2 1.0 1.0.0b1 1.0
Criando uma topologia de pipeline e fazendo solicitações
Visite os Exemplos de código inicial.
Principais conceitos
Topologia de pipeline versus pipeline ao vivo
Uma topologia de pipeline é um blueprint ou modelo para criar pipelines dinâmicos. Ele define os parâmetros do pipeline usando espaços reservados como valores para eles. Um pipeline dinâmico faz referência a uma topologia de pipeline e especifica os parâmetros. Dessa forma, você pode ter vários pipelines dinâmicos referenciando a mesma topologia, mas com valores diferentes para parâmetros. Para obter mais informações, visite topologias de pipeline e pipelines dinâmicos.
CloudToDeviceMethod
O CloudToDeviceMethod faz parte do SDk do azure-iot-hub. Esse método permite que você comunique notificações unidirecionais a um dispositivo no hub IoT. Em nosso caso, queremos comunicar vários métodos diretos, como PipelineTopologySetRequest e PipelineTopologyGetRequest. Para usar CloudToDeviceMethod , você precisa passar dois parâmetros: method_name e payload.
O primeiro parâmetro, method_name, é o nome da solicitação de método direto que você está enviando. Use a propriedade predefinida method_name de cada método. Por exemplo, PipelineTopologySetRequest.method_name.
O segundo parâmetro, payload, envia toda a serialização da solicitação de topologia de pipeline. Por exemplo, PipelineTopologySetRequest.serialize()
Exemplos
Criando uma topologia de pipeline
Para criar uma topologia de pipeline, você precisa definir fontes e coletores.
#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)
Criando um pipeline ao vivo
Para criar um pipeline dinâmico, você precisa ter uma topologia de pipeline existente.
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)
Invocando um método direto
Para invocar um método direto em seu dispositivo, primeiro você precisa definir a solicitação usando o SDK do Analisador de Vídeo do Edge e, em seguida, enviar essa solicitação de método usando o SDK do CloudToDeviceMethodIoT.
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)
Para experimentar topologias de pipeline diferentes com o SDK, consulte os Exemplos oficiais.
Solução de problemas
- Ao enviar uma solicitação de método usando a Hub IoT lembre-se de
CloudToDeviceMethodnão digitar o nome da solicitação de método diretamente. Em vez disso, use[MethodRequestName.method_name] - Certifique-se de serializar toda a solicitação de método antes de passá-la para
CloudToDeviceMethod
Próximas etapas
Contribuição
Este projeto aceita contribuições e sugestões. A maioria das contribuições exige que você concorde com um CLA (Contrato de Licença do Colaborador) declarando que você tem o direito de nos conceder, e de fato concede, os direitos de usar sua contribuição. Para obter detalhes, visite https://cla.microsoft.com.
Se você encontrar algum problema, abra um problema em nosso Github.
Quando você envia uma solicitação de pull, um bot do CLA determina automaticamente se você precisa fornecer um CLA e preencher a PR corretamente (por exemplo, rótulo, comentário). Basta seguir as instruções fornecidas pelo bot. Você só precisará fazer isso uma vez em todos os repositórios que usam nosso CLA.
Este projeto adotou o Código de Conduta de Software Livre da Microsoft. Para saber mais, confira as Perguntas frequentes sobre o Código de Conduta ou contate o opencode@microsoft.com caso tenha outras dúvidas ou comentários.
Azure SDK for Python