다음을 통해 공유


Python용 Azure Video Analyzer Edge 클라이언트 라이브러리 - 버전 1.0.0b4

더 이상 사용되지 않습니다. Azure Video Analyzer 미리 보기 서비스가 사용 중지됩니다. 2022년 12월 1일까지 Video Analyzer에서 애플리케이션을 전환하는 것이 좋습니다. 이 SDK는 더 이상 유지 관리되지 않습니다.

Azure Video Analyzer는 에지 및 클라우드 인프라에 걸쳐 있는 지능형 비디오 애플리케이션을 빌드할 수 있는 플랫폼을 제공하는 Azure Applied AI Service 입니다. 이 플랫폼은 라이브 비디오를 캡처, 녹화 및 분석하고 결과, 비디오 및 비디오 분석을 에지 또는 클라우드의 Azure 서비스에 게시하는 기능을 제공합니다. 확장 가능한 플랫폼으로 설계되어 오픈 소스 기계 학습 또는 Azure Machine Learning을 사용하여 자체 데이터로 학습된 Cognitive Services 모듈 또는 사용자 지정 추론 모듈과 같은 다양한 비디오 유추 에지 모듈을 연결할 수 있습니다.

Video Analyzer Edge용 클라이언트 라이브러리를 사용하여 다음을 수행합니다.

  • Microsoft Azure IoT SDK와의 상호 작용 간소화
  • 프로그래밍 방식으로 파이프라인 토폴로지 및 라이브 파이프라인 구성

패키지(PyPI) | 제품 설명서 | 직접 메서드 | 파이프라인 | 소스 코드 | 샘플

시작

패키지 설치

pip를 사용하여 Python용 Video Analyzer Edge 클라이언트 라이브러리를 설치합니다.

pip install azure-media-videoanalyzer-edge

필수 조건

  • 이 패키지를 사용하려면 Python 2.7 또는 3.6 이상이 필요합니다.

  • 이 패키지를 사용하려면 활성 Azure 구독과 IoT 디바이스 연결 문자열이 필요합니다.

  • Azure IoT Hub 상호 작용하려면 를 실행해야 합니다.pip install azure-iot-hub

  • 사용 중인 Video Analyzer Edge 모듈의 버전에 해당하는 SDK 버전을 사용해야 합니다.

    SDK) Video Analyzer 에지 모듈
    1.0.0b3 1.1
    1.0.0b2 1.0
    1.0.0b1 1.0

파이프라인 토폴로지 만들기 및 요청

시작 코드에 대한 예제를 방문하세요.

주요 개념

파이프라인 토폴로지 및 라이브 파이프라인

파이프라인 토폴로지는 라이브 파이프라인을 만들기 위한 청사진 또는 템플릿입니다. 자리 표시자를 값으로 사용하여 파이프라인의 매개 변수를 정의합니다. 라이브 파이프라인은 파이프라인 토폴로지를 참조하고 매개 변수를 지정합니다. 이렇게 하면 동일한 토폴로지를 참조하지만 매개 변수 값이 다른 여러 라이브 파이프라인을 사용할 수 있습니다. 자세한 내용은 파이프라인 토폴로지 및 라이브 파이프라인을 참조하세요.

CloudToDeviceMethod

CloudToDeviceMethodazure-iot-hub SDk의 일부입니다. 이 방법을 사용하면 IoT Hub의 디바이스에 단방향 알림을 전달할 수 있습니다. 이 경우 및 와 PipelineTopologyGetRequest같은 PipelineTopologySetRequest 다양한 직접 메서드를 전달하려고 합니다. 를 사용 CloudToDeviceMethod 하려면 및 payload의 두 매개 변수 method_name 를 전달해야 합니다.

첫 번째 매개 변수 는 method_name보내는 직접 메서드 요청의 이름입니다. 각 메서드의 미리 정의된 method_name 속성을 사용해야 합니다. 예들 들어 PipelineTopologySetRequest.method_name입니다.

두 번째 매개 변수인 payload는 파이프라인 토폴로지 요청의 전체 serialization을 보냅니다. 예를 들어 PipelineTopologySetRequest.serialize()

예제

파이프라인 토폴로지 만들기

파이프라인 토폴로지를 만들려면 원본 및 싱크를 정의해야 합니다.

#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)

라이브 파이프라인 만들기

라이브 파이프라인을 만들려면 기존 파이프라인 토폴로지가 있어야 합니다.

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)

직접 메서드 호출

디바이스에서 직접 메서드를 호출하려면 먼저 Video Analyzer Edge SDK를 사용하여 요청을 정의한 다음, 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)

SDK를 사용하여 다른 파이프라인 토폴로지 사용해 보려면 공식 샘플을 참조하세요.

문제 해결

  • IoT Hub CloudToDeviceMethod 사용하여 메서드 요청을 보낼 때는 메서드 요청 이름을 직접 입력하지 않도록 주의해야 합니다. 대신 [MethodRequestName.method_name]을 사용합니다.
  • 전체 메서드 요청을 전달하기 전에 직렬화해야 합니다. CloudToDeviceMethod

다음 단계

참여

이 프로젝트에 대한 기여와 제안을 환영합니다. 대부분의 경우 기여하려면 권한을 부여하며 실제로 기여를 사용할 권한을 당사에 부여한다고 선언하는 CLA(기여자 라이선스 계약)에 동의해야 합니다. 자세한 내용은 https://cla.microsoft.com 을 참조하세요.

문제가 발생하는 경우 Github에서 문제를 여세요.

끌어오기 요청을 제출하면 CLA-bot은 CLA를 제공하고 PR을 적절하게 데코레이팅해야 하는지 여부를 자동으로 결정합니다(예: 레이블, 설명). 봇에서 제공하는 지침을 따르기만 하면 됩니다. 이 작업은 CLA를 사용하여 모든 리포지토리에서 한 번만 수행하면 됩니다.

이 프로젝트에는 Microsoft Open Source Code of Conduct(Microsoft 오픈 소스 준수 사항)가 적용됩니다. 자세한 내용은 준수 사항 FAQ를 참조하거나 opencode@microsoft.com에 추가 질문 또는 의견을 알려주세요.