Important Note:
As part of the 7.2.0 release we are upgrading the version of MongoDB used by Ooyala Flex Media Platform from 3.4 to 3.6. After the Ooyala Flex Media Platform upgrade has been verified, please update the compatibility mode setting, using the following command:
``db.adminCommand( { setFeatureCompatibilityVersion: "3.6" } )``
Highlights
Ooyala is excited to present the release of Ooyala Flex Media Platform 7.2.0\. This release of Ooyala Flex Media Platform provides the new features and enhancements, fixes, and other changes listed below.
New Features and Enhancements
The Ooyala Flex Media Platform can be deployed with multiple cloud infrastructure vendors, such as Amazon Web Services and Microsoft Azure Media Services. We now have support for deployment on Google Cloud Platform infrastructure, to give you a wider range of choices for best-of-breed cloud providers.
Google Cloud Storage
We have added Google Cloud Storage (GCS) to the Flex virtual file system. This means that you can now store your assets in GCS. Resources, hot folders, and inboxes support the use of GCS. Actions in the Copy, Move, Delete, Purge, and Import categories can make use of GCS.
To support this, we have added a GCS option to the <span class="ph uicontrol">Protocol</span> drop down, in the configuration for existing resource plugins.
Interoperable Master Format (IMF) Support
We have added preliminary support for IMF, which you can use to import a complete or partial Interoperable Master Package (IMP) into Ooyala Flex Media Platform. An IMP is a package that contains multiple versions/variations of the same media content. This package contains video files, audio files, subtitles, closed captions, and metadata.
To support this, we have introduced two new asset types:
* IMP Asset: An IMP is a package that contains multiple versions of the same media content. This package contains video files, audio files, subtitles, closed captions, and metadata.
* CPL Asset: A CPL is used to construct the available media (what order the media should be in). It determines the data, video, and audio files that make up the IMP. The CPL lets you combine the video, audio, and data together.
See [here](/admin/flex_enterprise/assets) for more information.
We have introduced the following new plugins:
* IMP Import: This plugin imports a new package to any VFS location. This plugin falls under the <span class="ph uicontrol">Import</span> type. See [here](/admin/configuration_guide/plugins/action_plugins/import/) for more information.
* IMP Export: This plugin exports an existing package from Ooyala Flex Media Platform to any VFS location. This plugin falls under the <span class="ph uicontrol">Export</span> type. See [here](/admin/configuration_guide/plugins/action_plugins/export/) for more information.
We have introduced the following REST API endpoints, which enable you to create and manage composition asset tracks for CPLs:
* ``GET: /api/assets/{uuid1}/compositionAssetTracks/{uuid2}``: Retrieves composition asset track(s) in a CPL along with the asset track data.
* ``POST: /api/assets/{uuid1}/compositionAssetTracks``: Adds new composition asset tracks to a CPL asset and sets the properties.
* ``PUT: /api/assets/{uuid1}/compositionAssetTracks/{uuid2}``: Updates the composition asset tracks for a CPL asset.
* ``GET: /api/assets/{uuid1}/compositionAssetTracks/{uuid2}/assetTracks``: Retrieves asset tracks along with the asset track data.
* ``POST: /api/assets/{uuid1}/compositionAssetTracks/{uuid2}/assetTracks``: Adds new asset tracks to a CPL Asset and sets the properties.
* ``PUT: /api/assets/{uuid1}/compositionAssetTracks/{uuid2}/assetTracks/{uuid3}``: Updates the composition asset tracks for a CPL asset.
Flex Authentication Service: Authenticate Applications using OAuth2
You can now register external applications and services with Ooyala Flex Media Platform using OAuth2 access tokens. These tokens can be used to authenticate FLEX APIs instead of using basic auth (username and password).
[See here](/admin/configuration_guide/access_permissions/app_usage_of_flex_apis/) for more information.
Account Storage Updates for Keyframes
Now you can specify a separate account-wide storage for keyframes, in a variety of VFS locations, including: AZBS, GCS, FILE, FTP, FTPS, HTTP, HTTPS, S3, SFTP, SMB, and WEBDAV.
To support this, we have added a new Keyframe Storage Resource configuration field to the metadata for accounts.
* If you store keyframes for subaccounts, the Keyframe Storage Resource configuration details are taken from the parent account in Ooyala Flex Media Platform Core.
* In order to enable this feature, the following consul KV must be set to “true”:
``flex/shared/flex-enterprise/featureToggles/keyframeVfsEnabled``
Reviewer: Dolby 5.1, EC3 and EAC3 Playback Support
You can now play audio tracks in Dolby 5.1, EC3 and AEC3 in Reviewer.
Dolby 5.1, EC3 and EAC3 playback is only supported on the following browsers:
* Microsoft Edge on a Windows 10 machine and above.
* Safari 10 on a mac with Yosemite OS 10.11 and above.
See [here](/operations/flex_reviewer/review_media_asset/playing_asset_dolby/) for more information.
Reviewer: Per-Essence Reviews
You can now carry out per-essence reviews. A per-essence review enables you to review one or more children of a segmented (HLS) asset, such as subtitled or audio tracks.
To support this, we have have the following changes:
* Added new Per-Essence configuration fields to the Start Video Review action plugin. These fields are used to set up a per-essence review.
* Updated the Reviewer UI so that you can manage per-essence reviews. This includes the ability to accept or reject an essence.
REST API improvements:
* Changes to ``/assets/{assetId}/reviews`` endpoint
* Changes to ``/assets/{assetId}/reviews/{reviewId}`` endpoint
* New endpoint - method GET: ``/assets/{assetId}/reviews/{reviewId}/essences``
* New endpoint - method PUT: ``/assets/{assetId}/reviews/{reviewId}/essences/{essenceId}``
Flex Publish
* Support for Temporal Metadata: We have added support for publishing temporal metadata alongside the asset in Flex Publish. This is only supported for new Flex Publish plugins created using the Job Execution Framework (JEF).
* Support for API tokens: The Flex Publish service now uses OAuth access tokens so that external applications have authenticated access to the Flex Publish APIs.
* Publish Actions in JEF: We have created new publish, unpublish, and re-publish asset action plugins using the Job Execution Framework (JEF). These are:
* Asset Publish Action V2: This action falls under the [Publish](/admin/configuration_guide/plugins/action_plugins/publish/) category.
* Asset Unpublish Action V2: This action falls under the [Unpublish](/admin/configuration_guide/plugins/action_plugins/unpublish/) category.
* Asset Republish Action V2: This action falls under the [Republish](/admin/configuration_guide/plugins/action_plugins/republish/) category.
* New REST API Endpoints to Set Asset Syndication from the JEF Publish Plugin
We have added two new Ooyala Flex Media Platform Core API endpoints that you can use to create and update Asset Syndication in Ooyala Flex Media Platform Core. This is required when Assets are published using a JEF plugin. The methods and endpoints are listed below.
* ``<samp class="ph codeph">POST ~/assets/{assetId}/syndication</samp>``
* ``PUT ~/assets/{assetId}/syndication/{syndicationId}``
* Job Execution Framework (JEF)
* **JEF / Ooyala Flex Media Platform Core New Features**
* Ooyala Flex Media Platform Core: plugin versions are now shown in the Action Summary panel.
* Ooyala Flex Media Platform Core: new REST endpoint to resolve a list of expression for given job id.
* JEF plugins can now execute jobs using non-asset objects, such as user defined objects.
* JEF jobs can now run against groups and group members.
* JEF ActionConfig can now be configured dynamically using JSON metadata instances.
* JEF jobs are now removed from Redis when they reach a terminal state (COMPLETED, CANCELLED). This behaviour can be configured.
* External Lock
* JEF now shares a new distributed lock mechanism with Ooyala Flex Media Platform Core. In previous versions, this was only available to Ooyala Flex Media Platform Core/non-JEF plugins. Migration of existing lock status to the new system is required.
* JEF API Changes
* A new “LockType” annotation has been added. This is used to select the lock type (Exclusive, Shared, None).
* A plugin that creates new assets can now notify Ooyala Flex Media Platform Core about the assets being created in the job execution. This is used in Ooyala Flex Media Platform Core jobs and can be viewed by the top right link to the asset.
* A new logger option has been added, which publishes log messages in jobs that are currently running.
* Plugin developers now have an ``isResumeSupported`` option. This is configured but ``resume()`` is not implemented if a job is in a “Failed” state.
* JEF Operations Dashboard
* A new Grafana board has been added with new/updated metrics, including the new external lock system.
New Group Field in Asset Search
A new Group field has been added to the Asset Search section in Ooyala Flex Media Platform Core, which allows you to specify a group to search against.
Additional REST API Features and Improvements
Filter and Sort Asset Annotation Results in API Calls
We now support filtering of ``MetadataAnnotation`` type results by ``metadataField``, ``timestampIn``, and ``timestampOut`` in the responses of API calls using the ``GET`` method with the ``~/assets/{assetId}/annotations`` endpoint. Sorting is also supported by ``timestampIn`` and ``timestampOut``.
To filter results for annotation API, use one of the following new parameters in your API request:
* Filter results by ``metadataField``. For example: ``~/assets/{assetId}/annotations;type=metadata;metadataDefinitionId=<id>;metadata=<variable-name>:<value?;``
* Filter results by ``timestampIn`` and ``timestampOut``: ``~/assets/{assetId}/annotations;type=metadata;timestampInFrom=223456;timestampInTo=334569``
* Sort results by ``timestampIn`` and ``timestampOut``: ``~/assets/{assetId}/annotations;type=metadata;sortBy=timestampOut/timestampIn``
Ability to Manipulate Taxonomies via API
The release includes the capability to retrieve and manipulate taxonomies via the Flex Enterprise Rest API and SDK.
**Support for FQL Search in Ooyala Flex Media Platform Core API Calls**
We have introduced a new ``~/assets;searchText`` endpoint in the Ooyala Flex Media Platform Core REST API, which can be used with a ``fql=`` parameter that allows customers and apps to use FQL to search for assets. Some usage examples follow below:
* ``~/assets;fql=approved=true AND description=My_Asset;sortBy=name;sort=desc;limit=100;page=0;``
* ``~/users;fql=firstName="Jack" AND lastName=Richer``
GET Call for Resource API Endpoint Returns``lastPollTime`` **and** ``status`` **for a Resource**
The ``GET ~/resources`` API endpoint call now returns two new fields for the requested resource.
Request example:
``GET ~/api/resources/10714``
The response will include the following two fields:
* ``lastPollTime`` - this is the last time when a resource (a folder, etc.) was checked to pick up new files. For example, ``“lastPollTime”= “18 Oct 2018 07:38:58 +0000”``. The accepted format is "dd MMM yyyy HH:mm:ss Z".
* ``status`` - for example, ``“status”= ”Started”``. The possible values are ``Started``, ``Stopped``, or ``Failed``.
Option to Return Parent Collection Only in Collections API Endpoint
The ``GET ~/collections`` API endpoint call now allows you to request only the parent collection in the API response. This is achieved using the ``onlyRoot`` parameter, which makes the API call to search root collection objects only.
Request example:
``GET ~/collections;onlyRoot=true``
Response example:
```
{
"collections": [
{
"id": 22026,
"name": "Test9",
"displayName": "Test9",
"objectType": {
"id": 37,
"name": "collection",
"href": "http://zoomin.local.nativ.tv:30044/api/objectTypes/37",
"displayName": "Collection",
"pluralName": "Collections",
"userDefined": false,
"attachmentsSupported": true,
"commentsSupported": true,
"objectDataSupported": false,
"contentMetadataSupported": true,
"metadataSupported": true
},
"description": "Test Desc Pratice",
"externalIds": [],
"href": "http://zoomin.local.nativ.tv:30044/api/collections/22026",
"owner": {
"id": 10103,
(...)
```
Support for ``TextStreamContexts`` **in Assets Endpoint in Ooyala Flex Media Platform Core API**
The ``~/assets`` API endpoint can be used to return or add ``TextStreamContexts`` for existing media assets.
_GET method example_
Request (returns ``TextStreamContexts`` for an existing media asset):
``GET ~/assets/49995``
Response (part):
```
{
"id": 49995,
"uuid": "2c045c7b-af7a-44ea-8c13-a96d11bb7657",
"name": "subtitle stream MXF",
"displayName": "subtitle stream MXF",
(...)
"textStreamContexts": [
{
"bitRate": 0,
"streamNumber": 0,
"external": false,
"decoded": false,
"outputFormat": "TTML"
}
]
(...)
```
_PUT method example_
Request (adds <``TextStreaContexts`` in an existing media asset):
``PUT ~/assets/49995``
Response:
```
{
"assetOrigin": "Import",
"fileDetails": {
"assetContext": {
"type": "MediaContext",
"formatContext": {
"format": "MXF",
"streamCount": 1
},
"textStreamContexts": [
{
"outputFormat": "TTML"
}
]
},
"vfsLocation": {
"protocol": "FILE",
"path": "D:\\Mxf\\demo\\SUB_9a975d0b-bf60-4ad9-8320-03f07f685393.mxf"
},
"mimeType": "application/mxf",
"size": 595339
}
}
```
New Ooyala Flex Media Platform Core API Endpoint to Remove the Child Object Relationship from User-Defined Object (UDO) Instances
We have added a new API endpoint in the Ooyala Flex Media Platform Core REST API, which removes the child object relationship from user-defined object instance:
``DELETE ~/{pluralName}/{id}/relationship/{childObjectId}``
In this structure, ``{id}`` is the UDO instance id, and ``{childObjectId}`` is the Child Object Id (Asset or UDO instance id).
New REST API Endpoint to Return Keyframe VFS Location
We have added a new API endpoint that returns additional keyframe information:
``~/api/assets/your-asset-id/keyframes/your-keyframe-id/vfsLocation``
The following additional fields are included in the API call response:
* ``accountUuid``
* ``userId``
* ``<samp class="ph codeph">persistedFilename</samp>``
Note:
* When the feature toggle is ``Off``, the endpoint returns an empty body.
* When the feature toggle is ``On``, the endpoint returns a JSON response with information about the storage resources used for each particular keyframe.
Additional Fields Returned in Ooyala Flex Media Platform Core API Asset Endpoint Responses
API calls using the ``GET ~/assets`` Ooyala Flex Media Platform Core API endpoint now return the following new fields:
* ``republished``
* ``unpublished``
* ``defaultArchived``
* ``external``
* ``reference``
* ``decoded``
* ``gopSize``
* ``iframeOnly``
* ``profile``
* ``level``
* ``vbvBufferSize``
Updates to Collections REST API Endpoint
We have updated the ``~/collections/<collection-id>/items`` REST API endpoint to use several new payloads with the ``PUT`` method. This enables you to:
* Add ``objectIds`` in an empty collection
* Add ``objectIds`` at ``after`` position in a collection
* Add ``objectIds`` at ``before`` position in a collection
* Add ``objectIds`` at ``first`` position in a collection
* Add ``objectIds`` at ``last`` position in a collection
* Remove ``objectIds`` from a collection
The updated API endpoint is described below:
```
PUT ~/collections/your-collection-id/items
```
```
Payload:-
{
"assetsToadd" : [1,2,3], // asset Ids
"assetsToRemove": [4,5,6], // asset Ids
"operation": "add/remove",
"position": "first/after/before/last",
"objectIds": [1,2,3,4,5], // asset Ids
"positionObjectId" : 3 // Mandatory if 'after' or 'before' option used
}
```
Resolved Issues
``Sort`` **Functionality is not Working in FQL**
_Issue_: The ``SORT BY`` functionality (``name=tears SORT BY name DESC``) in the Flex Query Language (FQL) was not working correctly.
_Resolution_: Sorting with FQL has been enabled in the search API. From now on, you can run search queries in FQL using the ``SORT BY`` syntax.
Known Issues
* Reviewer: Safari Won’t Refresh Encryption Key when Token Expires
When AES encryption is enabled for segmented media, an access token carries the generated key used to encrypt segmented files. In the HLS manifest, each segment has a different key URI to extract the AES key from the token, as the segment is being loaded.
This works on all browsers except for Safari. In Safari, a token expires and the key changes. Despite this, Safari still tries to decrypt the segments with the expired key. This will be fixed in future releases.
* External Identity Provider Configuration Changes Require Applications Restart
Flex applications must be restarted if there are any configuration changes in an external Identity Provider configuration (OKTA, SAML, etc.), or in the SAML Configuration section of an account’s metadata in Flex enterprise.
* OoyalaREVIEW Does Not Load for Assets with HLS Proxies
The OoyalaREVIEW app currently fails to load for assets with HLS/segmented proxies.
* Flex Publish:
* Metadata Images are Duplicated when ArangoDB is Enabled
Metadata image IDs are being duplicated when ArangoDB is enabled for metadata. Flex Publish doesn’t work in this case. This will be fixed in future releases.
* Metadata Images not Being Published
Metadata images are not published when the Keyframes Publish option is set to “Yes”. This will be fixed in future releases.
* Unable to Publish Assets when Source Resources don’t have Key & Secret
When an environment is configured with the IAM_role feature in S3, you can import or upload an asset without passing credentials with the Import action or storage resource. However, when an asset is imported using the IAM_role, the publish job fails.
* Published Keyframe Timecodes Display Incorrectly
All published keyframe timecodes appear as ``00:00:00:00@25.0`` in Publish API calls. This will be fixed in the next release.
* Unapproved Keyframe gets Published
Keyframes are published even when they are not set as “approved” in Flex Publish REST calls.
Please contact your Ooyala representative for the full upgrade notes, further information about this release, and the complete list of resolved issues.
Comments
0 comments
Please sign in to leave a comment.