BGPVR Operator guide
Operator guide

Live Events Pro

Needs a Pro licence or higher.

One-off broadcasts run by the operator: an event record (title, window, source, quality) that ffmpeg pushes out as HLS on the public /events page, optionally re-streamed to RTMP destinations such as YouTube or Facebook. It also holds the inbox of event requests submitted by members.

On this page
  1. Create an event
  2. Go on air and watch it
  3. Let an event start itself
  4. Add RTMP re-streams
  5. Announce the event on Telegram
  6. Triage member requests
  7. Watch out

Create an event

Header "New Event" → Title, Description, "Source type" (channel / public_channel / custom_url), "Quality" (passthrough, 1080p, 720p, 480p). For a channel source, type in the "Channel" search box and click the result — the selected source is shown in a highlighted box. For custom_url, fill "Custom URL". Set "Start time" / "End time", "Status" and "Public" (Show on the public page / Hidden). Save also writes the destinations in one go.

Go on air and watch it

On the event card press "Go live" — the backend spawns ffmpeg and the card grows a green panel showing PID, elapsed time and bytes out, refreshed by a status poll, with an "HLS stream" link to /events/<slug>/hls/index.m3u8. "Stop" ends it. Start/stop also auto-advances any linked member request to Completed.

Let an event start itself

On a Draft or Scheduled card use the Manual/Scheduled switch. Scheduled means the event is listed publicly and a background scheduler (a tick every 30 s) starts it when start_time passes and stops it at end_time; Manual (draft) means hidden and started by hand. The switch writes the event's status field — this, not the modal's "Streaming mode" dropdown, is what actually drives the scheduler.

Add RTMP re-streams

In the event dialog, the "Destinations" block lists BGPVR Local HLS (always on, URL auto-generated at start) plus YouTube Live, Instagram Live, Facebook Live, Telegram Live and Custom RTMP. Tick one to reveal its "RTMP URL" and "Stream Key" fields. Saved keys come back masked as ******** — leave the mask alone to keep the stored secret.

Announce the event on Telegram

Tick "Send Telegram notification" in the event dialog, then set "Telegram Chat ID" (@channel or numeric), the "Message" body, and "Auto-delete after the event ends" (Yes/No). The message is sent when the event goes live.

Triage member requests

The right-hand "Requests" panel lists incoming requests with a "{n} new" badge. Per request use "Review" (In Review), "Approve" or "Reject" — the help line spells the meanings out — and add "Admin notes". "Convert to event" opens the event dialog pre-filled from the request ("New event from request"); saving links the two and moves the request to Scheduled.

Watch out

  • The modal's "Streaming mode" (Manual / Scheduled) field is stored and echoed back but no backend code reads it. Only the event's status drives auto-start and public visibility — use the Manual/Scheduled switch on the card, not that dropdown.
  • An event only appears on the public /events page when Public is "Show on the public page" AND its status is scheduled, starting, live or completed. Draft, failed and cancelled events are never listed, however public they are marked.
  • POST /api/event-requests is unauthenticated — anyone who can reach the server can file an event request, throttled to 8 per hour per IP. If you do not want a public request inbox, turn the module off.
  • Live Events is the one content module whose Modules-page toggle is real: with "Live Events" off, live_events_enabled=0 makes every /api/live-events and /api/event-requests route return 404 and the sidebar item disappears (an operator sitting on the view is bounced to the dashboard).
  • Live Events needs Pro or higher. The licence is checked before the Modules toggle: below Pro every call is refused with "Live Events is not included in your plan"; with the licence, turning the toggle off returns 404.
  • The delete button is hidden while an event is live or starting; stop the broadcast before deleting. Deleting an event does not stop a running ffmpeg for you.