![Advanced-UI](https://img.shields.io/static/v1?label=UI&message=Advanced&color=lightgrey) ![NOVA-UI](https://img.shields.io/static/v1?label=UI&message=NOVA&color=blue) The "Azure Video Analyzer" plugin uses the Azure Video Analyzer for Media (formerly known as Video Indexer) service to extract metadata from videos and displays the insights and player widgets. Videos can be uploaded automatically or via menu. Note: It seems Azure stuck with "Azure AI Video Indexer" even though it was announced everywhere that it will be called "Video Analyzer". [MINITOC] ## Properties To be configured in {home}/appserver/conf/custom.properties ##### azureVideoAnalyzer.license > type: string, **required: yes**, default: - The license key for the plugin (product: azureVideoAnalyzer), provided by *brix*. ##### azureVideoAnalyzer.allowedUserGroupIds.upload > type: comma-separated user group ids, required: no, default: super admins only The user groups which are allowed to upload videos. ##### azureVideoAnalyzer.allowedUserGroupIds.view > type: comma-separated user group ids, required: no, default: super admins only The user gorups which are allowed to view videos. ##### azureVideoAnalyzer.allowedUserGroupIds.edit > type: comma-separated user group ids, required: no, default: super admins only The user gourps which are allowed to view videos and edit insights. ##### azureVideoAnalyzer.threads > type: number between 2 to 10, requierd: no, default: 5 The number of threads used to process asset changes. ##### azureVideoAnalyzer.debounceTimeInSeconds > type: number between 2 and 60, requierd: no, default: 10 The debounce time in seconds (that's how long changes are accumulated and then processed all at once to avoid triggering the same action multiple times because other plugins are setting fields automatically after saving). ##### azureVideoAnalyzer.partitionThreshold > type: number between 100 and 1000, required: no, default: 200 The maximum number of direct children for a node (not counting structure nodes). Sub-nodes to group the nodes are created automatically. ##### azureVideoAnalyzer.url > type: url, required: no, default: https://api.videoindexer.ai/ The URL to the Azure Video Analyzer for Media service. ##### azureVideoAnalyzer.accountId > type: string, **required: yes**, default: - The account id, execute this request [here](https://api-portal.videoindexer.ai/api-details#api=Operations&operation=Get-Accounts-Authorization) to get it. ##### azureVideoAnalyzer.location > type: string, **required: yes**, default: - The location, also found [here](https://api-portal.videoindexer.ai/api-details#api=Operations&operation=Get-Accounts-Authorization). ##### azureVideoAnalyzer.apiKey > type: string, **required: yes**, default: - The API key, found [here](https://api-portal.videoindexer.ai/profile). ##### azureVideoAnalyzer.prefix > type: string, required: no, default: Celum The prefix to use for the external ID (asset ID) stored by Azure. ##### azureVideoAnalyzer.scope.search > type: string, required: for automation and init task, default: - The scope for automated video upload (if enabled), using [search util 2](/celum_extensions/search_util_2) syntax. ##### azureVideoAnalyzer.scope.userId > type: user id, required: no, default: apiUser The user to perform the search with. This allows to additionally filter out assets with permissions. ##### azureVideoAnalyzer.enableAutomation > type: boolean, required: no, default: false Enables the automated video upload. ##### azureVideoAnalyzer.enableInitTask > type: boolean, required: no, default: false Enables the init task (uses the scope defined above). ##### azureVideoAnalyzer.enableCleanupTask > type: boolean, required: no, default: false Enables the cleanup task (removes videos from Azure which have an external ID starting with the configured prefix but cannot be found in CELUM). ##### azureVideoAnalyzer.languageMapping= > type: comma-separated list mappings, **required: yes**, default: `en:en-US,de:de-DE,fr:fr-FR,it:it-IT,es:es-ES` The mapping for CELUM locales to Azure languages. Available languages: Serbian (Cyrillic): sr-Cyrl-RS, Serbian (Latin): sr-Latn-RS, Bosnian: bs-Latn, Chinese (Simplified): zh-Hans, Chinese (Traditional): zh-Hant, Filipino: fil-PH, English United Kingdom: en-GB, Fijian: en-FJ, English Australia: en-AU, Samoan: en-WS, English United States: en-US, Greek: el-GR, Spanish: es-ES, Spanish (Mexico): es-MX, Estonian: et-EE, Persian: fa-IR, Finnish: fi-FI, French (Canada): fr-CA, French: fr-FR, Haitian: fr-HT, Afrikaans: af-ZA, Arabic (Saudi Arabia): ar-SA, Arabic Syrian Arab Republic: ar-SY, Arabic (Palestinian Authority): ar-PS, Arabic (Qatar): ar-QA, Arabic Egypt: ar-EG, Arabic Modern Standard (Bahrain): ar-BH, Arabic (Oman): ar-OM, Arabic (Lebanon): ar-LB, Arabic (United Arab Emirates): ar-AE, Arabic (Kuwait): ar-KW, Arabic (Jordan): ar-JO, Arabic (Iraq): ar-IQ, Arabic (Israel): ar-IL, Danish: da-DK, German: de-DE, Bulgarian: bg-BG, Bangla: bn-BD, Malagasy: mg-MG, Malay: ms-MY, Maltese: mt-MT, Catalan: ca-ES, Czech: cs-CZ, Dutch: nl-NL, Norwegian: nb-NO, Indonesian: id-ID, Italian: it-IT, Lithuanian: lt-LT, Latvian: lv-LV, Japanese: ja-JP, Urdu: ur-PK, Ukrainian: uk-UA, Hindi: hi-IN, Hebrew: he-IL, Hungarian: hu-HU, Croatian: hr-HR, Korean: ko-KR, Vietnamese: vi-VN, Turkish: tr-TR, Tamil: ta-IN, Thai: th-TH, Tongan: to-TO, Russian: ru-RU, Romanian: ro-RO, Portuguese: pt-BR, Polish: pl-PL, Swedish: sv-SE, Kiswahili: sw-KE, Slovenian: sl-SI, Slovak: sk-SK, Chinese (Cantonese, Traditional): zh-HK. ##### azureVideoAnalyzer.privacy > type: string, required: no, default: Public The privacy setting for the Azure videos (Public or Private). For private videos authorization is needed, that means they can only be viewed in CELUM. ##### azureVideoAnalyzer.language > type: string, required: no, default: auto The language of the videos, auto (auto-detection recommended), multi (still experimental) or one of the languages above. ##### azureVideoAnalyzer.videoId > type: information field id, **required: yes**, default: - Text or text area information field to store the ID from Azure. Only asset types with that field can be uploaded. ##### azureVideoAnalyzer.name > type: string, **required: yes**, default: name From where the name will be extracted for Azure. Either name (asset name), a text or text area information field id or a localized text or text area information field id follwed by the locales to look at (E.g. 123:en,de,fr). The name is always the fallback if information fields are empty. ##### azureVideoAnalyzer.description > type: string, required: no, default: - Optionally a description can be uploaded to Azure. Same possibilities as for `azureVideoAnalyzer.name`, but without fallback. ##### azureVideoAnalyzer.keywords > type: string, required: no, default: - A node referencing information field id followed by the languages in which the information should be requested (e.g. 123:en,de,fr). If an asset type has the configured information field then the keywords are written in all the specified languages. ##### azureVideoAnalyzer.sentiments > type: string, required: no, default: - A node referencing information field id followed by the languages in which the information should be requested (e.g. 123:en,de,fr). If an asset type has the configured information field then the sentiments are written in all the specified languages. ##### azureVideoAnalyzer.audioEffects > type: string, required: no, default: - A node referencing information field id followed by the languages in which the information should be requested (e.g. 123:en,de,fr). If an asset type has the configured information field then the audio effects are written in all the specified languages. ##### azureVideoAnalyzer.labels > type: string, required: no, default: - A node referencing information field id followed by the languages in which the information should be requested (e.g. 123:en,de,fr). If an asset type has the configured information field then the labels are written in all the specified languages. ##### azureVideoAnalyzer.brands > type: string, required: no, default: - A node referencing information field id followed by the languages in which the information should be requested (e.g. 123:en,de,fr). If an asset type has the configured information field then the brands are written in all the specified languages. ##### azureVideoAnalyzer.emotions > type: string, required: no, default: - A node referencing information field id followed by the languages in which the information should be requested (e.g. 123:en,de,fr). If an asset type has the configured information field then the emotions are written in all the specified languages. ##### azureVideoAnalyzer.topics > type: string, required: no, default: - A node referencing information field id followed by the languages in which the information should be requested (e.g. 123:en,de,fr). If an asset type has the configured information field then the topics are written in all the specified languages. ##### azureVideoAnalyzer.ocr > type: string, required: no, default: - A (localized) text area information field id followed by the languages in which the information should be requested (e.g. 123:en,de,fr). If an asset type has the configured information field then the optical character recognition is written in all the specified languages. ##### azureVideoAnalyzer.ocrDelimiter > type: string, required: no, default: `` The delimiter to use for the OCR. `` will be replaced by a new line and `` by a space. ##### azureVideoAnalyzer.transcript > type: string, required: no, default: - A (localized) text area information field id followed by the languages in which the information should be requested (e.g. 123:en,de,fr). If an asset type has the configured information field then the transcript is written in all the specified languages. ##### azureVideoAnalyzer.transcriptDelimiter > type: string, required: no, default: `` The delimiter to use for the transcript (space recommended, because each closed caption is a separate text). `` will be replaced by a new line and `` by a space. ##### azureVideoAnalyzer.publicUrls.share > type: boolean, required: no, default: `false` If this is set to true a public URL to the video/insights will be maintained (provider = azureVideoAnalyzer, description = share). It is a link directly to the video on www.videoindexer.ai, make sure the videos are uploaded as public, then everybody has read-only access to the player and the insights. ##### azureVideoAnalyzer.publicUrls.api > type: boolean, required: no, default: `false` If this is set to true a public API URL to the video will be maintained (provider = azureVideoAnalyzer, description = api). With that URL you can get captions and more if the video is set to public, e.g. just add `/captions?format=vtt`. [Documentation](https://api-portal.videoindexer.ai/api-details#api=Operations). GET operations on public videos are possible without authorization. ##### azureVideoAnalyzer.publicUrls.embedPlayer > type: boolean, required: no, default: `false` A URL to embed the player as iframe (provider = azureVideoAnalyzer, description = embedPlayer). ##### azureVideoAnalyzer.publicUrls.embedInsights > type: boolean, required: no, default: `false` A URL to embed the insights as iframe (provider = azureVideoAnalyzer, description = embedInsights). If both are embedded on the same page, make sure to include https://breakdown.blob.core.windows.net/public/vb.widgets.mediator.js otherwise the two iframes cannot talk with each other. ## Links - [Azure AI Video Indexer](https://vi.microsoft.com/en-us) Marketing and general information. - [Video Indexer Portal](https://www.videoindexer.ai/) Log in to your account and manage it. - [Tutorial: create an ARM-based account with Azure portal](https://learn.microsoft.com/en-us/azure/azure-video-indexer/create-account-portal) Create an azure subscription for the video indexer. ## Compatibility Matrix | Azure Video Analyzer | CELUM (min. version) | :----- | :----- | 1.0 | 6.4+ (tested with 6.8) | | 1.2 | 6.4+ (tested with 6.8) | | 1.3 | 6.4+ (tested with 6.14) | Nova Plugin | CELUM (min. version) | Backend Plugin (min. version) | | ---------------- | --------------------- | --------------------- | | 1.0.0 | 6.8.1 | 1.2.0 | 1.0.1 | 6.9.3 | 1.2.0 | 1.0.2 | 6.11.0 | 1.2.0 | 1.0.3 | 6.11.0 | 1.2.0 ## Release Notes #### 1.0.0 > Released 2021-08-05 Initial Version #### 1.2.0 > Released 2021-10-15 Nova Compatibility #### 1.3.0 > Released 2023-01-09