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
- An OSC account on a paid plan (sign up at app.osaas.io)
- A Parameter Store instance (required for configuration)
- An OSC Personal Access Token (PAT) — create one at app.osaas.io/dashboard/tokens
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:
- Go to My Apps → Parameter Store and click Create parameter store
- 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
- GitHub repository
- Service page
- SVT Encore — the transcoding engine used internally
- Parameter Store