التشغيل السريع: البدء باستخدام Azure Video Analyzer باستخدام مدخل Azure

edge icon
بدلا من ذلك، تحقق من بدء استخدام البنية الأساسية لبرنامج ربط العمليات التجارية المباشرة ل Video Analyzer باستخدام المدخل.


ملاحظة

نقوم بإيقاف خدمة معاينة Azure Video Analyzer، وينصحك بنقل تطبيقاتك من محلل الفيديو بحلول 01 ديسمبر 2022.

لا يتأثر Azure Video Analyzer for Media بهذا الإيقاف. يتم الآن تغيير العلامة التجارية إلى Azure Video Indexer. انقر هنا لقراءة المزيد.

الإجراء المطلوب: لتقليل تعطيل أحمال العمل، قم بنقل التطبيق الخاص بك من Video Analyzer لكل اقتراحات موصوفة في هذا الدليل قبل 01 ديسمبر 2022. بعد 1 ديسمبر 2022، لن يعمل حساب Azure Video Analyzer الخاص بك. اعتبارا من 2 مايو 2022، لن تتمكن من إنشاء حسابات محلل فيديو جديدة.

يرشدك هذا الدليل السريع إلى خطوات البدء باستخدام Azure Video Analyzer. ستنشئ حساب Azure Video Analyzer والموارد المصاحبة له باستخدام مدخل Azure. ستقوم بعد ذلك بنشر وحدة edge محلل الفيديو ووحدة محاكاة كاميرا بروتوكول البث في الوقت الحقيقي (RTSP) إلى جهاز Azure IoT Edge.

بعد إكمال خطوات الإعداد، ستتمكن من تشغيل بث الفيديو المباشر المحاكي من خلال مسار يكتشف أي حركة في هذا البث و يبلغ عنها. يمثل الرسم التخطيطي التالي هذا المسار بيانيًا.

Diagram of a pipeline that detects and reports motion.

المتطلبات الأساسية

تلميح

عند تثبيت ملحق أدوات IoT Azure، قد يُطلب منك تثبيت Docker. لا تتردد في تجاهل المطالبة.

إعداد جهازك IoT Edge

يجب تكوين الوحدة النمطية Azure Video Analyzer للعمل على جهاز IoT Edge باستخدام حساب مستخدم محلي غير مميز. تحتاج الوحدة النمطية إلى مجلدات محلية معينة لتخزين بيانات تكوين التطبيق. تحتاج وحدة محاكاة كاميرا RTSP إلى ملفات فيديو يمكنها من خلالها توليف بث فيديو مباشر.

شغل الأمر التالي على جهاز IoT Edge:

bash -c "$(curl -sL https://aka.ms/ava-edge/prep_device)"

يقوم البرنامج النصي للجهاز الإعدادي في هذا الأمر بأتمتة مهام إنشاء مجلدات الإدخال والتكوين، وتنزيل ملفات إدخال الفيديو، وإنشاء حسابات مستخدمين بامتيازات صحيحة. بعد انتهاء الأمر بنجاح، يجب أن تشاهد المجلدات التالية التي تم إنشاؤها على جهاز Edge خاصتك:

  • /home/localedgeuser/samples
  • /home/localedgeuser/samples/input
  • /var/lib/videoanalyzer
  • /var/media

يتم استخدام ملفات الفيديو (_.mkv) في المجلد _/home/localedgeuser/samples/input* لمحاكاة الفيديو المباشر.

إنشاء موارد Azure

الخطوة التالية هي إنشاء موارد Azure المطلوبة (حساب محلل الفيديو وحساب التخزين والهوية المدارة المعينة من قبل المستخدم). ثم يمكنك إنشاء سجل حاوية اختياري وتسجيل وحدة نمطية Edge محلل فيديو باستخدام حساب محلل الفيديو.

عند إنشاء حساب Azure Video Analyzer، يجب عليك إقران حساب موقع تخزين Azure به. إذا كنت تستخدم محلل الفيديو لتسجيل الفيديو المباشر من كاميرا، يتم تخزين هذه البيانات ككائن ثنائي كبير الحجم في حاوية في حساب التخزين. يجب استخدام هوية مدارة لمنح حساب محلل الفيديو الوصول المناسب إلى حساب التخزين كما يلي.

ملاحظة

ستحتاج إلى اشتراك Azure حيث يمكنك الوصول إلى كل من ملف مساهم دور و مسؤول وصول المستخدم إلى مجموعة الموارد التي ستنشئ بموجبها موارد جديدة (هوية مُدارة يعينها المستخدم، وحساب تخزين، وحساب Video Analyzer). إذا لم تكن لديك الأذونات الصحيحة، فاطلب من مسؤول حسابك منحك هذه الأذونات. يجب أن يكون حساب التخزين المرتبط في نفس منطقة حساب Video Analyzer. نوصي باستخدام حساب تخزين معيار للأغراض العامة v2.

إنشاء حساب محلل الفيديو في مدخل Azure

  1. سجّل الدخول إلى مدخل Azure.

  2. في شريط البحث في الأعلى، أدخل Video Analyzer.

  3. حدد Video Analyzers ضمن Services.

  4. حدد ⁧⁩إضافة⁧⁩.

  5. في القسمCreate Video Analyzer account أدخل هذه القيم المطلوبة:

    • الاشتراك: اختر الاشتراك الذي تستخدمه لإنشاء حساب محلل الفيديو.
    • مجموعة الموارد: اختر مجموعة الموارد التي ستنشئ فيها حساب محلل الفيديو، أو حدد Create new لإنشاء مجموعة موارد.
    • اسم حساب محلل الفيديو: أدخل اسمًا لحساب محلل الفيديو الخاص بك. ينبغي أن يكون الاسم مكتوبًا بأحرف صغيرة أو أرقام بدون مسافات، ويتراوح طوله بين 3 إلى 24 حرفاً.
    • الموقع: اختر موقعًا لنشر حساب محلل الفيديو الخاص بك (على سبيل المثال، West US 2).
    • حساب التخزين: أنشئ حساب تخزين. نوصي بتحديد حساب تخزين standard general-purpose v2.
    • هوية المستخدم: أنشئ وسمّ هوية مدارة جديدة تم تعيينها من قبل المستخدم.
  6. حدد Review + create من أسفل الصفحة.

إنشاء سجل حاويات

  1. حدد Create a resource>Containers>Container Registry.
  2. في علامة التبويب Basics أدخل قيم Resource groupوRegistry name. استخدم نفس مجموعة الموارد من الأقسام السابقة. يجب أن يكون اسم تسجيل الحاوية فريدًا داخل Azure، وأن يتكون من 5 إلى 50 حرفًا أو رقم.
  3. اقبل القيم الافتراضية للإعدادات المتبقية. ثم حدد «Review + create». راجع الإعدادات، ثم حدد Create.

انشر وحدات edge النمطية

انشر وحدة edge محلل الفيديو

  1. انتقل إلى حساب محلل الفيديو الخاص بك.
  2. حدد Edge Modules في جزء Edge.
  3. حدد Add edge modules، وأدخل avaedge كاسم لوحدة edge الجديدة، وحدد Add.
  4. تظهر صفحة Copy the provisioning token على الجانب الأيمن من الشاشة. انسخ القصاصة البرمجية التالية ضمن Recommended desired properties for IoT module deployment. ستحتاجها في خطوة لاحقة.
      {
          "applicationDataDirectory": "/var/lib/videoanalyzer",
          "ProvisioningToken": "XXXXXXX",
          "diagnosticsEventsOutputName": "diagnostics",
          "operationalEventsOutputName": "operational",
          "logLevel": "information",
          "LogCategories": "Application,Events",
          "allowUnsecuredEndpoints": true,
          "telemetryOptOut": false
      }
    
  5. انتقل إلى حساب Azure IoT Hub.
  6. حدد IoT Edge ضمن Automatic Device Management.
  7. حدد قيمة Device ID لجهاز IoT Edge.
  8. حدد Set modules.
  9. حدد Add، ثم حدد IoT Edge Moduleمن القائمة المنسدلة.
  10. أدخل avaedge كاسم لـ IoT Edge Module Name.
  11. انسخ والصق السطر التالي في حقل Image URI:mcr.microsoft.com/media/video-analyzer:1.
  12. حدد Environment Variables.
  13. ضمن NAME، أدخل LOCAL_USER_ID. ضمن VALUE، أدخل 1010.
  14. في الصف الثاني أسفل NAME، أدخل LOCAL_GROUP_ID. ضمن VALUE، أدخل 1010.
  15. حدد Container Create Options وانسخ والصق الأسطر التالية:
    {
      "HostConfig": {
        "LogConfig": {
          "Type": "",
          "Config": {
            "max-size": "10m",
            "max-file": "10"
          }
        },
        "Binds": [
          "/var/media/:/var/media/",
          "/var/lib/videoanalyzer/:/var/lib/videoanalyzer"
        ],
        "IpcMode": "host",
        "ShmSize": 1536870912
      }
    }
    
  16. حدد Module Twin Settings والصق القصاصة البرمجية التي نسختها سابقًا من صفحة Copy the provisioning token في حساب محلل الفيديو.
      {
          "applicationDataDirectory": "/var/lib/videoanalyzer",
          "ProvisioningToken": "XXXXXXX",
          "diagnosticsEventsOutputName": "diagnostics",
          "operationalEventsOutputName": "operational",
          "logLevel": "information",
          "LogCategories": "Application,Events",
          "allowUnsecuredEndpoints": true,
          "telemetryOptOut": false
      }
    
  17. حدد Add أسفل الشاشة.
  18. حدد Routes.
  19. ضمنNAME، أدخل AVAToHub. ضمن VALUE، أدخل FROM /messages/modules/avaedge/outputs/* INTO $upstream.
  20. حدد Review + create، ثم حدد Create لنشر وحدة edgeavaedge.

انشر وحدة edge لمحاكاة كاميرا RTSP

  1. انتقل إلى حسابك Azure IoT Hub.
  2. حدد IoT Edge ضمن Automatic Device Management.
  3. حدد قيمة Device ID لجهاز IoT Edge.
  4. حدد Set modules.
  5. حدد Add، ثم حدد IoT Edge Moduleمن القائمة المنسدلة.
  6. أدخل rtspsim كاسم لـ IoT Edge Module Name.
  7. انسخ والصق السطر التالي في حقل Image URI:mcr.microsoft.com/ava-utilities/rtspsim-live555:1.2.
  8. حدد Container Create Options وانسخ والصق الأسطر التالية:
    {
      "HostConfig": {
        "Binds": ["/home/localedgeuser/samples/input:/live/mediaServer/media"]
      }
    }
    
  9. حدد Add أسفل الشاشة.
  10. حدد Review + create، ثم حدد Create لنشر وحدة edgertspsim.

التحقق من النشر

في صفحة تفاصيل الجهاز، تحقق من إدراج الوحدات النمطية avaedge و rtspsim على أنها محددة في النشرومبلغ عنها بواسطة الجهاز.

قد يستغرق الأمر بضع لحظات لبدء تشغيل الوحدات النمطية على الجهاز ثم الإبلاغ عنها إلى IoT Hub. قم بتحديث الصفحة لمشاهدة حالة محدثة. رمز الحالة 200 -- OK يعني أن وقت تشغيل IoT Edge سليم ويعمل بشكل جيد.

Screenshot that shows a status value for an IoT Edge runtime.

إعداد بيئة التطوير

الحصول على سلسلة اتصال IoT Hub

  1. في مدخل Azure، انتقل إلى حسابك في IoT Hub.
  2. ابحث عن Shared access policies في الجزء الأيمن وحددها.
  3. حدد النهج المسمىiothubowner.
  4. انسخ قيمة Primary connection string. سيكون شكلها على هذا النحوHostName=xxx.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey=XXX.

الاتصال بـ IoT hub

  1. افتح تعليمة Visual Studio وحدد View>Explorer. أو حدد Ctrl+Shift+E.

  2. في الركن السفلي الأيسر من علامة التبويب ⁧⁩مستكشف⁧⁩، حدد ⁧⁩Azure IoT Hub⁧⁩.

  3. حدد رمز ⁧⁩خيارات إضافية⁧⁩ لعرض قائمة السياق. ثم حدد ⁧⁩تعيين سلسلة اتصال لوحة مركز IoT⁧⁩.

  4. عند ظهور مربع إدخال، أدخل سلسلة اتصال مركز loT الخاص بك.

  5. في حوالي 30 ثانية، حدّث Azure IoT Hub في القسم السفلي الأيسر. ينبغي أن تشاهد معرف جهازك، الذي يجب أن يحتوي على الوحدات النمطية التالية منشورة:

    • وحدة edge محلل الفيديو (اسم الوحدة النمطية avaedge)
    • محاكي RTSP (اسم الوحدة⁧⁩rtspsim⁧⁩)

    Screenshot that shows the expanded Modules node.

تلميح

إذا قمت بنشر "محلل فيديو" يدويًا على جهاز edge (مثل جهاز ARM64)، ستظهر الوحدة النمطية تحت هذا الجهاز، ضمن Azure IoT Hub. يمكنك تحديد تلك الوحدة النمطية ومتابعة الخطوات التالية.

الاستعداد لمراقبة الوحدات النمطية

عند استخدام هذا التشغيل السريع، سيتم إرسال الأحداث إلى IoT Hub. لمشاهدة هذه الأحداث اتبع الخطوات التالية:

  1. في تعليمة Visual Studio البرمجية، افتح علامة تبويب Extensions، (أو حدد Ctrl+Shift+X) وابحث عن Azure IoT Hub.

  2. انقر بزر الماوس الأيمن فوق ملحق IoT Hub وحدد Extension Settings.

    Screenshot that shows the selection of Extension Settings.

  3. ابحث عن Show Verbose Message.

    Screenshot of Show Verbose Message enabled.

  4. افتح جزء Explorer في تعليمة Visual Studio البرمجية، وابحث عن Azure IoT Hub في الركن السفلي الأيسر.

  5. قم بتوسيع عقدة Devices.

  6. انقر بزر الماوس الأيمن فوق معرف الجهاز، وحدد Start Monitoring Built-in Event Endpoint.

    ملاحظة

    قد يطلب منك توفير معلومات نقطة النهاية المضمنة لـ IoT Hub. للحصول على هذه المعلومات، انتقل إلى حساب IoT Hub الخاص بك في مدخل Azure وابحث عن Built-in endpoints في الجزء الأيسر. حددها وابحث عن المقطع Event Hub-compatible endpoint. انسخ النص في المربع واستخدمه. ستظهر نقطة النهاية على هذا الشكل:

    Endpoint=sb://iothub-ns-xxx.servicebus.windows.net/;SharedAccessKeyName=iothubowner;SharedAccessKey=XXX;EntityPath=<IoT Hub name>
    

استخدم استدعاءات الأسلوب المباشر

يمكنك الآن تحليل بث الفيديو المباشر عن طريق استدعاء الأساليب المباشرة التي تعرضها الوحدة النمطية edge لمحلل الفيديو. اقرأ الأساليب المباشرة لمحلل الفيديو للتعرف على كافة الأساليب المباشرة التي توفرها الوحدة النمطية. يمكن العثور على مخطط الطرق المباشرة هنا.

تعداد طبولوجيا المسارات

تعدد هذه الخطوة طبولوجيا المسارات في الوحدة النمطية.

  1. انقر بزر الماوس الأيمن فوق الوحدة النمطيةavaedge وحدد Invoke Module Direct Method من القائمة المختصرة.

  2. اكتب pipelineTopologyList في مربع التحرير وحدد مفتاح الإدخال.

  3. انسخ حمولة JSON التالية والصقها في مربع التحرير، ثم حدد مفتاح الإدخال.

    {
      "@apiVersion": "1.1"
    }
    

في غضون ثوان قليلة، تظهر الاستجابة التالية في نافذةOUTPUT:

[DirectMethod] Invoking Direct Method [pipelineTopologyList] to [deviceId/avaedge] ...
[DirectMethod] Response from [deviceId/avaedge]:
{
  "status": 200,
  "payload": {
    "value": []
  }
}

الاستجابة متوقعة، لأنه لم يتم إنشاء أي طبولوجيا مسارات.

تعيين طبولوجيا مسار

باستخدام نفس الخطوات الموضحة سابقًا، يمكنك استدعاء pipelineTopologySet لتعيين طبولوجيا مسار باستخدام JSON التالي كحمولة. ستقوم بإنشاء طوبولوجيا مسار تسمى MotionDetection.

{
  "@apiVersion": "1.1",
  "name": "MotionDetection",
  "properties": {
    "description": "Analyzing live video to detect motion and emit events",
    "parameters": [
      {
        "name": "rtspUrl",
        "type": "string",
        "description": "rtspUrl"
      },
      {
        "name": "rtspUserName",
        "type": "string",
        "description": "rtspUserName",
        "default": "dummyUserName"
      },
      {
        "name": "rtspPassword",
        "type": "string",
        "description": "rtspPassword",
        "default": "dummypw"
      }
    ],
    "sources": [
      {
        "@type": "#Microsoft.VideoAnalyzer.RtspSource",
        "name": "rtspSource",
        "transport": "tcp",
        "endpoint": {
          "@type": "#Microsoft.VideoAnalyzer.UnsecuredEndpoint",
          "credentials": {
            "@type": "#Microsoft.VideoAnalyzer.UsernamePasswordCredentials",
            "username": "${rtspUserName}",
            "password": "${rtspPassword}"
          },
          "url": "${rtspUrl}"
        }
      }
    ],
    "processors": [
      {
        "@type": "#Microsoft.VideoAnalyzer.MotionDetectionProcessor",
        "sensitivity": "medium",
        "name": "motionDetection",
        "inputs": [
          {
            "nodeName": "rtspSource",
            "outputSelectors": []
          }
        ]
      }
    ],
    "sinks": [
      {
        "hubOutputName": "inferenceOutput",
        "@type": "#Microsoft.VideoAnalyzer.IotHubMessageSink",
        "name": "iotHubSink",
        "inputs": [
          {
            "nodeName": "motionDetection"
          }
        ]
      }
    ]
  }
}

تقوم حمولة JSON هذه بإنشاء طوبولوجيا تحدد ثلاثة معلمات، اثنان منها يحتويان على قيم افتراضية. للطبولوجيا عقدة مصدر واحدة(مصدر RTSP)،وعقدة معالج واحد (معالج الكشف عن الحركة،وعقدة متلقي واحدة (متلقي رسالة IoT Hub). تظهر الحمولة التمثيل البصري للطبولوجيا.

في غضون ثوان قليلة، تظهر الاستجابة التالية في نافذةOUTPUT:

{
  "status": 201,
  "payload": {
    "systemData": {
      "createdAt": "2021-03-21T18:16:46.491Z",
      "lastModifiedAt": "2021-03-21T18:16:46.491Z"
    },
    "name": "MotionDetection",
    "properties": {
      "description": "Analyzing live video to detect motion and emit events",
      "parameters": [
        {
          "name": "rtspPassword",
          "type": "string",
          "description": "rtspPassword",
          "default": "dummypw"
        },
        {
          "name": "rtspUrl",
          "type": "string",
          "description": "rtspUrl"
        },
        {
          "name": "rtspUserName",
          "type": "string",
          "description": "rtspUserName",
          "default": "dummyUserName"
        }
      ],
      "sources": [
        {
          "@type": "#Microsoft.VideoAnalyzer.RtspSource",
          "name": "rtspSource",
          "transport": "tcp",
          "endpoint": {
            "@type": "#Microsoft.VideoAnalyzer.UnsecuredEndpoint",
            "url": "${rtspUrl}",
            "credentials": {
              "@type": "#Microsoft.VideoAnalyzer.UsernamePasswordCredentials",
              "username": "${rtspUserName}",
              "password": "${rtspPassword}"
            }
          }
        }
      ],
      "processors": [
        {
          "@type": "#Microsoft.VideoAnalyzer.MotionDetectionProcessor",
          "sensitivity": "medium",
          "eventAggregationWindow": "PT1S",
          "name": "motionDetection",
          "inputs": [
            {
              "nodeName": "rtspSource",
              "outputSelectors": []
            }
          ]
        }
      ],
      "sinks": [
        {
          "@type": "#Microsoft.VideoAnalyzer.IotHubMessageSink",
          "hubOutputName": "inferenceOutput",
          "name": "iotHubSink",
          "inputs": [
            {
              "nodeName": "motionDetection",
              "outputSelectors": []
            }
          ]
        }
      ]
    }
  }
}

الحالة التي تم إرجاعها هي 201. تشير هذه الحالة إلى أنه تم إنشاء طبولوجيا جديدة.

جرب الخطوات التالية:

  • استدعاء pipelineTopologySet مرة أخرى. رمز الحالة الذي تم إرجاعه هو 200. يشير هذا الرمز إلى أنه تم تحديث الهيكل الحالي بنجاح.
  • استدعاء pipelineTopologySet مرة أخرى، ولكن تغيير سلسلة الوصف. رمز الحالة الذي تم إرجاعه هو 200، ويتم تحديث الوصف إلى القيمة الجديدة.
  • استدع pipelineTopologyList كما هو موضح في المقطع السابق. الآن يمكنك أن ترى طوبولوجيا MotionDetection في الحمولة التي تم إرجاعها.

قراءة طبولوجيا مسار

استدع pipelineTopologyGet باستخدام الحمولة التالية:

{
  "@apiVersion": "1.1",
  "name": "MotionDetection"
}

في غضون ثوان قليلة، تظهر الاستجابة التالية في نافذةOUTPUT:

{
  "status": 200,
  "payload": {
    "systemData": {
      "createdAt": "2021-03-21T18:16:46.491Z",
      "lastModifiedAt": "2021-03-21T18:16:46.491Z"
    },
    "name": "MotionDetection",
    "properties": {
      "description": "Analyzing live video to detect motion and emit events",
      "parameters": [
        {
          "name": "rtspPassword",
          "type": "string",
          "description": "rtspPassword",
          "default": "dummypw"
        },
        {
          "name": "rtspUrl",
          "type": "string",
          "description": "rtspUrl"
        },
        {
          "name": "rtspUserName",
          "type": "string",
          "description": "rtspUserName",
          "default": "dummyUserName"
        }
      ],
      "sources": [
        {
          "@type": "#Microsoft.VideoAnalyzer.RtspSource",
          "name": "rtspSource",
          "transport": "tcp",
          "endpoint": {
            "@type": "#Microsoft.VideoAnalyzer.UnsecuredEndpoint",
            "url": "${rtspUrl}",
            "credentials": {
              "@type": "#Microsoft.VideoAnalyzer.UsernamePasswordCredentials",
              "username": "${rtspUserName}",
              "password": "${rtspPassword}"
            }
          }
        }
      ],
      "processors": [
        {
          "@type": "#Microsoft.VideoAnalyzer.MotionDetectionProcessor",
          "sensitivity": "medium",
          "eventAggregationWindow": "PT1S",
          "name": "motionDetection",
          "inputs": [
            {
              "nodeName": "rtspSource",
              "outputSelectors": []
            }
          ]
        }
      ],
      "sinks": [
        {
          "@type": "#Microsoft.VideoAnalyzer.IotHubMessageSink",
          "hubOutputName": "inferenceOutput",
          "name": "iotHubSink",
          "inputs": [
            {
              "nodeName": "motionDetection",
              "outputSelectors": []
            }
          ]
        }
      ]
    }
  }
}

في حمولة الاستجابة، لاحظ هذه التفاصيل:

  • رمز الحالة هو 200، مما يشير إلى النجاح.
  • تتضمن الحمولة الطابع الزمني createdAt والطابع الزمني lastModifiedAt.

أنشئ مسارًا مباشرًا باستخدام طبولوجيا

بعد ذلك، أنشئ مسارًا مباشرًا يشير إلى طبولوجيا المسار السابق. استدع الأسلوب المباشر livePipelineSetبالحمولة التالية:

{
  "@apiVersion": "1.1",
  "name": "mdpipeline1",
  "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"
      }
    ]
  }
}

لاحظ أن هذه الحمولة:

  • تحدد الطوبولوجيا (MotionDetection) التي سيستخدمها المسار المباشر.
  • تحتوي على قيمة معلمة لـ rtspUrl، والتي لم يكن لها قيمة افتراضية في حمولة الطوبولوجيا. هذه القيمة هي ارتباط إلى نموذج الفيديو التالي:

في غضون ثوان قليلة، تظهر الاستجابة التالية في نافذةOUTPUT:

{
  "status": 201,
  "payload": {
    "systemData": {
      "createdAt": "2021-03-21T18:27:41.639Z",
      "lastModifiedAt": "2021-03-21T18:27:41.639Z"
    },
    "name": "mdpipeline1",
    "properties": {
      "state": "Inactive",
      "description": "Sample pipeline description",
      "topologyName": "MotionDetection",
      "parameters": [
        {
          "name": "rtspPassword",
          "value": "testpassword"
        },
        {
          "name": "rtspUrl",
          "value": "rtsp://rtspsim:554/media/camera-300s.mkv"
        },
        {
          "name": "rtspUserName",
          "value": "testuser"
        }
      ]
    }
  }
}

في حمولة الاستجابة، لاحظ أن:

  • رمز الحالة هو 201، مما يشير إلى إنشاء مسار مباشر جديد.
  • تشير الحالة Inactive إلى أنه تم إنشاء المسار المباشر ولكن لم يتم تنشيطه. لمزيد من المعلومات، راجع حالات المسارات.

جرب الطرق المباشرة التالية كخطوات تالية:

  • استدع livePipelineSet مرة أخرى بنفس الحمولة. لاحظ أن رمز الحالة الذي تم إرجاعه الآن هو 200.

  • استدع livePipelineSet مرة أخرى ولكن مع وصف مختلف. لاحظ الوصف المحدث في حمولة الاستجابة، مما يشير إلى أن المسار المباشر تم تحديثه بنجاح.

  • استدع livePipelineSet، ولكن غير الاسم إلى mdpipeline2وغيرrtspUrlإلىrtsp://rtspsim:554/media/lots_015.mkv. في حمولة الاستجابة، لاحظ المسار المباشر المنشأ حديثًا (أي رمز الحالة 201).

    ملاحظة

    كما شرحنا فيطبولوجيا المسارات، يمكنك إنشاء مسارات حية متعددة، لتحليل بث الفيديو الحي من العديد من الكاميرات باستخدام طوبولوجيا المسار نفسه. إذا أنشأت المزيد من المسارات المباشرة، احرص على حذفها أثناء خطوة التنظيف.

تنشيط المسار المباشر

يمكنك تنشيط مسار مباشر لبدء بث فيديو (محاكاة) مباشر من خلال المسار. استدع الأسلوب المباشر livePipelineActivateبالحمولة التالية:

{
  "@apiVersion": "1.1",
  "name": "mdpipeline1"
}

في غضون ثوان قليلة، تظهر الاستجابة التالية في نافذةOUTPUT:

{
  "status": 200,
  "payload": null
}

يشير رمز الحالة 200 إلى أنه تم تنشيط خط الأنابيب المباشر بنجاح.

تحقق من حالة المسار المباشر

استدع الأسلوب المباشر livePipelineGetبالحمولة التالية:

{
  "@apiVersion": "1.1",
  "name": "mdpipeline1"
}

في غضون ثوان قليلة، تظهر الاستجابة التالية في نافذةOUTPUT:

{
  "status": 200,
  "payload": {
    "systemData": {
      "createdAt": "2021-03-21T18:27:41.639Z",
      "lastModifiedAt": "2021-03-21T18:27:41.639Z"
    },
    "name": "mdpipeline1",
    "properties": {
      "state": "Active",
      "description": "Sample pipeline description",
      "topologyName": "MotionDetection",
      "parameters": [
        {
          "name": "rtspPassword",
          "value": "testpassword"
        },
        {
          "name": "rtspUrl",
          "value": "rtsp://rtspsim:554/media/camera-300s.mkv"
        },
        {
          "name": "rtspUserName",
          "value": "testuser"
        }
      ]
    }
  }
}

في حمولة الاستجابة، لاحظ هذه التفاصيل:

  • رمز الحالة هو 200، مما يشير إلى النجاح.
  • تشير الحالة Active إلى أنه تم إنشاء المسار المباشر وأنه نشط الآن.

لاحظ النتائج

يستخدم المسار المباشر الذي قمت بإنشائه وتنشيطه عقدة معالج الكشف عن الحركة للكشف عن الحركة في بث الفيديو المباشر الوارد ويرسل الأحداث إلى متلقي IoT Hub. ترحّل هذه الأحداث إلى IoT Hub كرسائل، والتي يمكن ملاحظتها الآن. الرسائل في نافذةOUTPUT سيكون لها "النص الأساسي" التالي:

{
  "timestamp": 145471641211899,
  "inferences": [
    {
      "type": "motion",
      "motion": {
        "box": {
          "l": 0.514644,
          "t": 0.574627,
          "w": 0.3375,
          "h": 0.096296
        }
      }
    }
  ]
}

يشير المقطع inferencesإلى أن النوع عبارة عن حركة. ويوفر المزيد من البيانات حول حدث الحركة. كما يوفر مربع إحاطة لمنطقة إطار الفيديو (في الطابع الزمني المحدد) الذي تم فيه الكشف عن الحركة.

استدع مزيدًا من استدعاءات الأساليب المباشرة للتنظيف

بعد ذلك، يمكنك استدعاء أساليب مباشرة لإلغاء تنشيط وحذف مسار مباشر (بهذا الترتيب).

إلغاء تنشيط المسار المباشر

استدع الأسلوب المباشر livePipelineDeactivateبالحمولة التالية:

{
  "@apiVersion": "1.1",
  "name": "mdpipeline1"
}

في غضون ثوان قليلة، تظهر الاستجابة التالية في نافذةOUTPUT:

{
  "status": 200,
  "payload": null
}

يشير رمز الحالة 200 إلى أنه تم إلغاء تنشيط المسار المباشر بنجاح.

بعد ذلك، حاول استدعاء livePipelineGet كما هو موضح سابقًا في هذه المقالة. لاحظ قيمة الحالة.

حذف المسار المباشر

استدع الأسلوب المباشر livePipelineDeleteبالحمولة التالية:

{
  "@apiVersion": "1.1",
  "name": "mdpipeline1"
}

في غضون ثوان قليلة، تظهر الاستجابة التالية في نافذةOUTPUT:

{
  "status": 200,
  "payload": null
}

يشير رمز الحالة 200 إلى أنه تم حذف المسار المباشر بنجاح.

إذا قمت أيضًا بإنشاء مسار يسمى mdpipeline2، لن تتمكن عندها من حذف طبولوجيا المسار دون حذف هذا المسار الإضافي كذلك. استدع الأسلوب المباشر livePipelineDeleteمجددًا بالحمولة التالية:

{
    "@apiVersion" : "1.1",
    "name" : "mdpipeline2"
}

في غضون ثوان قليلة، تظهر الاستجابة التالية في نافذةOUTPUT:

{
  "status": 200,
  "payload": null
}

يشير رمز الحالة 200 إلى أنه تم حذف المسار المباشر بنجاح.

يمكنك استدعاء livePipelineList باستخدام نفس الحمولة مثل pipelineTopologyList. لاحظ أنه لا يتم تعداد مسارات مباشرة.

حذف طوبولوجيا مسار

بعد حذف كافة المسارات المباشرة، يمكنك استدعاء الأسلوب المباشر pipelineTopologyDeleteبالحمولة التالية:

{
  "@apiVersion": "1.1",
  "name": "MotionDetection"
}

في غضون ثوان قليلة، تظهر الاستجابة التالية في نافذةOUTPUT:

{
  "status": 200,
  "payload": null
}

يشير رمز الحالة 200 إلى أنه تم حذف الطبولوجيا بنجاح.

يمكنك محاولة استدعاء pipelineTopologyList وملاحظة أن الوحدة النمطية لا تحتوي على أي طوبولوجيا.

تنظيف الموارد

إذا كنت ترغب في تجربة قوالب التشغيل السريع أو البرامج التعليمية الأخرى، فاحتفظ بالموارد التي أنشأتها. وإذا كنت لا ترغب في ذلك، فاذهب إلى مدخل Azure، ومن ثم مجموعات الموارد الخاصة بك، وحدد مجموعة الموارد حيث قمت بتشغيل قوالب التشغيل السريع هذه، واحذف كافة الموارد.

الخطوات التالية