Presenter Help
← Back to app
Presenter Help
A complete guide to the Corona Arabic Church worship presenter app — search, display, media, Bible, OBS integration, and more.
Contents
1
Getting Started
What is Presenter?
Presenter is a web-based worship presentation app built for Corona Arabic Church. It projects song lyrics, Bible verses, and media (images, videos, YouTube) onto a projector screen or Chromecast device. The operator controls everything from a browser — no software to install.
Quick start
1
Open present.coronaarabicchurch.com/ in Chrome on your computer.
2
Click the projector icon in the top-right to open the display window. Drag it to your projector's screen.
3
Search for a song by typing in the search bar. Results appear instantly.
4
Click a song to load it. Click a slide to Go Live — it appears on the projector.
The three panels
Search panel (left): Find songs, Bible passages, and media. Type in Arabic or English — the search handles both. Slides panel (center): Shows the slides for the loaded song. Click a slide to project it. Preview panel (right): Shows what's currently being projected. Use the font size buttons to adjust text size.
3
Projector Display
Opening the display window
Click the projector icon (screen icon) in the top bar. A new browser window opens — drag this to your projector's extended display. The window shows a black screen until you go live with a slide.
Going live
Click any slide in the slides panel. It immediately appears on the projector display. The active slide gets a red border with a pulsing glow so you always know what's currently live.
Black screen
Click the black/pause button in the header to black out the projector. The display goes fully black. Click again to restore the previous slide. This is useful between songs or during prayers.
Chroma green (OBS key)
Toggle Chroma green in the overlay menu to make the display background bright green. This is used with OBS's Chroma Key filter to overlay lyrics on top of a camera feed. See the OBS Integration section.
Zoom / font size
Use the A+ and A- buttons in the preview panel to increase or decrease the projected text size. The setting is saved and persists across browser sessions.
4
Bible
Searching for Bible passages
Type a Bible reference in the search bar — for example, John 3:16, مزمور 23, or Rom 8:28. The search recognizes book names in Arabic and English, with abbreviated forms. Results show the verse text with a "Go to chapter" link.
Bible workspace
When you open a Bible chapter, the Bible workspace appears in the search panel. It shows all verses in the chapter. Click a verse to project it. Use the chapter navigation arrows to move between chapters.
Bilingual display
Bible verses display in Arabic by default. The app loads English translations asynchronously alongside the Arabic text.
Tip: You can search for Bible passages by content, not just reference. Try typing part of a verse — the search will find matching passages across the entire Bible.
5
Media & Collections
Adding media
Click the + button and select Add Media. You can upload images (JPG, PNG, WebP), videos (MP4, MOV, WebM), or add YouTube videos by URL. Files upload to the server and are available across sessions.
Collections
Collections group related media items together — for example, "Worship Backgrounds" or "Announcement Slides." Create a new collection from the search panel's media tab, or when adding media for the first time. Each collection has a name and an optional emoji icon.
Playing media
Click a media item in the search results or in a collection to load it. For videos, playback controls (play, pause) appear in the live indicator bar. Videos play on the projector display with audio routed to the projector's output.
YouTube videos
Add a YouTube video by pasting its URL into the media upload modal. The video plays directly on the projector via YouTube's embedded player. Audio is routed to the projector's output device.
6
Standby Screen
What is the standby screen?
The standby screen is what the projector shows when no slide or media is live — the idle state. By default, it shows the ACC logo on a dark background. You can also set it to a blank (black) screen or a custom uploaded image.
Changing the standby display
Quick switch: Use the thumbnail strip in the overlay menu (the row of small icons in the header dropdown) or the burger menu (Settings > Presentation > Standby Display). Click a thumbnail to switch instantly.
Uploading custom standby images
Click the + button on the standby thumbnail strip (overlay menu) or click Manage images... in the burger menu. This opens the Standby Image Manager where you can upload images, preview how they'll look on the projector, and manage your collection.
Image specifications
Recommended size: 1920×1080 pixels (Full HD, 16:9 landscape). This matches the projector resolution exactly — no cropping or scaling. Accepted formats: JPG, PNG, or WebP. Maximum file size 10 MB. How images display: Images fill the entire projector screen using "cover" mode — the image scales up to fill the 16:9 frame and any excess is cropped from the edges. For best results, use landscape images at exactly 16:9 aspect ratio. Avoid placing important text or details near the edges, as they may be cropped on different display sizes.
Projector preview
The Standby Image Manager shows a large 16:9 projector preview at the top of the modal. Click any image in the grid below to see exactly how it will look on the projector — including any cropping. This lets you verify the image looks correct before applying it.
Countdown timer
The standby screen can optionally show a countdown timer (e.g., "Service starts in 10:00"). Enable it from the burger menu under Settings > Countdown Timer. Set a target time and the timer counts down on the projector display.
7
Playlists
What is a playlist?
A playlist is an ordered list of songs for a service. Build it before the service starts, then step through it during worship. The playlist panel is on the right side of the app.
Building a playlist
Search for a song, then click the + button on the result to add it to the playlist. Drag items in the playlist to reorder them. Click a playlist item to load it into the slides panel.
Saving & loading playlists
Click the playlist header to open the Playlist Library. You can save the current playlist with a name, load a previously saved playlist, or delete old playlists. Playlists are stored on the server and available across devices.
8
Mobile & Chromecast
Mobile controller
Open the app URL on your phone. The app detects the mobile device and shows a touch-optimized controller. On mobile, the display connection uses Google Cast SDK (Chromecast) instead of a browser window.
Chromecast setup
1
Connect a Chromecast device to your projector's HDMI input.
2
Open the app on your phone and tap the Cast icon in the header.
3
Select your Chromecast from the device list.
4
The Cast receiver loads on the Chromecast. Go live with a slide — it appears on the projector via Chromecast.
Note: Desktop uses the Presentation API (browser window). Mobile uses the Cast SDK (Chromecast). These are separate transport paths — do not mix them.
9
OBS Integration
Overview
Presenter can feed lyrics and media directly into OBS Studio for live streaming. Instead of pointing a camera at the projector screen (which looks unprofessional), OBS loads a special display page that receives the same content the projector shows — with pixel-perfect quality and optional transparent background for overlays.
How it works
The app controller automatically posts every state change (current slide, media, standby mode) to a server relay endpoint. A special page, obs.html, polls this relay every 300ms and renders the content identically to the projector display. OBS loads this page as a Browser Source.
Setting up OBS
1
In OBS, click + under Sources and select Browser.
2
Set the URL to: https://present.coronaarabicchurch.com/obs.html?bg=black
3
Set Width to 1920 and Height to 1080.
4
Click OK. The source will connect and show the current projector state.
Background modes
Add ?bg= to the URL to control the background:
ParameterEffectUse case
?bg=transparentFully transparent backgroundLyrics overlay on camera feed (requires OBS to enable transparency)
?bg=blackSolid black backgroundFull-screen presentation for videos and slides
?bg=greenSolid green (#00B140)Chroma Key filter in OBS for lyrics overlay
All URL parameters
ParameterDefaultDescription
bgtransparentBackground mode: transparent, black, or green
mute0Set to 1 to mute all audio from this source
poll300Poll interval in milliseconds (150–2000)
debug0Set to 1 to enable console logging for diagnostics
siddefaultRelay session ID (match the controller session)
Recommended OBS scenes
Set up three OBS scenes for a typical worship service:
1
Camera + Lyrics: Camera feed as the main source, plus a Browser Source with ?bg=transparent layered on top. Lyrics float transparently over the camera. Use this during worship.
2
Full Presentation: Browser Source with ?bg=black as the only source, full-screen. Videos play at full quality. Use this for video announcements or media playback.
3
Camera Only: Just the camera feed. No lyrics or media. Use this during the sermon or prayers.
Audio handling
The OBS Browser Source captures audio natively from video/media playback. For the best experience, use one audio source per output: the projector display feeds the room speakers, and the OBS Browser Source feeds the stream audio. If you need to prevent audio from the OBS source (e.g., you're routing room audio via a separate input), add &mute=1 to the URL.
Video playback in OBS
By default, videos play inside OBS's Browser Source (Chromium engine) at full quality. For better performance and reliability, enable OBS Direct Video Mode (see below) which routes video playback through OBS's native Media Source instead.
Note: With Direct Video Mode enabled, play/pause/mute commands from the controller sync to OBS automatically. Without it, the Browser Source mirrors the relay state but media controls may not sync perfectly.
Latency
Lyrics and slides have approximately 200ms average delay between the projector and the OBS source. This is imperceptible to stream viewers since they only see the OBS output. Video start may have a 0.5–1 second offset from the projector, but again, stream viewers never see both simultaneously.
Debugging
To diagnose issues, open obs.html?debug=1&bg=black directly in Chrome (not OBS). Open DevTools (F12) to see detailed [OBS_POLL] logs showing every state ingest, dedup skip, and connection status. You can also check the raw relay state from any browser console:
fetch('/songs/api/live_state.php?sid=default').then(r=>r.json()).then(console.log)
Multiple locations / simultaneous services
If two locations run the Presenter app simultaneously (e.g., two campuses), each needs its own OBS Session so their relay states don't collide. Without separate sessions, both locations write to the same server file and OBS would flip between the two services randomly.
1
Open the burger menu (☰) → expand OBS Integration.
2
In the Active Session list, type a name in the "New session name" field (e.g., main, youth, corona) and click + Add.
3
The new session becomes active (highlighted with a blue radio indicator). The Browser Source URL below automatically updates to include the session ID.
4
Click Copy URL and paste it into your OBS Browser Source.
5
At the other location, repeat with a different session name.
Each session creates a separate state file on the server. Click a session in the list to switch to it. Delete unused sessions with the × button (the "default" session cannot be deleted). The active session is saved on the server, so it persists across browser cache clears and device changes.
Note: The OBS relay works over the public internet — the controller and OBS machine do not need to be on the same network. Someone could run OBS from home and stream a service happening at the church, as long as both can reach the website.
OBS Direct Video Mode
Direct Video Mode eliminates video lag and freezing in OBS by playing uploaded videos (MP4, MOV) through OBS's native Media Source instead of the Browser Source. The Browser Source continues to handle lyrics, slides, and standby screens. YouTube videos are not affected — they continue playing through the Browser Source as before.
Why this matters: OBS's Browser Source runs inside a Chromium process that Windows can throttle (via "Efficiency Mode"), causing video stuttering or complete freezes during services. The native Media Source uses FFmpeg with hardware-accelerated decoding — no browser overhead, no throttling.
OBS Direct Video — Prerequisites
1
OBS Studio 28 or later (current version is 30+). WebSocket server is built in — no plugins needed.
2
Works on same machine or across a LAN. If the controller and OBS are on the same computer, the controller connects directly. If they are on different computers, the OBS Browser Source handles the connection automatically (see Cross-LAN Setup below).
OBS Direct Video — OBS Setup (one-time)
1
Enable WebSocket Server: In OBS, go to Tools → WebSocket Server Settings. Check Enable WebSocket server. Set port to 4455 (default). Check Enable Authentication and set a password. Click Show Connect Info and copy the password. Click Apply, then OK.
2
Add a Media Source: In your scene's Sources panel, click +Media Source. Name it exactly ChurchVideo (case-sensitive). Leave "Local File" empty. Uncheck "Loop". Check "Restart playback when source becomes active". Click OK.
3
Layer order: Drag ChurchVideo above your Browser Source in the Sources list. This ensures videos play on top of slides.
4
Fit to screen: Select ChurchVideo, right-click in the preview → Transform → Fit to Screen (or Ctrl+F).
5
Hide initially: Click the eye icon next to ChurchVideo to hide it. The Presenter app will show/hide it automatically.
OBS Direct Video — Presenter Setup: Same Machine (one-time)
1
Open the burger menu (☰) → expand OBS Integration.
2
Scroll to OBS Direct Video and toggle Enable on.
3
Fill in: Host: 127.0.0.1, Port: 4455, Password: (from OBS WebSocket settings), Media Source name: ChurchVideo.
4
Click Test Connection. The status should show ● Connected (green). The diagnostics panel shows OBS version, scene name, source name, and "Ready for video playback".
OBS Direct Video — During a Service
No changes to your workflow. Pick a song, click Live, pick a video, click Live — same as always. When a video plays, a small green OBS badge appears in the topbar confirming the video is playing through the native Media Source. Pause, play, and mute all sync to OBS automatically.
YouTube videos continue playing through the Browser Source (YouTube requires an iframe embed and cannot play through OBS Media Source). All uploaded MP4/MOV videos play through the native path.
OBS Direct Video — Cross-LAN Setup
If the controller and OBS run on different computers (e.g., a tablet controls the service while a separate PC runs OBS), the controller cannot connect to OBS directly due to browser security restrictions. Instead, the OBS Browser Source — which is already running on the OBS machine — connects to OBS locally and drives the Media Source.
No changes to the OBS setup (WebSocket, Media Source, layer order) — all of that stays the same. The only difference is the Browser Source URL.
1
In the controller app's burger menu, you do NOT need to enable OBS Direct Video. Leave it disabled for cross-LAN — the Browser Source handles everything.
2
In OBS, click your Browser SourceProperties.
3
Add your OBS WebSocket password to the URL using the &obspw= parameter. For example, if your current URL is:
https://present.coronaarabicchurch.com/obs.html?bg=black&sid=default
Change it to:
https://present.coronaarabicchurch.com/obs.html?bg=black&sid=default&obspw=YOUR_PASSWORD
4
Optional parameters: &obssrc=ChurchVideo (Media Source name, defaults to ChurchVideo) and &obsport=4455 (port, defaults to 4455). Only add these if you changed the defaults.
5
Click OK in OBS to save. The Browser Source will connect to OBS automatically. The status text in the bottom-left of the Browser Source will show "OBS Direct: Connected".
How it works: The controller pushes state (which video to play, pause, mute) to the server relay as it always does. The OBS Browser Source reads this state every 300ms AND has its own local connection to OBS on 127.0.0.1:4455. When it sees a video in the state, it tells OBS to play it through the Media Source. No proxy, no tunnel, no extra software.
Security note: The OBS WebSocket password will be visible in the Browser Source URL in OBS's Properties dialog. This is acceptable because the password only controls OBS on that same machine and is only visible to someone with access to OBS settings.
OBS Direct Video — Troubleshooting
SymptomLikely CauseFix
Test Connection → "Connection error"OBS not running or WebSocket not enabledCheck Tools → WebSocket Server Settings in OBS
Test Connection → "Auth failed"Wrong passwordIn OBS: Tools → WebSocket → Show Connect Info → re-copy password
Diagnostics: "Media Source not found"Source name mismatchCheck exact spelling in OBS Sources panel. Must match the "Media Source name" in settings.
Video plays but no audio in OBSMedia Source muted in OBS mixerIn OBS Audio Mixer, unmute ChurchVideo
OBS badge doesn't appearWebSocket disconnectedOpen burger menu → OBS Integration → check connection status
Video lag despite Direct VideoNetwork speed to serverThe video file still downloads from the server via FFmpeg. Ensure stable connection.
Cross-LAN: Browser Source shows "OBS Direct: Not connected"Password wrong or WebSocket not enabledVerify the &obspw= value matches OBS → Tools → WebSocket → Show Connect Info
Cross-LAN: Video plays in Browser Source instead of Media SourceMissing &obspw= in URLEdit the Browser Source URL in OBS Properties to include the password parameter
Same-machine: "OBS not reachable"OBS not running when controller loadedStart OBS, then click Test Connection in the settings. Connection auto-retries if OBS was previously connected.
Scene Control (manual scene switching)
Scene Control adds a small button to the Preview header (next to A−/A+) that lets you manually switch OBS between two pre-configured scenes — typically your "Video" scene (e.g., a Lower Thirds composition) and your "Default" scene (camera-only). This is a manual operator action; nothing switches automatically based on video playback.
Note (changed in r936u): Earlier builds switched scenes automatically when a video started or stopped. That auto-behavior has been removed — the OBS operator (or you, via this button) controls scene changes explicitly. OBS Direct Video playback (smooth video via OBS Media Source) is unchanged and continues to work.
Scene Control — Setup
1
Make sure OBS Direct Video is connected (see sections above) and the WebSocket is talking to OBS.
2
Open the burger menu (☰) and find the Scene control row. Toggle it on.
3
Pick your Video scene (the scene the button will switch to when you tap it) and your Default scene (where the button starts and returns to).
4
Close the menu. A small projector-shaped button now appears in the Preview header next to A−/A+. The button's color shows the active scene: blue = Default, amber + pulsing = Video.
Scene Control — Using it during a service
Hold the button (about half a second) to switch OBS to your Video scene. The button turns amber and pulses softly — an unmistakable signal that you've overridden the scene. Tap it again to switch back to your Default scene. The button calms back to blue.
Hover the button any time to see the current scene name and what tapping will do next. The button auto-releases the Video scene after 5 minutes as a safety against forgetting it on.
If you see a dashed amber outline on the button, Scene Control is on but you haven't picked scenes yet. Tap the button — it'll open the burger menu directly to the Scene control row so you can finish setup.
Scene Control — Troubleshooting
SymptomLikely CauseFix
Button doesn't appear next to A−/A+Scene Control toggle off, or OBS not connectedOpen the burger menu, enable Scene control. Verify OBS Direct shows ● Connected.
Button shows dashed amber outlineToggle is on but Video/Default scenes not selectedTap the button — it opens the settings to the right row. Pick both scenes.
Tapping the button does nothing in OBSScene name in settings doesn't match an actual OBS sceneIn burger menu, re-open the scene picker. Names must match exactly (case-sensitive).
Button is amber/pulsing but OBS isn't on the Video sceneSomeone changed OBS's scene manually in OBS StudioTap the button to resync (it will issue a fresh switch command).
Videos used to auto-switch the OBS scene; now they don'tExpected — auto-switching was intentionally removedUse the Scene Control button manually before/after the video, as your OBS operator would for any other content.
Settings storage: Same-machine settings (host, port, password, source name) are stored in your browser's local storage — specific to that machine and browser. Cross-LAN settings are embedded in the OBS Browser Source URL — they stay with the OBS profile regardless of which device controls the service.
10
Settings
Accessing settings
Click the hamburger menu (☰) in the top-left corner to open the settings panel. Settings are grouped into sections: Presentation, Display, and Search.
Key settings
Standby Display: Choose what the projector shows when idle — ACC Logo, Black, or a custom image. Countdown Timer: Enable a countdown timer on the standby screen. Chroma Green: Toggle a green background for OBS chroma key use. Hide Preview: Hide the preview panel to give more space to slides. Display Density: Switch between Default, Compact, and Dense layouts for more information on screen.
Overlay quick controls
The overlay dropdown (accessible from the header icons) provides quick access to the most commonly changed settings during a service: Standby Display, Countdown Timer, Chroma Green, and device connections. These mirror the burger menu settings — changing either one updates both.
11
Keyboard Shortcuts
Slide Navigation
Space PgDnNext slide
PgUpPrevious slide
HomeFirst slide
EndLast slide
19 then EnterJump to slide number
Live Controls
BBlack screen on/off
PPlay / pause media
MMute / unmute media
F5Focus search box
Navigation
Navigate results / playlist / slides (whichever panel is active)
EscClose modal / focus search box
F2Open Add Song modal
DelRemove selected from playlist
Tip: Shortcuts are disabled when typing in a search box or text field. Click outside the field first.
12
FAQ & Troubleshooting
The display window didn't open
Your browser blocked the popup. Allow popups for this site in your browser settings, then click the projector icon again.
I can't find a song
Try a different part of the title or lyrics. The search is fuzzy but works best with 2-3 words. Check that the scope tab is set to All or Songs, not Bible or Media.
The text on the projector is too small / too large
Use the A+ and A- buttons in the preview panel to adjust the zoom level. The setting persists across sessions.
Videos don't play on the OBS source
This is Chrome's autoplay policy. The OBS Browser Source loads without user interaction, so Chrome may block video autoplay with audio. Solutions: use &mute=1 to allow muted autoplay, or use OBS's Interact feature (right-click source → Interact → click anywhere) to provide a user gesture.
OBS lyrics are not transparent
Make sure the URL uses ?bg=transparent (this is the default). In the OBS Browser Source properties, ensure the Custom CSS field contains body { background-color: rgba(0, 0, 0, 0); } (OBS adds this by default).
The Chromecast won't connect
Chromecast only works from the mobile app (phone/tablet). It uses Google's Cast SDK. Make sure your phone and Chromecast are on the same Wi-Fi network. Desktop uses the Presentation API (browser window), not Cast.
My changes disappeared after refreshing
Most settings save automatically to localStorage (persists across sessions) or to the server (persists across devices). Song edits, media uploads, and playlists save to the server immediately. If you're in a private/incognito window, localStorage is cleared when the window closes.
The app looks broken or shows old content
The app uses a service worker for offline caching. After an update, you may see the old version until the cache refreshes. Do a hard refresh: Ctrl + Shift + R (Windows) or Cmd + Shift + R (Mac). If that doesn't work, open DevTools → Application → Storage → Clear site data.
How do I delete a song?
Right-click (or long-press on mobile) the song in the search results or slides panel. Select Delete from the context menu. You'll be asked to confirm — deletion is permanent.
Can multiple people control the projector at the same time?
Yes, but only one controller should be active during a service. Multiple browser tabs or devices can connect, but each pushState overwrites the previous one. For a clean service, have one operator on one device.
13
Tools
Give this device its own room
Isolates this desktop onto a unique relay room so it can never cross-talk with another campus or a stale session. This changes only this browser on this machine; nothing else moves until you finish the steps that appear after you set it.
Currently on
Letters, numbers, . _ - only. A short unique suffix is appended so two locations can’t collide. Final id:
✓ This device is now on
  1. OBS browser source — replace its URL with this, then refresh the source:
    Background:
  2. Phone — open Pair phone on the controller and re-scan (the QR now encodes the new room), or open this on the phone:
  3. Projector tab — nothing to do; it follows this device automatically. Reload it if it’s already open.
Then reload the controller so it picks up the new room.
Presenter v1.10.26 · Corona Arabic Church · Created by MS for ACC