Hızlı başlangıç: hareket ve yayma olaylarını Algıla

kenar simgesi
Alternatif olarak, Hizmette video uygulamaları oluşturma altındaki konulara göz atabilirsiniz.


Bu hızlı başlangıç, Azure video Çözümleyicisi 'ni kullanmaya başlama adımlarında size yol gösterir. IoT Edge cihazı olarak bir Azure sanal makinesi ve canlı video akış simülasyonu kullanır. Kurulum adımlarını tamamladıktan sonra, bu akıştaki tüm hareketleri algılayan ve raporlayan bir video işlem hattı aracılığıyla sanal bir canlı video akışı çalıştırabileceksiniz. Aşağıdaki diyagramda, bu işlem hattının grafik temsili gösterilmektedir.

Hareketi Algıla

Bu makale, C# dilinde yazılan örnek kodu temel alır.

Bu makale, Python 'da yazılmış örnek kodu temel alır.

Önkoşullar

  • Etkin bir abonelik içeren bir Azure hesabı. Henüz bir hesabınız yoksa ücretsiz olarak bir hesap oluşturun .

    Not

    Hem Katkıda Bulunan rolüne hem de Kullanıcı Erişimi Yöneticisi rolüne erişiminiz olan bir Azure aboneliğine ihtiyacınız vardır. Doğru izinlere sahip değilseniz lütfen hesap yöneticinize ulaşarak bu izinleri verin.

  • Visual Studio Code, aşağıdaki uzantılara sahip:

    İpucu

    Azure IoT Tools uzantısını yüklerken docker 'ı yüklemeniz istenebilir. İstemi yok saymaktan çekinmeyin.

  • .NET Core 3,1 SDK.

Azure kaynakları ayarlama

Azure 'a dağıtma

Dağıtım işlemi yaklaşık 20 dakika sürer. Tamamlandıktan sonra, aşağıdakiler dahil olmak üzere Azure aboneliğine dağıtılan belirli Azure kaynaklarına sahip olursunuz:

  1. Video Çözümleyicisi hesabı -bu bulut hizmeti , video Çözümleyicisi Edge modülünü kaydetmek ve kaydedilmiş video ve video analizinin kayıttan yürütülmesi için kullanılır.
  2. Depolama hesabı -kayıtlı video ve video analizlerini depolamak için.
  3. Yönetilen kimlik -bu, yukarıdaki depolama hesabına erişimi yönetmek için kullanılan, Kullanıcı tarafından atanan yönetilen kimlik 'dir.
  4. Sanal makine -bu sanal makineli, sanal makine olarak görev yapacak bir makinedir.
  5. IoT Hub -bu, IoT uygulamanız, IoT Edge modülleriniz ve yönettiği cihazlar arasında çift yönlü iletişim için bir merkezi ileti hub 'ı görevi görür.

Yukarıda bahsedilen kaynaklara ek olarak, hızlı başlangıçlarda ve öğreticilerde kullanılmak üzere depolama hesabınızdaki ' dağıtım-çıkış ' dosya paylaşımında aşağıdaki öğeler de oluşturulur:

  • appSettings. JSON -bu dosya, Visual Studio Code 'de örnek uygulamayı çalıştırmak için gereken Cihaz bağlantı dizesini ve diğer özellikleri içerir.
  • env.txt -bu dosya, Visual Studio Code kullanarak dağıtım bildirimleri oluşturmak için ihtiyacınız olan ortam değişkenlerini içerir.
  • Deployment. JSON -bu, sınır modüllerini sanal sınır cihazına dağıtmak için şablon tarafından kullanılan dağıtım bildirimidir.

İpucu

Tüm gerekli Azure kaynaklarını oluştururken sorunlarla karşılaşırsanız, lütfen bu hızlıbaşlangıçta el ile adımları kullanın.

Genel Bakış

Azure video Çözümleyicisi, hareket algılamayı temel alır

Bu diyagram, bu hızlı başlangıçta sinyalin nasıl akacağını gösterir. Edge modülü , Real-Time Akış Protokolü (RTSP) sunucusunu BARıNDıRAN bir IP kamerasına benzetir. Bir RTSP kaynak düğümü, bu sunucudan video akışını çeker ve hareket algılama işlemcisi düğümüne video çerçeveleri gönderir. Hareket algılama işlemcisi düğümü, canlı video 'daki hareketi algılamanıza olanak sağlar. Gelen video çerçevelerini inceler ve videoda hareket olup olmadığını belirler. Hareket algılanırsa, video çerçevesini ardışık düzendeki bir sonraki düğüme geçirir ve bir olay yayar. Son olarak, tüm verilmiş olaylar, IoT Hub yayımlandıkları IoT Hub ileti havuzuna gönderilir.

Geliştirme ortamınızı kurma

Örnek kodunu alma

  1. AVA C# örnekleri deposunu klonlama.

  2. Visual Studio Code başlatarak, sonra da repo'nun indirilmiş olduğu klasörü açın.

  3. Bu Visual Studio Code src/cloud-to-device-console-app klasörüne gidin ve appsettings.json adlı bir dosya oluşturun. Bu dosya, programı çalıştırmak için gereken ayarları içerir.

  4. Yukarıdaki kurulum adımlarında oluşturulan depolama hesabında dosya paylaşımına gidin ve "deployment-output" dosya paylaşımının altında appsettings.json dosyasını bulun. Dosyaya tıklayın ve ardından "İndir" düğmesine basın. İçeriğin yeni bir tarayıcı sekmesinde açılması gerekir ve bu sekme şöyle görünür:

    {
        "IoThubConnectionString" : "HostName=xxx.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey=XXX",
        "deviceId" : "avasample-iot-edge-device",
        "moduleId" : "avaedge"
    }
    

    Bağlantı IoT Hub dizesini kullanarak Visual Studio Code uç modüllerine komut göndermenizi Azure IoT Hub. Yukarıdaki JSON dosyasını src/cloud-to-device-console-app/appsettings.json dosyasına kopyalayın.

  5. Ardından src/edge klasörüne göz atarak .env adlı bir dosya oluşturun. Bu dosya, uç Visual Studio Code dağıtmak için bu dosyanın kullandığı özellikleri içerir.

  6. Yukarıdaki kurulum adımlarında oluşturulan depolama hesabında dosya paylaşımına göz atarak "deployment-output"env.txt dosya paylaşımının altındaki dosya dosyasını bulun. Dosyaya tıklayın ve ardından "İndir" düğmesine basın. İçeriğin yeni bir tarayıcı sekmesinde açılması gerekir ve bu sekme şöyle görünür:

         SUBSCRIPTION_ID="<Subscription ID>"
         RESOURCE_GROUP="<Resource Group>"
         AVA_PROVISIONING_TOKEN="<Provisioning token>"
         VIDEO_INPUT_FOLDER_ON_DEVICE="/home/localedgeuser/samples/input"
         VIDEO_OUTPUT_FOLDER_ON_DEVICE="/var/media"
         APPDATA_FOLDER_ON_DEVICE="/var/lib/videoanalyzer"
         CONTAINER_REGISTRY_USERNAME_myacr="<your container registry username>"
         CONTAINER_REGISTRY_PASSWORD_myacr="<your container registry password>"
    

    JSON'u env.txt src/edge/.env dosyasına kopyalayın.

Bağlan'e IoT Hub

  1. Bu Visual Studio Code sol IoT Hub AZURE IOT HUB bölmesinin yanındaki Diğer eylemler simgesini seçerek bağlantı dizesini ayarlayın. dizesini src/cloud-to-device-console-app/appsettings.json dosyasından kopyalayın.

    Not

    Bu hizmet için yerleşik uç nokta bilgilerini IoT Hub. Bu bilgileri almak için Azure portal uygulamanıza IoT Hub sol gezinti bölmesinde Yerleşik uç noktalar seçeneğini belirleyin. Buraya tıklayın ve Olay Hub'ı ile uyumlu uç nokta bölümünün altında Event Hub ile uyumlu uç noktayı arama. Metinleri kopyalayıp kutuya yazın. Uç nokta şuna benzer: Endpoint=sb://iothub-ns-xxx.servicebus.windows.net/;SharedAccessKeyName=iothubowner;SharedAccessKey=XXX;EntityPath=<IoT Hub name>

  2. Yaklaşık 30 saniye içinde sol Azure IoT Hub bölümünde yenileyin. Aşağıdaki modüllerin dağıtılmış avasample-iot-edge-device olması gereken uç cihazı görüyorsanız:

    • Edge Hub (modül adı edgeHub)
    • Edge Aracısı (modül adı edgeAgent)
    • Video Analyzer (modül adı avaedge)
    • RTSP simülatörü (modül adı rtspsim)

Modülleri izlemek için hazırlanma

Bu hızlı başlangıç veya öğreticiyi çalıştırmayı kullanırsanız, olaylar IoT Hub. Bu olayları görmek için şu adımları izleyin:

  1. Gezgin bölmesini Visual Studio Code açın ve sol Azure IoT Hub üst köşedeki bölmeyi seçin.

  2. Cihazlar düğümünü genişletin.

  3. seçeneğine sağ tıklayın avasample-iot-edge-device ve Yerleşik Olay Uç Noktasını İzlemeye Başla'yı seçin.

    Not

    Bu hizmet için yerleşik uç nokta bilgilerini IoT Hub. Bu bilgileri almak için Azure portal uygulamanıza IoT Hub sol gezinti bölmesinde Yerleşik uç noktalar seçeneğini belirleyin. Buraya tıklayın ve Olay Hub'ı ile uyumlu uç nokta bölümünün altında Event Hub ile uyumlu uç noktayı arama. Metinleri kopyalayıp kutuya yazın. Uç nokta şuna benzer: Endpoint=sb://iothub-ns-xxx.servicebus.windows.net/;SharedAccessKeyName=iothubowner;SharedAccessKey=XXX;EntityPath=<IoT Hub name>

Örnek kodunu alma

  1. Ava Python örnekleri deposunukopyalayın.

  2. Visual Studio Code başlatın ve deponun indirildiği klasörü açın.

  3. Visual Studio Code, src/buluttan cihaza-console-app klasörüne gidin ve appsettings. json adlı bir dosya oluşturun. Bu dosya, programı çalıştırmak için gereken ayarları içerir.

  4. Yukarıdaki kurulum adımında oluşturulan depolama hesabındaki dosya paylaşımıyla tarayın ve "dağıtım-çıkış" dosya paylaşımının altındaki appSettings. JSON dosyasını bulun. Dosyaya tıklayın ve sonra "Indir" düğmesine basın. İçeriğin yeni bir tarayıcı sekmesinde açılması gerekir, bu, şöyle görünmelidir:

    {
      "IoThubConnectionString": "HostName=xxx.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey=XXX",
      "deviceId": "avasample-iot-edge-device",
      "moduleId": "avaedge"
    }
    

    IoT Hub bağlantı dizesi, Azure IoT Hub aracılığıyla edge modüllerine komut göndermek için Visual Studio Code kullanmanıza olanak sağlar. Yukarıdaki JSON 'ı src/Cloud-to-Device-Console-App/appSettings. JSON dosyasına kopyalayın.

  5. Ardından src/Edge klasörüne gidin ve . env adlı bir dosya oluşturun. bu dosya Visual Studio Code bir uç cihaza modül dağıtmak için kullandığı özellikleri içerir.

  6. Yukarıdaki kurulum adımında oluşturulan depolama hesabındaki dosya paylaşımıyla tarayın ve env.txt dosyasını "dağıtım-çıkış" dosya paylaşımının altında bulun. Dosyaya tıklayın ve sonra "Indir" düğmesine basın. İçeriğin yeni bir tarayıcı sekmesinde açılması gerekir, bu, şöyle görünmelidir:

         SUBSCRIPTION_ID="<Subscription ID>"
         RESOURCE_GROUP="<Resource Group>"
         AVA_PROVISIONING_TOKEN="<Provisioning token>"
         VIDEO_INPUT_FOLDER_ON_DEVICE="/home/localedgeuser/samples/input"
         VIDEO_OUTPUT_FOLDER_ON_DEVICE="/var/media"
         APPDATA_FOLDER_ON_DEVICE="/var/lib/videoanalyzer"
         CONTAINER_REGISTRY_USERNAME_myacr="<your container registry username>"
         CONTAINER_REGISTRY_PASSWORD_myacr="<your container registry password>"
    

    JSON 'ı env.txt src/Edge/. env dosyasına kopyalayın.

IoT Hub Bağlan

  1. Visual Studio Code ' de, sol alt köşedeki AZURE ıot Hub bölmesinin yanındaki daha fazla eylem simgesini seçerek IoT Hub bağlantı dizesini ayarlayın. Dizeyi src/Cloud-to-Device-Console-App/appSettings. json dosyasından kopyalayın.

    Not

    Bu hizmet için yerleşik uç nokta bilgilerini IoT Hub. Bu bilgileri almak için Azure portal uygulamanıza IoT Hub sol gezinti bölmesinde Yerleşik uç noktalar seçeneğini belirleyin. Buraya tıklayın ve Olay Hub'ı ile uyumlu uç nokta bölümünün altında Event Hub ile uyumlu uç noktayı arama. Metinleri kopyalayıp kutuya yazın. Uç nokta şuna benzer: Endpoint=sb://iothub-ns-xxx.servicebus.windows.net/;SharedAccessKeyName=iothubowner;SharedAccessKey=XXX;EntityPath=<IoT Hub name>

  2. Yaklaşık 30 saniye içinde, sol alt bölümdeki Azure IoT Hub yenileyin. avasample-iot-edge-deviceAşağıdaki modüllerin dağıtılması gereken Edge cihazını görmeniz gerekir:

    • Edge hub 'ı (modül adı Edgehub)
    • Edge Aracısı (modül adı Edgeagent)
    • Video Çözümleyicisi (modül adı avaedge)
    • RTSP simülatör (modül adı rtspsım)

Modülleri izlemeye hazırlanma

Bu hızlı başlangıcı veya öğreticiyi Çalıştır ' ı kullandığınızda, olaylar IoT Hub gönderilir. Bu olayları görmek için şu adımları izleyin:

  1. Visual Studio Code gezgin bölmesini açın ve sol alt köşedeki Azure IoT Hub arayın.

  2. Cihazlar düğümünü genişletin.

  3. Öğesine sağ tıklayın avasample-iot-edge-device ve Izlemeyi Başlat yerleşik olay uç noktası' nı seçin.

    Not

    Bu hizmet için yerleşik uç nokta bilgilerini IoT Hub. Bu bilgileri almak için Azure portal uygulamanıza IoT Hub sol gezinti bölmesinde Yerleşik uç noktalar seçeneğini belirleyin. Buraya tıklayın ve Olay Hub'ı ile uyumlu uç nokta bölümünün altında Event Hub ile uyumlu uç noktayı arama. Metinleri kopyalayıp kutuya yazın. Uç nokta şuna benzer: Endpoint=sb://iothub-ns-xxx.servicebus.windows.net/;SharedAccessKeyName=iothubowner;SharedAccessKey=XXX;EntityPath=<IoT Hub name>

Örnek videoyu gözden geçirin

Azure kaynaklarını ayarsanız, ana yol trafiğinin kısa bir videosu, azure'da azure sanal makinesi olarak IoT Edge kopyalanır. Bu hızlı başlangıçta canlı akışın benzetimini yapmak için video dosyası 2.

VLC medya oynatıcısı gibi bir uygulama açın. Ctrl+N tuşlarını seçin ve ardından kayıttan yürütmeyi başlatmak için otoyol kesişimi örnek videonun bağlantısını yapıştırın. Otoyol trafiğinde hareket eden birçok aracın çekimlerini görüyorsunuz.

Azure kaynaklarını ayarsanız, ana yol trafiğinin kısa bir videosu, Azure'da azure sanal makinesi olarak IoT Edge kopyalanır. Bu hızlı başlangıçta canlı akışın benzetimini yapmak için video dosyası 2.

VLC medya oynatıcısı gibi bir uygulama açın. Ctrl+N tuşlarını seçin ve ardından kayıttan yürütmeyi başlatmak için otoyol kesişimi örnek videonun bağlantısını yapıştırın. Otoyol trafiğinde hareket eden birçok aracın çekimlerini görüyorsunuz.

Örnek dosyaları inceleyin

  1. Bu Visual Studio Code src/edge'e gidin. .env dosyasını ve birkaç dağıtım şablonu dosyasını görüyorsunuz.

    Dağıtım şablonu, bazı özellikler için değişkenlerin kullanılan uç cihazın dağıtım bildirimini ifade eder. .env dosyası bu değişkenlerin değerlerini içerir.

  2. src/cloud-to-device-console-app klasörüne gidin. Burada appsettings.json dosyasını ve birkaç dosyayı daha görüyorsunuz:

    • c2d-console-app.csproj - Visual Studio Code.

    • operations.json - Programın çalıştırması istediğiniz işlemlerin listesi.

    • Program.cs - Örnek program kodu. Bu kod:

      • Uygulama ayarlarını yükler.
      • Video Analyzer uç modülü tarafından ortaya çıkacak doğrudan yöntemleri çağırır. Doğrudan yöntemlerini kullanarak canlı video akışlarını analiz etmek için modülünü kullanabilirsiniz.
      • TERMINAL penceresinde programın çıkışını inceleyilebilecek şekilde duraklatılır ve ÇıKıŞ penceresinde modül tarafından oluşturulan olayları inceler.
      • Kaynakları temizlemek için doğrudan yöntemleri çağırır.
  1. Visual Studio Code, src/edge bölümüne gidin. . Env dosyası ve birkaç dağıtım şablonu dosyası görürsünüz.

    Dağıtım şablonu, sınır cihazının bazı özellikler için kullanıldığı dağıtım bildirimini ifade eder. . Env dosyası bu değişkenlerin değerlerini içerir.

  2. Src/buluttan cihaza-Console-App klasörüne gidin. Burada appSettings. JSON dosyasını ve diğer birkaç dosyayı görürsünüz:

    • Operations. JSON -programın çalıştırmasını istediğiniz işlemlerin bir listesi.

    • Main.py -örnek program kodu. Bu kod:

      • Uygulama ayarlarını yükler.
      • Azure video Çözümleyicisi modülü tarafından açığa çıkarılan doğrudan yöntemleri çağırır. Doğrudan yöntemleriniçağırarak canlı video akışlarını çözümlemek için modülünü kullanabilirsiniz.
      • Programın çıkışını TERMINAL penceresinde Incelemenize ve Çıkış penceresinde modül tarafından oluşturulan olayları incelemenize olanak sağlamak için duraklar.
      • Kaynakları temizlemek için doğrudan yöntemleri çağırır.

Dağıtım bildirimini oluşturma ve dağıtma

Dağıtım bildirimi, bir sınır cihazına hangi modüllerin dağıtıldığını tanımlar. Ayrıca, bu modüllerle ilgili yapılandırma ayarlarını tanımlar.

Şablon dosyasından bildirim oluşturmak ve ardından Edge cihazına dağıtmak için bu adımları izleyin.

  1. Visual Studio Code’u açın.

  2. Azure ıOT hub bölmesinin yanındaki IoT Hub bağlantı dizesini ayarlamak için diğer eylemler simgesini seçin. Dizeyi src/Cloud-to-Device-Console-App/appSettings. JSON dosyasından kopyalayabilirsiniz.

    IOT bağlantı dizesi ayarla

    Not

    Bu hizmet için yerleşik uç nokta bilgilerini IoT Hub. Bu bilgileri almak için Azure portal uygulamanıza IoT Hub sol gezinti bölmesinde Yerleşik uç noktalar seçeneğini belirleyin. Buraya tıklayın ve Olay Hub'ı ile uyumlu uç nokta bölümünün altında Event Hub ile uyumlu uç noktayı arama. Metinleri kopyalayıp kutuya yazın. Uç nokta şuna benzer: Endpoint=sb://iothub-ns-xxx.servicebus.windows.net/;SharedAccessKeyName=iothubowner;SharedAccessKey=XXX;EntityPath=<IoT Hub name>

  3. Src/Edge/Deployment. Template. JSON öğesine sağ tıklayın ve IoT Edge dağıtım bildirimi oluştur' u seçin.

    IoT Edge dağıtım bildirimini oluşturma

    Bu eylem src/Edge/config klasöründe Deployment. AMD64. JSON adlı bir bildirim dosyası oluşturmalı.

  4. Src/Edge/config/Deployment. AMD64. JSON öğesine sağ tıklayın, tek cihaz için dağıtım oluştur' u seçin ve ardından Edge cihazınızın adını seçin.

    Tek bir cihaz için dağıtım oluşturma

  5. IoT Hub bir cihaz seçmeniz istendiğinde, açılan menüden avasample-IoT-Edge-Device ' ı seçin.

  6. 30 saniye sonra, pencerenin sol alt köşesinde Azure IoT Hub ' yi yenileyin. Edge cihazında artık aşağıdaki dağıtılan modüller gösterilmektedir:

    • Video Çözümleyicisi Edge modülü (modül adı avaedge )
    • Real-Time streaming Protocol (RTSP) Simülatörü (modül adı rtspsim )

Dağıtım bildirimi, bir uç cihaza hangi modüllerin dağıtılacağı tanımlar. Ayrıca bu modüller için yapılandırma ayarlarını tanımlar.

Şablon dosyasından bildirim oluşturmak ve uç cihaza dağıtmak için bu adımları izleyin.

  1. Visual Studio Code’u açın.

  2. AZURE IOT HUB bölmesinin yanındaki Diğer eylemler simgesini seçerek bağlantı dizesini IoT Hub ayarlayın. Dizeyi src/cloud-to-device-console-app/appsettings.json dosyasından kopyaabilirsiniz.

    IOT Bağlantı Dizesini Ayarlama

    Not

    Bu hizmet için yerleşik uç nokta bilgilerini IoT Hub. Bu bilgileri almak için Azure portal uygulamanıza IoT Hub sol gezinti bölmesinde Yerleşik uç noktalar seçeneğini belirleyin. Buraya tıklayın ve Olay Hub'ı ile uyumlu uç nokta bölümünün altında Event Hub ile uyumlu uç noktayı arama. Metinleri kopyalayıp kutuya yazın. Uç nokta şuna benzer: Endpoint=sb://iothub-ns-xxx.servicebus.windows.net/;SharedAccessKeyName=iothubowner;SharedAccessKey=XXX;EntityPath=<IoT Hub name>

  3. src/edge/deployment.template.json'a sağ tıklayın ve Dağıtım Bildirimi'IoT Edge Oluştur'u seçin.

    Dağıtım IoT Edge oluşturma

    Bu eylem, src/edge/config klasöründe deployment.amd64.json adlı bir bildirim dosyası oluşturmalısınız.

  4. src/edge/config/deployment.amd64.json dosyasına sağ tıklayın, Tek Cihaz için Dağıtım Oluştur'u seçin ve uç cihazınızın adını seçin.

    Tek bir cihaz için dağıtım oluşturma

  5. Yeni bir cihaz seçmeniz istendiğinde, IoT Hub menüsünden avasample-iot-edge-device öğesini seçin.

  6. Yaklaşık 30 saniye sonra pencerenin sol alt köşesindeki üst köşedeki Azure IoT Hub. Uç cihaz artık aşağıdaki dağıtılan modülleri gösterir:

    • Azure Video Analyzer (modül adı avaedge )
    • Real-Time Protokolü (RTSP) simülatörü (modül adı rtspsim )

Olayları izlemeye hazırlanma

Video Çözümleyicisi Edge modülünü, gelen canlı video akışındaki hareketleri tespit etmek ve olayları IoT Hub göndermek için kullanacaksınız. Bu olayları görmek için şu adımları izleyin:

  1. Visual Studio Code gezgin bölmesini açın ve sol alt köşedeki Azure IoT Hub arayın.

  2. Cihazlar düğümünü genişletin.

  3. Avasample-IoT-Edge-Device ' a sağ tıklayıp Izlemeyi Başlat yerleşik olay uç noktası' nı seçin.

    Yerleşik bir olay uç noktasını izlemeye başlama

    Not

    Bu hizmet için yerleşik uç nokta bilgilerini IoT Hub. Bu bilgileri almak için Azure portal uygulamanıza IoT Hub sol gezinti bölmesinde Yerleşik uç noktalar seçeneğini belirleyin. Buraya tıklayın ve Olay Hub'ı ile uyumlu uç nokta bölümünün altında Event Hub ile uyumlu uç noktayı arama. Metinleri kopyalayıp kutuya yazın. Uç nokta şuna benzer: Endpoint=sb://iothub-ns-xxx.servicebus.windows.net/;SharedAccessKeyName=iothubowner;SharedAccessKey=XXX;EntityPath=<IoT Hub name>

Azure Video Çözümleyicisi modülünü kullanarak gelen canlı video akışında hareket algılamak ve olay göndermek için IoT Hub. Bu olayları görmek için şu adımları izleyin:

  1. Gezgin bölmesini açın Visual Studio Code sol alt Azure IoT Hub üst köşedeki bölmeyi seçin.
  2. Cihazlar düğümünü genişletin.
  3. avasample-iot-edge-device'a sağ tıklayın ve Yerleşik Olay Uç Noktasını İzlemeye Başla'yı seçin.

Yerleşik olay uç noktasını izlemeye başlama

Not

Bu hizmet için yerleşik uç nokta bilgilerini IoT Hub. Bu bilgileri almak için Azure portal uygulamanıza IoT Hub sol gezinti bölmesinde Yerleşik uç noktalar seçeneğini belirleyin. Buraya tıklayın ve Olay Hub'ı ile uyumlu uç nokta bölümünün altında Event Hub ile uyumlu uç noktayı arama. Metinleri kopyalayıp kutuya yazın. Uç nokta şuna benzer: Endpoint=sb://iothub-ns-xxx.servicebus.windows.net/;SharedAccessKeyName=iothubowner;SharedAccessKey=XXX;EntityPath=<IoT Hub name>

Örnek programı çalıştırma

Örnek kodu çalıştırmak için aşağıdaki adımları izleyin:

  1. Visual Studio Code, uzantılar sekmesini açın (veya Ctrl + shıft + X tuşlarına basın) ve Azure IoT Hub aratın.

  2. sağ tıklayın ve uzantı Ayarlar seçin.

    uzantı Ayarlar

  3. "Ayrıntılı Iletiyi göster" i arayın ve etkinleştirin.

    Ayrıntılı Iletiyi göster

  4. Visual Studio Code, src/cloud-to-device-console-app/operations. json' a gidin.

  5. Pipelinetopologyset düğümünde aşağıdaki değeri görtığınızdan emin olun:

    "pipelineTopologyUrl" : "https://raw.githubusercontent.com/Azure/video-analyzer/main/pipelines/live/topologies/motion-detection/topology.json"
    
  6. livePipelineSetVe livePipelineDelete düğümlerinde, Topologyname değerinin, işlem hattı topolojisinde Name özelliğinin değeriyle eşleştiğinden emin olun:

    "topologyName" : "MotionDetection"

  7. F5 tuşunu seçerek bir hata ayıklama oturumu başlatın. TERMINAL penceresinde bazı iletiler görüntülenir.

  8. Operations. JSON dosyası ve çağrıları ile başlatılır pipelineTopologyList livePipelineList . Önceki hızlı başlangıçlarını bitirdikten sonra kaynakları temizledikten sonra bu işlem boş listeleri döndürür.

    -----------------------  Request: pipelineTopologyList  --------------------------------------------------
    
    {
    "@apiVersion": "1.1"
    }
    
    ---------------  Response: pipelineTopologyList - Status: 200  ---------------
    
    {
      "value": []
    }
    
    --------------------------------------------------------------------------
    
    

    TERMINAL penceresinde, bir sonraki doğrudan yöntem çağrısı kümesi gösterilir:

    • pipelineTopologySetÖnceki Pipelinetopologyıurl 'sini kullanan bir çağrısı
    • Aşağıdaki gövdesini kullanan öğesine yapılan bir çağrı livePipelineSet :
    {
      "@apiVersion": "1.1",
      "name": "Sample-Pipeline-1",
      "properties": {
        "topologyName": "MotionDetection",
        "description": "Sample pipeline description",
        "parameters": [
          {
            "name": "rtspUrl",
            "value": "rtsp://rtspsim:554/media/camera-300s.mkv"
          },
          {
            "name": "rtspUserName",
            "value": "testuser"
          },
          {
            "name": "rtspPassword",
            "value": "testpassword"
          }
        ]
      }
    }
    
    • Canlı işlem hattını livePipelineActivate ve videonun akışını başlatan bir çağrısı.
    • livePipelineListCanlı işlem hattının çalışır durumda olduğunu gösteren ikinci bir çağrı.
  9. TERMINAL penceresindeki çıktı, tarihinde duraklatılır Press Enter to continue . Henüz ENTER ' ı seçmeyin. Doğrudan çağrdığınız yöntemler için JSON yanıtı yüklerini görmek üzere yukarı kaydırın.

  10. Visual Studio Code Çıkış penceresine geçin. Video Çözümleyicisi Edge modülünün IoT Hub 'ına gönderdiği iletileri görürsünüz. Bu hızlı başlangıçta aşağıdaki bölümde bu iletiler ele alınmaktadır.

  11. Canlı işlem hattı çalışmaya devam eder ve sonuçları yazdırır. RTSP simülatörü kaynak videoyu döngüye sokmaya devam eder. Canlı ardışık düzeni durdurmak için, TERMINAL penceresine dönün ve ENTER ' u seçin.

    Sonraki çağrı dizisi kaynakları temizler:

    • İşlem hattını devre dışı bırakmak için bir çağrı livePipelineDeactivate .
    • İşlem hattını livePipelineDelete silme çağrısı.
    • İçin bir çağrı pipelineTopologyDelete , topolojiyi siler.
    • İçin nihai bir çağrı pipelineTopologyList , listenin boş olduğunu gösterir.

Örnek kodu çalıştırmak için aşağıdaki adımları izleyin:

  1. Visual Studio Code, uzantılar sekmesini açın (veya Ctrl + shıft + X tuşlarına basın) ve Azure IoT Hub aratın.

  2. sağ tıklayın ve uzantı Ayarlar seçin.

    uzantı Ayarlar

  3. "Ayrıntılı Iletiyi göster" i arayın ve etkinleştirin.

    Ayrıntılı Iletiyi göster

  4. Visual Studio Code, src/cloud-to-device-console-app/operations. json' a gidin.

  5. pipelineTopologySetDüğümünde aşağıdaki değeri görtığınızdan emin olun:

    "pipelineTopologyUrl" : "https://raw.githubusercontent.com/Azure/video-analyzer/main/pipelines/live/topologies/motion-detection/topology.json"
    
  6. livePipelineSetVe livePipelineDelete düğümlerinde, Topologyname değerinin, işlem hattı topolojisinde Name özelliğinin değeriyle eşleştiğinden emin olun:

    "topologyName" : "MotionDetection"

    • TERMINALVs Code penceresine gidin
    • /Video-Analyzer-iot-Edge-Python-Main/src/Cloud-to-Device-Console-App dizinine gitmek için CD komutunu kullanın
    • "Python main.py" öğesini çalıştırın ve pencerede yazdırılmış iletileri görürsünüz TERMINAL
  7. Operations. JSON dosyası ve çağrıları ile başlatılır pipelineTopologyList livePipelineList . Önceki hızlı başlangıçlarını bitirdikten sonra kaynakları temizledikten sonra bu işlem boş listeleri döndürür.

    -----------------------  Request: pipelineTopologyList  --------------------------------------------------
    
    {
    "@apiVersion": "1.1"
    }
    
    ---------------  Response: pipelineTopologyList - Status: 200  ---------------
    
    {
      "value": []
    }
    
    --------------------------------------------------------------------------
    
    

    TERMINAL penceresinde, bir sonraki doğrudan yöntem çağrısı kümesi gösterilir:

    • pipelineTopologySetÖnceki Pipelinetopologyıurl 'sini kullanan bir çağrısı
    • Aşağıdaki gövdesini kullanan öğesine yapılan bir çağrı livePipelineSet :
    {
      "@apiVersion": "1.1",
      "name": "Sample-Pipeline-1",
      "properties": {
        "topologyName": "MotionDetection",
        "description": "Sample pipeline description",
        "parameters": [
          {
            "name": "rtspUrl",
            "value": "rtsp://rtspsim:554/media/camera-300s.mkv"
          },
          {
            "name": "rtspUserName",
            "value": "testuser"
          },
          {
            "name": "rtspPassword",
            "value": "testpassword"
          }
        ]
      }
    }
    
    • Canlı işlem hattını livePipelineActivate ve videonun akışını başlatan bir çağrısı.
    • livePipelineListCanlı işlem hattının çalışır durumda olduğunu gösteren ikinci bir çağrı.
  8. TERMINAL penceresindeki çıktı, tarihinde duraklatılır Press Enter to continue . Henüz ENTER ' ı seçmeyin. Doğrudan çağrdığınız yöntemler için JSON yanıtı yüklerini görmek üzere yukarı kaydırın.

  9. Visual Studio Code Çıkış penceresine geçin. Azure video Çözümleyicisi modülünün IoT Hub 'ına gönderdiği iletileri görürsünüz. Bu hızlı başlangıçta aşağıdaki bölümde bu iletiler ele alınmaktadır.

  10. Canlı işlem hattı çalışmaya devam eder ve sonuçları yazdırır. RTSP simülatörü kaynak videoyu döngüye sokmaya devam eder. Canlı ardışık düzeni durdurmak için, TERMINAL penceresine dönün ve ENTER ' u seçin.

    Sonraki çağrı dizisi kaynakları temizler:

    • İşlem hattını devre dışı bırakmak için bir çağrı livePipelineDeactivate .
    • İşlem hattını livePipelineDelete silme çağrısı.
    • İçin bir çağrı pipelineTopologyDelete , topolojiyi siler.
    • İçin nihai bir çağrı pipelineTopologyList , listenin boş olduğunu gösterir.

Sonuçları yorumlama

Canlı işlem hattını çalıştırdığınızda, hareket algılayıcısı işlemci düğümünün sonuçları, IoT Hub 'ına IoT Hub ileti havuzu düğümünü geçer. Visual Studio Code çıkış penceresinde gördüğünüz iletiler bir body bölümü ve bir applicationproperties bölümü içerir. Daha fazla bilgi için bkz. IoT Hub Iletileri oluşturma ve okuma.

Aşağıdaki iletilerde, video Çözümleyicisi Edge modülü, uygulama özelliklerini ve gövdenin içeriğini tanımlar.

Mediasessionkurulduğu olayı

Canlı bir işlem hattı etkinleştirildiğinde, RTSP kaynak düğümü, rtspsim-live555 kapsayıcısında çalışan RTSP sunucusuna bağlanmaya çalışır. Bağlantı başarılı olursa, aşağıdaki olay yazdırılır.

[IoTHubMonitor] [10:51:34 AM] Message received from [avasample-iot-edge-device/avaedge]:
{
  "body": {
  {
    "sdp&quot;: &quot;SDP:\nv=0\r\no=- 1620204694595500 1 IN IP4 xxx.xxx.xxx.xxx\r\ns=Matroska video+audio+(optional)subtitles, streamed by the LIVE555 Media Server\r\ni=media/camera-300s.mkv\r\nt=0 0\r\na=tool:LIVE555 Streaming Media v2020.08.19\r\na=type:broadcast\r\na=control:*\r\na=range:npt=0-300.000\r\na=x-qt-text-nam:Matroska video+audio+(optional)subtitles, streamed by the LIVE555 Media Server\r\na=x-qt-text-inf:media/camera-300s.mkv\r\nm=video 0 RTP/AVP 96\r\nc=IN IP4 0.0.0.0\r\nb=AS:500\r\na=rtpmap:96 H264/90000\r\na=fmtp:96 packetization-mode=1;profile-level-id=4D0029;sprop-parameter-sets=Z00AKeKQCgC3YC3AQEBpB4kRUA==,aO48gA==\r\na=control:track1\r\n"
  },
  "properties": {
    "topic": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/ava-sample-deployment/providers/Microsoft.Media/videoAnalyzers/avasample",
    "subject": "/edgeModules/avaedge/livePipelines/Sample-Pipeline-1/sources/rtspSource",
    "eventType": "Microsoft.VideoAnalyzer.Diagnostics.MediaSessionEstablished",
    "eventTime": "2021-05-06T00:58:58.602Z",
    "dataVersion": "1.0"
  },
  "systemProperties": {
    "iothub-connection-device-id": "avasample-iot-edge-device",
    "iothub-connection-module-id": "avaedge",
    "iothub-message-source": "Telemetry",
    "messageId": "459c3255-7c86-4ff5-a1e5-7ce3fcb07627",
    "contentType": "application/json",
    "contentEncoding": "utf-8"
  }
}

Önceki çıktıda:

  • İleti bir tanılama olayıdır, Mediasessionkurdu. RTSP kaynak düğümünün (konu) RTSP simülatörü ile bağlandığını ve (benzetimli) canlı akışını almaya başladığını gösterir.
  • SDP bölümü, tanılama olayı hakkındaki verileri içerir. Bu durumda, veriler oturum açıklaması Protokolü (SDP) ayrıntılarını içerir.

MotionDetection olayı

Hareket algılandığında, video Çözümleyicisi modülü bir çıkarım olayı gönderir. ** Tür , hareket algılama işlemcisinin bir sonucu olduğunu göstermek için Motion olarak ayarlanır.

Bu iletinin bir örneği aşağıda verilmiştir:

{
  "body": {
    "timestamp": 145818422564951,
    "inferences": [
      {
        "type": "motion",
        "motion": {
          "box": {
            "l": 0.322176,
            "t": 0.574627,
            "w": 0.525,
            "h": 0.088889
          }
        }
      }
    ]
  },
  "properties": { … },
  "systemProperties": { … }
}

Bu örnekte:

  • Gövde değeri, analiz olayı hakkında veri. Bu durumda, olay bir çıkarım olayıdır, bu nedenle gövde zaman damgası ve ınbu verileri içerir.

  • Inbu veriler, türün hareket olduğunu gösterir. Bu hareket olayı hakkında ek verilere sahiptir.

  • Box bölümü, hareketli nesnenin çevresindeki bir sınırlayıcı kutunun koordinatlarını içerir. Değerler, videonun piksel cinsinden genişliği ve yüksekliğiyle normalleştirilir. Örneğin, orijinal piksel koordinatlarını almak için yatay boyutları 1920 ve dikey boyutlar 1080 ile çarpmanız gerekir.

    l - distance from left of image
    t - distance from top of image
    w - width of bounding box
    h - height of bounding box
    

Canlı işlem hattını çalıştırsanız, hareket algılayıcısı işlemci düğümünden gelen sonuçlar ileti havuzu IoT Hub IoT hub'a geçer. Bir gövde bölümü ve applicationProperties Visual Studio Code çıkış penceresinde gördüğünüz iletiler. Daha fazla bilgi için bkz. İletileri oluşturma IoT Hub okuyun.

Aşağıdaki iletilerde, Azure Video Analyzer modülü uygulama özelliklerini ve gövdenin içeriğini tanımlar.

MediaSessionEstablished olayı

Canlı işlem hattı etkinleştirildiğinde RTSP kaynak düğümü rtspsim-live555 kapsayıcısı üzerinde çalışan RTSP sunucusuna bağlanmaya çalışır. Bağlantı başarılı olursa aşağıdaki olay yazdırılır.

[IoTHubMonitor] [10:51:34 AM] Message received from [avasample-iot-edge-device/avaedge]:
{
  "body": {
  {
    "sdp&quot;: &quot;SDP:\nv=0\r\no=- 1620204694595500 1 IN IP4 xxx.xxx.xxx.xxx\r\ns=Matroska video+audio+(optional)subtitles, streamed by the LIVE555 Media Server\r\ni=media/camera-300s.mkv\r\nt=0 0\r\na=tool:LIVE555 Streaming Media v2020.08.19\r\na=type:broadcast\r\na=control:*\r\na=range:npt=0-300.000\r\na=x-qt-text-nam:Matroska video+audio+(optional)subtitles, streamed by the LIVE555 Media Server\r\na=x-qt-text-inf:media/camera-300s.mkv\r\nm=video 0 RTP/AVP 96\r\nc=IN IP4 0.0.0.0\r\nb=AS:500\r\na=rtpmap:96 H264/90000\r\na=fmtp:96 packetization-mode=1;profile-level-id=4D0029;sprop-parameter-sets=Z00AKeKQCgC3YC3AQEBpB4kRUA==,aO48gA==\r\na=control:track1\r\n"
  },
  "properties": {
    "topic": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/ava-sample-deployment/providers/Microsoft.Media/videoAnalyzers/avasample",
    "subject": "/edgeModules/avaedge/livePipelines/Sample-Pipeline-1/sources/rtspSource",
    "eventType": "Microsoft.VideoAnalyzer.Diagnostics.MediaSessionEstablished",
    "eventTime": "2021-05-06T00:58:58.602Z",
    "dataVersion": "1.0"
  },
  "systemProperties": {
    "iothub-connection-device-id": "avasample-iot-edge-device",
    "iothub-connection-module-id": "avaedge",
    "iothub-message-source": "Telemetry",
    "messageId": "459c3255-7c86-4ff5-a1e5-7ce3fcb07627",
    "contentType": "application/json",
    "contentEncoding": "utf-8"
  }
}

Yukarıdaki çıktıda:

  • İleti, MediaSessionEstablished tanılama olayıdır. RTSP kaynak düğümünün (konu) RTSP simülatörüyle bağlantılı olduğunu ve bir (simülasyon) canlı akışı almaya başladığına işaret ediyor.
  • sdp bölümünde tanılama olayıyla ilgili veriler yer almaktadır. Bu durumda veriler Oturum Açıklaması Protokolü (SDP) ayrıntılarını içerir.

MotionDetection olayı

Hareket algılandığında Video Analyzer modülü bir çıkarım olayı gönderir. Tür, hareket algılama işlemcisinin sonucu olduğunu belirtmek için hareket olarak ayarlanır.

Bu iletinin bir örneği şöyledir:

{
  "body": {
    "timestamp": 145818422564951,
    "inferences": [
      {
        "type": "motion",
        "motion": {
          "box": {
            "l": 0.322176,
            "t": 0.574627,
            "w": 0.525,
            "h": 0.088889
          }
        }
      }
    ]
  },
  "properties": { … },
  "systemProperties": { … }
}

Bu örnekte:

  • Gövde değeri analiz olayıyla ilgili verilerdir. Bu durumda olay bir çıkarım olayıdır, bu nedenle gövde zaman damgası ve çıkarım verileri içerir.

  • Çıkarım verileri türün hareket olduğunu gösterir. Bu hareket olayı hakkında ek veriler içerir.

  • Box bölümü, hareketli nesnenin çevresindeki sınırlayıcı kutunun koordinatlarını içerir. Değerler, piksel cinsinden videonun genişliği ve yüksekliğiyle normalleştirilmiştir. Örneğin özgün piksel koordinatlarını almak için yatay boyutları 1920 ve dikey boyutları 1080 ile çarparak elde edersiniz.

    l - distance from left of image
    t - distance from top of image
    w - width of bounding box
    h - height of bounding box
    

Kaynakları temizleme

Diğer hızlı başlangıçlarını denemek istiyorsanız, oluşturduğunuz kaynakları saklamanız gerekir. Aksi takdirde, Azure portal kaynak gruplarınıza gidin, bu hızlı başlangıcı çalıştırdığınız kaynak grubunu seçin ve ardından tüm kaynakları silin.

Sonraki adımlar