Open Videocore

Open Videocore is a headless media asset management (MAM) system from Eyevinn Technology. It stores, transcodes, packages, and delivers video content with a single API call. Under the hood it integrates SVT Encore for transcoding, Shaka Packager for packaging, MinIO for object storage, and CouchDB for the asset catalogue.

Getting Started

Deploy an Open Videocore instance at app.osaas.io/dashboard/service/eyevinn-open-videocore.

Prerequisites

Configuration Options

Field Required Description
name Yes Alphanumeric instance name
OscAccessToken Yes OSC PAT used by Open Videocore to spin up Encore transcoding jobs
ParameterStoreApiKey Yes API key for the Parameter Store instance
ParameterStore Yes Name of the Parameter Store instance
MinioRootPassword Yes Root password for the MinIO object storage backend (sensitive)
CouchdbAdminPassword Yes Admin password for the CouchDB asset catalogue (sensitive)
EncoreMaxInstances No Maximum concurrent Encore transcoding instances (default: 2)
EncoreMinInstances No Minimum Encore instances to keep warm (default: 0)
EncoreIdleTimeoutMs No Milliseconds before idle Encore instances are scaled down

Step-by-Step Guide

1. Create a Parameter Store

Open Videocore requires a Parameter Store to hold configuration. Create one first:

  1. Go to My Apps → Parameter Store and click Create parameter store
  2. Note the store name and API key shown on creation

2. Store sensitive credentials as service secrets

osc create-secret miniopwd <your-minio-root-password>
osc create-secret couchdbpwd <your-couchdb-admin-password>
osc create-secret oscpat <your-osc-pat>
osc create-secret paramstorekey <your-parameter-store-api-key>

3. Create the Open Videocore instance

osc create eyevinn-open-videocore myvideocore \
  -o OscAccessToken="{{secrets.oscpat}}" \
  -o ParameterStoreApiKey="{{secrets.paramstorekey}}" \
  -o ParameterStore="my-param-store" \
  -o MinioRootPassword="{{secrets.miniopwd}}" \
  -o CouchdbAdminPassword="{{secrets.couchdbpwd}}"

Via API:

curl -s -X POST \
  -H "x-pat-jwt: Bearer $PAT" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "myvideocore",
    "OscAccessToken": "{{secrets.oscpat}}",
    "ParameterStoreApiKey": "{{secrets.paramstorekey}}",
    "ParameterStore": "my-param-store",
    "MinioRootPassword": "{{secrets.miniopwd}}",
    "CouchdbAdminPassword": "{{secrets.couchdbpwd}}"
  }' \
  https://eyevinn-open-videocore.svc.prod.osaas.io/eyevinn-open-videocoreinstance

4. Ingest and transcode a video

Once the instance is running, ingest a source video:

# Ingest a source video
curl -s -X POST \
  https://<instance-url>/api/v1/assets \
  -H "Content-Type: application/json" \
  -d '{"sourceUrl": "https://example.com/source.mp4"}'

The API returns an asset ID. Open Videocore will transcode the source, package it for adaptive streaming, and store the output in its MinIO backend.

Usage Example

Retrieve a playback URL for a transcoded asset:

# Get asset details including playback URL
curl -s https://<instance-url>/api/v1/assets/<asset-id>

The response includes a playbackUrl pointing to the packaged HLS/DASH manifest stored in MinIO.

Important Notes

  • Configuration updates not supported. Open Videocore does not support in-place configuration updates via update-service-instance. To change configuration, delete the instance and create a new one.
  • Data persistence. Asset data is stored in MinIO and CouchDB within the instance. Deleting the instance will delete all stored assets and the asset catalogue.

Resources