Reviewer: Exclusive Reviews
An exclusive review is when a specific asset can be sent to one or many recipients for review. When one user takes the review session, only that user can review the asset, unless they are released from the session.
To support exclusive reviews, we have made the following changes:
Updates to the Reviewer UI: We have updated the review session list page. From 7.1.0 onwards, each review in the list will display a status icon next to it. Reviews can exist in the following states:
Make Review Exclusive Field: We have added a new configuration field to both the “Start Video Review” and “Start Image Review” action plugins. This field is called “Make Review Exclusive?” This field enables you to specify whether a review session will be exclusive or not. If the checkbox is selected, the review will be exclusive.
Release Exclusive Review Permission: We have added a new permission in Core. This permission is called “Release Exclusive Review” and is situated in the Flex Reviewer row. If this permission is selected for a role, it enables that particular user to release a user from an exclusive review session.
New REST Endpoint: To support exclusive reviews in Reviewer, we have added two new values to the “actions” field in the POST: /assets/{assetId}/reviews/{reviewId}/actions
endpoint. For more information, please see the REST API section below.
New Sort and Filter Capabilities: We have added the ability to sort and filter exclusive reviews in Reviewer.
You can filter to show the following results:
You can also sort in ascending and descending order:
Ascending Order:
Descending Order:
AES-128 Encryption and Support for Java Web Tokens (JWT)
We have introduced authorization AES-128 encryption and Java Web Tokens in both MAM and Reviewer for segmented assets (HLS). The authorization scheme is built around expiring JSON Web Tokens (JWT) which are passed by the client to the endpoint serving the proxies.
The guide for enabling encryption in MAM can be found in the MAM guide.
The guide for enabling encryption in Reviewer can be found in the Reviewer guide.
REST API: Support for Dynamic Collections
We have added a new “fql” field to the api/collections (POST) endpoint. This is to support the creation and retrieval of lists of collections via the API.
We have also added a new “type” matrix parameter. This can be used to retrieve a list of static or dynamic collections. If the “type” matrix parameter used, then all the collections will be returned.
Examples:
api/collections
(Returns all collections).api/collections;type=static
(Returns non-dynamic collections).api/collections;type=dynamic
(Returns only dynamic collections).REST API: Exclusive Reviews
To support exclusive reviews in Reviewer, we have added two new values to the “actions” field in the POST: /assets/{assetId}/reviews/{reviewId}/actions
endpoint.
The new values that can be entered are as follows:
Examples:
Taking a review:
{
"action":"TAKE"
}
Releasing a review:
{
"action":"RELEASE"
}
REST API: Support for Returning Group Hierarchies
We have added an endpoint that returns a list of object hierarchies.
This is as follows:
Table 1.
Resource | Endpoint | Method |
---|---|---|
assets: | assets/{objectId}/hierarchy | get |
We have also added two matrix parameters to this endpoint, context=upward
and level
. When these are used together, users can return a specific number of levels in an object hierarchy.
Example:
/assets/{assetId}/hierarchy;context=upward;level=2
returns a list of hierarchical parents up to 2 levels.
REST API: Support for Retrieving Structure and Bitrate type (CBR/VBR)
We have made changes to the assets/{asset-id}
(GET) endpoint so that it retrieves “codecSpecificMetadata” (The GOP and bitrate type).
Example:
"videoStreamContexts": [
{
"codecSpecificMetadata": {
"gop": "IBBPBBPBBPBB",
"bitRateType": "CBR"
},
}
]
REST API: Delete Annotations
To coincide with the ability to clear timelines, we have added an endpoint that deletes annotations:
Table 2.
Resource | Endpoint | Method |
---|---|---|
assets: | assets/{objectId}/hierarchy | delete |
Example 1:
{
“originatorContext”: “{originatorContext}“,
“originatorCorrelationId”: {originatorCorrelationId}
}
Example 2:
{
“originatorContext”: “{originatorContext}“
}
The above example deletes all the annotations associated with an asset, with a specified originatorContext.
REST API: Support for Variants and Metadata in Collections
We have added the ability to manage collections and variants in the REST API.
The following endpoints have been added:
This endpoint enables users to set the collection metadata.
Table 3.
Resource | Endpoint | Method |
---|---|---|
collections: | collections/{collectionId}/metadata | put |
Example Body:
{
"new-string-1": "test"
}
Collection metadata can be retrieved using the following endpoint:
Table 4.
Resource | Endpoint | Method |
---|---|---|
collections: | collections/{collectionId}/metadata | put |
We have added an includeMetadata
matrix parameter to this endpoint, so that the endpoint only retrieves a list of collections that has metadata associated with them.
Example
collections/{collectionId};includeMetadata=true
Ooyala Flex Publish: Support for Collections
We have added support for collections in Ooyala Flex Publish. The search API gives you the ability to carry out flexible searches using the Flex Query Language (FQL). This endpoint enables you to use FQL to search against collections.
We have introduced the following endpoint to support this:
Table 5.
Resource | Endpoint | Method |
---|---|---|
Publish | http:///public/api/collections/search | get |
SDK: Support for GOP Structure and Bitrate Type (CBR/VBR)
We have added support for retrieving the GOP and the bitrate type in the SDK.
Examples:
assetService.getAsset(asset-id).assetContext.videoStreamContexts.first().codecSpecificMetadata.getGop();
assetService.getAsset(asset-id).assetContext.videoStreamContexts.first().codecSpecificMetadata.getBitRateType();
Ooyala Flex Publish: Support for User Defined Objects
We have added the ability to publish user defined objects in Ooyala Flex Publish. This includes support for: publishing UDO metadata, UDO metadata images, and hierarchical publish for user defined objects.
We have introduced three new action plugins to support this. These plugins are as follows:
We have also introduced the following endpoints:
Retrieve a User Defined Object: This endpoint retrieves a user defined object using the ID of the user defined object.
Table 6.
Resource | Endpoint | Method |
---|---|---|
Publish | http:///public/api/userDefinedObjects/{udoId} | get |
Retrieve a User Defined Object by Plural Name and ID: This endpoint retrieves a user defined object using both the plural name and the user defined object ID.
Table 7.
Resource | Endpoint | Method |
---|---|---|
Publish | http:///public/api//{udoId} | get |
Retrieve all User Defined Objects: This endpoint retrieves all the user defined objects for a specific account.
Table 8.
Resource | Endpoint | Method |
---|---|---|
Publish | http:///public/api/userDefinedObjects | get |
Retrieve all User Defined Objects by Plural Name: This endpoint retrieves all the UDO of a given account and plural name.
Table 9.
Resource | Endpoint | Method |
---|---|---|
Publish | http:///public/api/ | get |
Search User Defined Objects: This endpoint retrieves all the user defined objects for a given account.
Table 10.
Resource | Endpoint | Method |
---|---|---|
Publish | http:///public/api/userDefinedObjects/search | get |
Search User Defined Objects by Plural Name: This endpoint retrieves all the user defined objects for a given account using the plural name.
Table 11.
Resource | Endpoint | Method |
---|---|---|
Publish | http:///public/api/ | get |
Ooyala Flex Publish: New Publish in Place Configuration Fields Originally, users could use the “Publish Media” field to publish an asset and its metadata. The file would be uploaded to a CDN which is associated with an account. The metadata for the asset was then automatically published along with the asset.
We have also added an alternate method for doing this. We have added a set of configuration fields to the Asset Publish and Asset Republish actions. These fields enable a user to specify the location of the media file that was previously uploaded to a CDN. This means that users only publish the metadata, but also make the media file publicly available in the B2C API in the process.
The new Publish in Place fields for the publish action are as follows:
The new fields for the republish action are as follows:
Action Email Details
We have added the following changes to the configuration of the Send Email Message action (This falls under the “Message” plugin category).
We have added the following fields:
Analyse Media Action
We have made the following changes to the Analyse Media action plugin:
The video indexer will be clear the following timelines: Transcripts, Faces, Optical Character Recognition (OCR), Annotations, Topics, Sentiments, and Audio Effects.
New Asset Types / Updates to Action Type Rules
As part of the Package Service, we have introduced IMP and CPL asset types.
Warning: At present, the following actions cannot be run against these new asset types:
Improvements to HTTP Message Action with Pre-message Script
We have a Scripted HTTP Message action plugin, which allows a script to post-process the results of a message using a Groovy script. In many cases, it was found that we used another script to prepare the message in the first place. This proved to be counterintuitive, so we have now introduced a new script execution that can be run before a request. This action sends for the Scripted HTTP Message action (Scripted HTTP Message Command action).
We have also made changes to the signature of the executePostScript
and executeScript methods in the ScriptDataUtil
class. These methods are used in the following action plugins:
Support for Spring Expressions
Spring expression support has been added in Core. The same objects available in the JBPM context are also available in Spring. This means that the same objects can be used for spring expressions as well.
Spring expressions should start with #{
and end with }
.
When Spring expressions are enabled, it is possible to use # instead of $.
You must use #{variables['<variable name>']}
instead of ${variables.<variable name>}
Job Execution Framework
Multi Audio Track Support: Demux Action Plugin
New Features and Configuration Updates
Support for Flex Media Profile as Input
Support for min_gram Customisation
We have added a single character typeahead, in order to support the changing of the min gram setting to 1 (default is 2). The problem with this, is that this may cause performance issues as the number of assets on the system increases.
Users can specify the min_gram value using a Consul Key Value, which overrides the default setting:
flex/flex-indexelastic-service/minGram
Warning: This setting is unsupported, so this should be used at the users own risk.
Incorrect URL constructed in email notifications for enabling users
When a new user is enabled in Ooyala Flex, an email with a link is sent to them. This link enables that user to set a new password.
Such links sometimes pointed to the wrong location for some new users.
Resolution: We have changed the processing functionality for users as recipients. Previously, a username was used to identify a user in the system. We now use the ID of the user in the NotificationEventHandler and MioMailDispatchingEventHandler instead.
Azure Blob Storage: Export action is not working correctly
When users ran an export action against an asset stored in Azure, the export action would complete successfully, however the folder was not created in the correct location, despite providing a path to the azure location in the action configuration.
Resolution: We have fixed this issue by adding the ability to specify VFS location parameters for the export action destination location.
Validation should be displayed when users try to create new hot folder resources without adding a “pollingInterval” in the payload
Users found that when they used the API to create a resource, and did not specify a polling interval, validation was not present in the payload.
Resolution: We have added a default polling interval of 1 minute when ever a resource is created using the API.
Variants are not displaying in the “General” section of the Advanced Search panel
Users found that search options which enabled them to search for variants, were not appearing in the “General” section of the Advanced Search panel in Ooyala Flex Core.
Resolution: This issue has now been fixed, and search options related to variants now appear in the Advanced Search section in Ooyala Flex Core.
Duplicate usernames across multiple accounts
It is possible to create two users with the same name, in two different accounts. However, it was found that the system was behaving in an unexpected and unhelpful ways when this was done.
Example: One user exists (Rowan) in Account A, which is working correctly. Then another user also called ‘Rowan’ is created in Account B with no issues or errors. When the user in Account B is sent a password reset email, they click the link, and enter a new password. However, when the user in Account B attempts to log in, they are unable to do so. This also results in neither user in Account A or Account B being unable to log in. This is because the password is reset for the wrong user.
Resolution: This issue has been fixed and the system behaves correctly when two users with the same name are created in two different accounts.
When running the “Extract Subtitle Action”, the output file does not contain all the subtitles / timecodes
Previously, when a user ran the Extract Subtitle Action plugin, the output would not always include all of the subtitles and timecodes.
Resolution: It was found that some users were specifying the output frame rate of the subtitles to be different to that of the input video source file. Users can specify the frame rate for the generated subtitles using the Frame Rate field in the configuration for the Extract Subtitle plugin. If this field is left blank, the plugin will use the source frame rate for the asset.
Baton QC action fails when start-time and end-time are both specified
The Baton Quality Control action fails if both end-time and start-time are specified. If both fields are left blank then the action works correctly. The same applies if only one of the two fields is specified. This issue will be fixed in a future release.
MAM: Updating Bulk metadata
During a bulk metadata update, an error occurs when a metadata form has a mandatory field with different values for each asset.
Example: There are 2 Assets selected in Bulk Metadata, and Asset 1 has “ABC” entered in the mandatory field and Asset 2 has “123” entered in the mandatory field. When a user tries to perform a bulk metadata update, the fields do not update properly.
Password fields in metadata field are unusable
The metadata field type of ‘password’, which takes a string as input, does not show in the UI and stores its encryption internally. In addition, the SDK does not offer a method to decrypt these fields using a Groovy script, so this type of field is unusable and has therefore caused confusion for users. This issue will be fixed in future releases.
Review session cannot be completed when Reviewer is opened from Core
If a user opens a review session from within Core then tries to complete it in Reviewer, the review session fails to close. This is due to an authentication issue, which will be fixed in the next release.
Spring expressions not working for JEF actions
The following spring expression causes jobs to fail when used in actions created using the Job Execution Framework:
#{variables['videoAssetId']}
#{variables['audioAssetId']}
Example: This could be used when executing the Segmented Proxy action via a workflow with the above variables. This will be fixed in future releases.
Extract action fails when an asset is in a private s3 bucket
Some users have configured hotfolders to pick an .m3u8 file from a private s3 bucket as part of a workflow. When the workflow executes, the extract action fails. This issue will be fixed in the next release.
UDO Publish and Unpublish actions are not expression enabled
Currently, the Publish User Defined Object action and the Un-publish User Defined Object action are not expression enabled. This means that you cannot use expressions in configuration fields.
As a temporary workaround, you can manually enter the ID of the user defined object. This will be fixed in the next release.
Global Search only returns 1000 records for assets \ UDOs
When users search for assets / user defined objects in Core, only 1000 records are returned. This is despite the fact some accounts have over 1000 assets. This will be fixed in the next release.
Segmented assets are not playing on Safari
Currently, segmented assets do not play when viewed in Safari. This is because reviewer uses hls.js library, which has stability issues in Safari. Playback fails for some assets and works for others. This issue will be fixed in future releases.