Ooyala Flex Media Platform 7.2.0 Release Notes 2018-10-16

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 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:
  • 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 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 Import type. See here 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 Export type. See here 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 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.

Note:
  • 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.

Note:

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 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.

See here for more information.

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 category.
    • Asset Unpublish Action V2: This action falls under the Unpublish category.
    • Asset Republish Action V2: This action falls under the Republish category.
    Note: The legacy Asset Publish, Asset Publish, and Asset Republish are still supported.
  • 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.
    • POST ~/assets/{assetId}/syndication
    • 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
  • persistedFilename
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.

https://help.ooyala.com/sites/all/libraries/dita/en/media-logistics/flex/relnotes/2018-10-16.html

Was this article helpful?