How to Build a Low-Cost Remote-Controlled Video Player with Raspberry Pi
A Raspberry Pi behind a screen, controlled over the network by your software. No cloud account, no per-screen license, no proprietary hardware. This guide covers the hardware, the install, and the integration.
Why Raspberry Pi for exhibition playback?
Exhibition playback machines do not need to be powerful. They need to be small, silent, reliable, and cheap enough to deploy behind every screen without worrying about the budget. A Raspberry Pi 4B or 5 fits that profile:
- Fanless — no moving parts, no noise, no dust buildup in a sealed enclosure
- Small — fits behind a flat-panel mount or inside a projection housing
- Affordable — low cost per node, including a case and SD card
- Replaceable — if hardware fails on site, swap in a pre-imaged SD card and the node is back in minutes
Most Raspberry Pi video players on the market are signage boxes — they loop a playlist and that is it. DearScenario Player turns the Pi into something different: a live player that your control system can command over HTTP or OSC.
Hardware requirements
| Component | Recommendation |
|---|---|
| Board | Raspberry Pi 4B (2 GB+) or Raspberry Pi 5 |
| Storage | 32 GB+ microSD card (Class 10 / A2). Larger if media is stored on the card |
| OS | Raspberry Pi OS 64-bit Lite or Desktop |
| Display | HDMI output to screen or projector. Pi 4B has two micro-HDMI ports |
| Network | Ethernet recommended for reliability. Wi-Fi works for development |
| Power | Official USB-C power supply (5V 3A for Pi 4B, 5V 5A for Pi 5) |
1. Prepare the Raspberry Pi
Flash Raspberry Pi OS 64-bit Lite for a direct-display appliance, or Desktop when a local commissioning UI is useful, using the Raspberry Pi Imager. During setup, enable SSH and configure Wi-Fi if you will not have physical access to the Pi after deployment.
After first boot, verify the OS is 64-bit:
uname -m # should print: aarch64
getconf LONG_BIT # should print: 64Update the system:
sudo apt update && sudo apt upgrade -y2. Install DearScenario Player
Download the Raspberry Pi package (.deb file), then install:
sudo apt install -y ./dearscenario-player_xxx_arm64.debThis resolves dependencies automatically. After installation, launch DearScenario Player from the terminal or the desktop application menu:
dearscenario-playerThe Pi’s screen should show the DearScenario Player idle display. Press F1 to see the debug overlay with the node’s IP address and port.
3. Copy media to the Pi
DearScenario Player plays local files. Transfer your media to the Pi over the network:
scp intro.mp4 [email protected]:/home/pi/media/Or use a USB drive, NFS mount, or shared folder — whatever fits your deployment workflow. The path you give to the API will be the local path on the Pi.
4. Control the node over HTTP
From any machine on the same network, test the connection:
curl http://192.168.1.200:18290/api/statusIf you get a JSON response, the node is ready. Load and play a video:
curl -X POST http://192.168.1.200:18290/api/command \
-H "Content-Type: application/json" \
-d '{"cmd":"play_media","params":{"source":"/home/pi/media/intro.mp4"}}'
curl -X POST http://192.168.1.200:18290/api/command \
-H "Content-Type: application/json" \
-d '{"cmd":"play"}'The Pi should now be playing the video fullscreen on the connected display.
5. Control over OSC
If your controller uses OSC (QLab, TouchDesigner, Max/MSP), set
network.enable_osc to true and restart the player; then send OSC
messages to the same port:
OSC Address: /player/play_media
Arguments: /home/pi/media/intro.mp4 (string), 0.0 (float), 0 (int loop off)
Destination: 192.168.1.200:18290Use /player/prepare + /player/play when you need to load ahead of the cue.
See the OSC protocol reference for the complete address table.
6. Deploy for production
Once the integration works in development, prepare the node for unattended deployment:
Auto-start on boot
Configure DearScenario Player to launch automatically when the Pi powers on, so the node recovers from power loss without anyone touching it. Use a systemd service or the desktop autostart mechanism.
Default media
Set a startup file with --open-file so the display is never blank after a reboot:
dearscenario-player --open-file "/home/pi/media/idle_loop.mp4"Static IP
Assign a static IP address to the Pi so your controller always knows where to find it. Configure this in /etc/dhcpcd.conf or through your network’s DHCP reservation.
Disable screen blanking
Prevent the Pi from turning off the display after inactivity:
sudo raspi-config
# Display Options → Screen Blanking → DisableRead-only filesystem (optional)
For maximum reliability against SD card corruption from hard power cuts, consider enabling a read-only filesystem overlay through raspi-config. Media files would then be served from a USB drive or network share.
Performance expectations
- Raspberry Pi 4B: Handles 1080p H.264 smoothly with hardware decoding. 4K is not practical
- Raspberry Pi 5: Better CPU headroom, same GPU limitations. Still best at 1080p for exhibition use
- Codec: H.264 in MP4 is the safest choice. H.265/HEVC support depends on the Pi model and OS version
- Audio: HDMI audio output works. DearScenario Player volume can be controlled over the API
Scaling to multiple screens
Each screen gets its own Pi + DearScenario Player node. Your control system sends commands to each node by IP:
Pi 1 (main screen): 192.168.1.200:18290
Pi 2 (side left): 192.168.1.201:18290
Pi 3 (side right): 192.168.1.202:18290The same HTTP or OSC command structure works for every node. Your controller loops through the IPs and sends the appropriate command to each. There is no per-device license, no cloud coordination, and no limit on the number of nodes.
Next step: Read the production deployment guide for the full unattended setup checklist, or learn the HTTP API in detail.

