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" } )
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.
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 Protocol 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:
See here for more information.
We have introduced the following new plugins:
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 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:
See here 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:
See here for more information.
REST API improvements:
/assets/{assetId}/reviews
endpoint/assets/{assetId}/reviews/{reviewId}
endpoint/assets/{assetId}/reviews/{reviewId}/essences
/assets/{assetId}/reviews/{reviewId}/essences/{essenceId}
Flex Publish
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)
isResumeSupported
option. This is configured but resume()
is not implemented if a job is in a “Failed” state.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:
metadataField
. For example: ~/assets/{assetId}/annotations;type=metadata;metadataDefinitionId=<id>;metadata=<variable-name>:<value?;
timestampIn
and timestampOut
: ~/assets/{assetId}/annotations;type=metadata;timestampInFrom=223456;timestampInTo=334569
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:
Off
, the endpoint returns an empty body.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:
objectIds
in an empty collectionobjectIds
at after
position in a collectionobjectIds
at before
position in a collectionobjectIds
at first
position in a collectionobjectIds
at last
position in a collectionobjectIds
from a collectionThe 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
}
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.
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.