إجراء استرداد الفيديو باستخدام المتجهات (الإصدار 4.0 معاينة)
تعد واجهات برمجة تطبيقات Azure الذكاء الاصطناعي Video Retrieval جزءا من Azure الذكاء الاصطناعي Vision وتمكن المطورين من إنشاء فهرس وإضافة مستندات (مقاطع فيديو وصور) إليه والبحث باللغة الطبيعية. يمكن للمطورين تحديد مخططات بيانات التعريف لكل فهرس واستيعاب بيانات التعريف للخدمة للمساعدة في الاسترداد. يمكن للمطورين أيضا تحديد الميزات التي يجب استخراجها من الفهرس (الرؤية والكلام) وتصفية بحثهم استنادا إلى الميزات.
المتطلبات الأساسية
- اشتراك Azure - إنشاء حساب مجانًا
- بمجرد أن يكون لديك اشتراك Azure، قم بإنشاء مورد Vision باستخدام المدخل. لهذه المعاينة، يجب عليك إنشاء المورد الخاص بك في إحدى المناطق التالية - شرق أستراليا أو شمال سويسرا أو السويد الوسطى أو شرق الولايات المتحدة.
- مورد Azure Storage - إنشاء مورد
متطلبات الإدخال
التنسيقات المدعومة
تنسيق الملف | الوصف |
---|---|
asf |
ASF (تنسيق تدفق متقدم / نشط) |
avi |
AVI (فيديو صوتي متداخل) |
flv |
FLV (فيديو فلاش) |
matroskamm , webm |
Matroska / WebM |
mov ،mp4 ،m4a ،3gp ، ،3g2 mj2 |
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 |
استدعاء واجهات برمجة تطبيقات استرداد الفيديو
لاستخدام واجهات برمجة تطبيقات استرداد الفيديو في نمط نموذجي، يمكنك القيام بالخطوات التالية:
- إنشاء فهرس باستخدام PUT - إنشاء فهرس.
- إضافة مستندات الفيديو إلى الفهرس باستخدام PUT - CreateIngestion.
- انتظر حتى يكتمل الاستيعاب، والتحقق مع GET - ListIngestions.
- ابحث عن كلمة أساسية أو عبارة باستخدام 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
}
]
}
الخطوات التالية
الملاحظات
https://aka.ms/ContentUserFeedback.
قريبًا: خلال عام 2024، سنتخلص تدريجيًا من GitHub Issues بوصفها آلية إرسال ملاحظات للمحتوى ونستبدلها بنظام ملاحظات جديد. لمزيد من المعلومات، راجعإرسال الملاحظات وعرضها المتعلقة بـ