Skip to main content

Configure NekoVideo

The plugin exposes YAML files in plugins/NekoVideo/. Reload changes with /nekovideo reload.

Scenes

scenes:
lobby-billboard:
world: hub
position: 120.5, 65, -32.2
rotation: 180
video: sponsor_loop
audio: lobby_bgm
schedule:
cron: "0/5 * * * *" # every 5 minutes
  • video references a file inside assets/videos/.
  • audio is optional; omit for silent clips.
  • schedule understands cron, redstone triggers, and webhooks (schedule.type: webhook).

Quality profiles

profiles:
default:
targetBitrate: 3_000_000
keyframeInterval: 48
latencyBudgetMs: 250
fallbackProfile: mobile
mobile:
targetBitrate: 1_000_000
keyframeInterval: 96
latencyBudgetMs: 400

The runtime automatically switches profiles when player RTT exceeds the latencyBudgetMs value.

Command webhooks

Enable REST triggers to integrate with quest engines:

api:
enabled: true
token: ${env:NEKOVIDEO_TOKEN}
rateLimit:
burst: 30
refillPerMinute: 120

Dispatch a video from your orchestration layer:

curl -X POST https://video.example.com/api/v1/play \
-H "Authorization: Bearer <token>" \
-d '{"sceneId":"lobby-billboard","players":["PlayerOne"]}'

Logging and metrics

Set metrics.prometheus=true to expose /metrics on the CDN port, then scrape it with your existing Prometheus server. Enable logging.tracing if you need frame-level debugging, but remember that it is verbose.