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
videoreferences a file insideassets/videos/.audiois optional; omit for silent clips.scheduleunderstands 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.