إجراء استرداد الفيديو باستخدام المتجهات (الإصدار 4.0 معاينة)

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

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

متطلبات الإدخال

التنسيقات المدعومة

تنسيق الملف ‏‏الوصف
asf ASF (تنسيق تدفق متقدم / نشط)
avi AVI (فيديو صوتي متداخل)
flv FLV (فيديو فلاش)
matroskamm, webm Matroska / WebM
mov،mp4 ،m4a ،3gp ، ،3g2mj2 QuickTime / MOV

برامج ترميز الفيديو المدعومة

برنامج ضغط الوسائط وفكها Format
h264 H.264 / AVC / MPEG-4 AVC / MPEG-4 الجزء 10
h265 H.265/HEVC
libvpx-vp9 libvpx VP9 (codec vp9)
mpeg4 MPEG-4 الجزء 2

برامج ترميز الصوت المعتمدة

برنامج ضغط الوسائط وفكها Format
aac AAC (ترميز صوتي متقدم)
mp3 MP3 (طبقة صوت MPEG 3)
pcm PCM (غير مضغوط)
vorbis Vorbis
wmav2 Windows Media Audio 2

استدعاء واجهات برمجة تطبيقات استرداد الفيديو

لاستخدام واجهات برمجة تطبيقات استرداد الفيديو في نمط نموذجي، يمكنك القيام بالخطوات التالية:

  1. إنشاء فهرس باستخدام PUT - إنشاء فهرس.
  2. إضافة مستندات الفيديو إلى الفهرس باستخدام PUT - CreateIngestion.
  3. انتظر حتى يكتمل الاستيعاب، والتحقق مع GET - ListIngestions.
  4. ابحث عن كلمة أساسية أو عبارة باستخدام POST - SearchByText.

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

الخطوة 1: إنشاء فهرس

للبدء، تحتاج إلى إنشاء فهرس لتخزين ملفات الفيديو وبيانات التعريف الخاصة بها وتنظيمها. يوضح المثال أدناه كيفية إنشاء فهرس يسمى "my-video-index" باستخدام Create Index API.

curl.exe -v -X PUT "https://<YOUR_ENDPOINT_URL>/computervision/retrieval/indexes/my-video-index?api-version=2023-05-01-preview" -H "Ocp-Apim-Subscription-Key: <YOUR_SUBSCRIPTION_KEY>" -H "Content-Type: application/json" --data-ascii "
{
  'metadataSchema': {
    'fields': [
      {
        'name': 'cameraId',
        'searchable': false,
        'filterable': true,
        'type': 'string'
      },
      {
        'name': 'timestamp',
        'searchable': false,
        'filterable': true,
        'type': 'datetime'
      }
    ]
  },
  'features': [
    {
      'name': 'vision',
      'domain': 'surveillance'
    },
    {
      'name': 'speech'
    }
  ]
}"

الاستجابة:

HTTP/1.1 201 Created
Content-Length: 530
Content-Type: application/json; charset=utf-8
request-id: cb036529-d1cf-4b44-a1ef-0a4e9fc62885
api-supported-versions: 2023-01-15-preview,2023-05-01-preview
x-envoy-upstream-service-time: 202
Date: Thu, 06 Jul 2023 18:05:05 GMT
Connection: close

{
  "name": "my-video-index",
  "metadataSchema": {
    "language": "en",
    "fields": [
      {
        "name": "cameraid",
        "searchable": false,
        "filterable": true,
        "type": "string"
      },
      {
        "name": "timestamp",
        "searchable": false,
        "filterable": true,
        "type": "datetime"
      }
    ]
  },
  "userData": {},
  "features": [
    {
      "name": "vision",
      "modelVersion": "2023-05-31",
      "domain": "surveillance"
    },
    {
      "name": "speech",
      "modelVersion": "2023-06-30",
      "domain": "generic"
    }
  ],
  "eTag": "\"7966244a79384cca9880d67a4daa9eb1\"",
  "createdDateTime": "2023-07-06T18:05:06.7582534Z",
  "lastModifiedDateTime": "2023-07-06T18:05:06.7582534Z"
}

الخطوة 2: إضافة ملفات الفيديو إلى الفهرس

بعد ذلك، يمكنك إضافة ملفات فيديو إلى الفهرس باستخدام بيانات التعريف المقترنة بها. يوضح المثال أدناه كيفية إضافة ملفي فيديو إلى الفهرس باستخدام عناوين URL ل SAS باستخدام Create Ingestion API.

curl.exe -v -X PUT "https://<YOUR_ENDPOINT_URL>/computervision/retrieval/indexes/my-video-index/ingestions/my-ingestion?api-version=2023-05-01-preview" -H "Ocp-Apim-Subscription-Key: <YOUR_SUBSCRIPTION_KEY>" -H "Content-Type: application/json" --data-ascii "
{
  'videos': [
    {
      'mode': 'add',
      'documentId': '02a504c9cd28296a8b74394ed7488045',
      'documentUrl': 'https://example.blob.core.windows.net/videos/02a504c9cd28296a8b74394ed7488045.mp4?sas_token_here',
      'metadata': {
        'cameraId': 'camera1',
        'timestamp': '2023-06-30 17:40:33'
      }
    },
    {
      'mode': 'add',
      'documentId': '043ad56daad86cdaa6e493aa11ebdab3',
      'documentUrl': '[https://example.blob.core.windows.net/videos/043ad56daad86cdaa6e493aa11ebdab3.mp4?sas_token_here',
      'metadata': {
        'cameraId': 'camera2'
      }
    }
  ]
}"

الاستجابة:

HTTP/1.1 202 Accepted
Content-Length: 152
Content-Type: application/json; charset=utf-8
request-id: ee5e48df-13f8-4a87-a337-026947144321
operation-location: http://api.example.com.trafficmanager.net/retrieval/indexes/my-test-index/ingestions/my-ingestion
api-supported-versions: 2023-01-15-preview,2023-05-01-preview
x-envoy-upstream-service-time: 709
Date: Thu, 06 Jul 2023 18:15:34 GMT
Connection: close

{
  "name": "my-ingestion",
  "state": "Running",
  "createdDateTime": "2023-07-06T18:15:33.8105687Z",
  "lastModifiedDateTime": "2023-07-06T18:15:34.3418564Z"
}

الخطوة 3: انتظر حتى يكتمل الاستيعاب

بعد إضافة ملفات الفيديو إلى الفهرس، تبدأ عملية الاستيعاب. قد يستغرق الأمر بعض الوقت استنادا إلى حجم الملفات وعددها. للتأكد من اكتمال الاستيعاب قبل إجراء عمليات البحث، يمكنك استخدام واجهة برمجة تطبيقات Get Ingestion للتحقق من الحالة. انتظر حتى يعود "state" = "Completed" هذا الاستدعاء قبل المتابعة إلى الخطوة التالية.

curl.exe -v -X GET "https://<YOUR_ENDPOINT_URL>/computervision/retrieval/indexes/my-video-index/ingestions?api-version=2023-05-01-preview&$top=20" -H "ocp-apim-subscription-key: <YOUR_SUBSCRIPTION_KEY>"

الاستجابة:

HTTP/1.1 200 OK
Content-Length: 164
Content-Type: application/json; charset=utf-8
request-id: 4907feaf-88f1-4009-a1a5-ad366f04ee31
api-supported-versions: 2023-01-15-preview,2023-05-01-preview
x-envoy-upstream-service-time: 12
Date: Thu, 06 Jul 2023 18:17:47 GMT
Connection: close

{
  "value": [
    {
      "name": "my-ingestion",
      "state": "Completed",
      "createdDateTime": "2023-07-06T18:15:33.8105687Z",
      "lastModifiedDateTime": "2023-07-06T18:15:34.3418564Z"
    }
  ]
}

الخطوة 4: إجراء عمليات بحث باستخدام بيانات التعريف

بعد إضافة ملفات الفيديو إلى الفهرس، يمكنك البحث عن مقاطع فيديو معينة باستخدام بيانات التعريف. يوضح هذا المثال نوعين من عمليات البحث: أحدهما يستخدم ميزة "الرؤية" والآخر يستخدم ميزة "الكلام".

البحث باستخدام ميزة "الرؤية"

لإجراء بحث باستخدام ميزة "الرؤية"، استخدم واجهة برمجة تطبيقات البحث حسب النص مع عامل التصفية vision ، مع تحديد نص الاستعلام وأي عوامل تصفية أخرى مطلوبة.

curl.exe -v -X POST "https://<YOUR_ENDPOINT_URL>/computervision/retrieval/indexes/my-video-index:queryByText?api-version=2023-05-01-preview" -H "Ocp-Apim-Subscription-Key: <YOUR_SUBSCRIPTION_KEY>" -H "Content-Type: application/json" --data-ascii "
{
  'queryText': 'a man with black hoodie',
  'filters': {
    'stringFilters': [
      {
        'fieldName': 'cameraId',
        'values': [
          'camera1'
        ]
      }
    ],
    'featureFilters': ['vision']
  }
}"

الاستجابة:

HTTP/1.1 200 OK
Content-Length: 3289
Content-Type: application/json; charset=utf-8
request-id: 4c2477df-d89d-4a98-b433-611083324a3f
api-supported-versions: 2023-05-01-preview
x-envoy-upstream-service-time: 233
Date: Thu, 06 Jul 2023 18:42:08 GMT
Connection: close

{
  "value": [
    {
      "documentId": "02a504c9cd28296a8b74394ed7488045",
      "documentKind": "VideoFrame",
      "start": "00:01:58",
      "end": "00:02:09",
      "best": "00:02:03",
      "relevance": 0.23974405229091644
    },
    {
      "documentId": "02a504c9cd28296a8b74394ed7488045",
      "documentKind": "VideoFrame",
      "start": "00:02:27",
      "end": "00:02:29",
      "best": "00:02:27",
      "relevance": 0.23762696981430054
    },
    {
      "documentId": "02a504c9cd28296a8b74394ed7488045",
      "documentKind": "VideoFrame",
      "start": "00:00:26",
      "end": "00:00:27",
      "best": "00:00:26",
      "relevance": 0.23250913619995117
    },
  ]
}

البحث باستخدام ميزة "الكلام"

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

curl.exe -v -X POST "https://<YOUR_ENDPOINT_URL>com/computervision/retrieval/indexes/my-video-index:queryByText?api-version=2023-05-01-preview" -H "Ocp-Apim-Subscription-Key: <YOUR_SUBSCRIPTION_KEY>" -H "Content-Type: application/json" --data-ascii "
{
  'queryText': 'leave the area',
  'dedup': false,
  'filters': {
    'stringFilters': [
      {
        'fieldName': 'cameraId',
        'values': [
          'camera1'
        ]
      }
    ],
    'featureFilters': ['speech']
  }
}"

الاستجابة:

HTTP/1.1 200 OK
Content-Length: 49001
Content-Type: application/json; charset=utf-8
request-id: b54577bb-1f46-44d8-9a91-c9326df3ac23
api-supported-versions: 2023-05-01-preview
x-envoy-upstream-service-time: 148
Date: Thu, 06 Jul 2023 18:43:07 GMT
Connection: close

{
  "value": [
    {
      "documentId": "02a504c9cd28296a8b74394ed7488045",
      "documentKind": "SpeechTextSegment",
      "start": "00:07:07.8400000",
      "end": "00:07:08.4400000",
      "best": "00:07:07.8400000",
      "relevance": 0.8597901463508606
    },
    {
      "documentId": "02a504c9cd28296a8b74394ed7488045",
      "documentKind": "SpeechTextSegment",
      "start": "00:07:02.0400000",
      "end": "00:07:03.0400000",
      "best": "00:07:02.0400000",
      "relevance": 0.8506758213043213
    },
    {
      "documentId": "02a504c9cd28296a8b74394ed7488045",
      "documentKind": "SpeechTextSegment",
      "start": "00:07:10.4400000",
      "end": "00:07:11.5200000",
      "best": "00:07:10.4400000",
      "relevance": 0.8474636673927307
    }
  ]
}

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

مفاهيم التضمينات متعددة الوسائط