A simple media player image for the Raspberry Pi 3 Model B+
You know — the one with the 3.5 mm, 4-pole composite output.
https://www.raspberrypi.com/products/raspberry-pi-3-model-b-plus/
Oh no:
- it’s getting harder to find
- composite A/V support past Bullseye is basically gone
- Bullseye isn’t available in Raspberry Pi Imager
- manual headless setup bad
So… we did it so you don’t have to.
- Raspberry Pi 3 Model B+
- Composite A/V cable (TRRS → RCA)
- SD card (8 GB+ recommended)
- Optional:
- Ethernet
- Wi-Fi
- USB keyboard or numpad
- Download image https://drive.google.com/file/d/1Y6pwTen5M_y9hYgS8aJSBdjM-uiVRS7-/view?usp=sharing
- Uncompress image file
- Write the image to an SD card
- Insert the SD card into the Pi
- Power it on
That’s it.
The pi will boot, and the demo video should play automatically, and will loop until power is removed.
MP4 files in the following directory will be looped, in ascending alphanumeric order:
/home/mediaplayer/media
SFTP and SCP protocols are ideal to transfer files, but require a network connection.
Or, using a linux host, you can just plop files in the media dir via rootfs
Plug it in.
The Pi will request an IP via DHCP automatically.
You should be able to SSH in immediately.
- Remove the SD card from the Pi after powering it down safely
- Insert it into another computer
- On the boot partition, create a file called
wpa_supplicant.conf:
country=US
network={
ssid="MYSSID"
psk="password123"
}- Savem, reinsert the SD card and boot the Pi
It should connect automatically. Should.
SSH is enabled by default.
If needed, you can also enable it by placing a blank file named ssh in the boot partition before first boot.
ssh mediaplayer@<pi-ip-address>This project was designed specifically for composite CRT playback.
Performance depends heavily on how the video is prepared.
Videos should be pre-encoded to avoid runtime scaling and stutter.
Example FFmpeg command for displaying videos on an old 12 " CRT with clapped out speakers:
ffmpeg -i input.mp4 \
-vf "scale=720:480:force_original_aspect_ratio=decrease,\
pad=720:480:(ow-iw)/2:(oh-ih)/2" \
-r 30000/1001 \
-pix_fmt yuv420p \
-c:v libx264 -profile:v baseline -level 3.0 \
-b:v 1500k \
-c:a aac -ar 44100 -ac 2 -b:a 128k \
output_pi_crt.mp4A USB keyboard or numpad can be connected at any time. Controls are optional — video will autoplay even if nothing is plugged in.
| Key | Action |
|---|---|
| Space / KP5 | Pause / Resume |
| Right / KP6 | Seek forward |
| Left / KP4 | Seek backward |
| N / KP9 | Next video |
| P / KP7 | Previous video |
| Q / Esc | Quit playback |
The control service:
- starts automatically after boot
- waits for devices to appear
- works with any USB keyboard
- recovers if devices are unplugged
Your video is likely not pre-encoded for composite output.
Re-encode to 720×480, H.264 Baseline, ~1–1.5 Mbps.
Composite output may not be forced.
This image already handles that — but if rolling your own, check config.txt and ensure you are not using KMS (vc4-kms-v3d).
- Ethernet should be plug-and-play
- Double-check
wpa_supplicant.conf - Ensure Wi-Fi country is set
The goal of this project is not modern quality — it’s reliable composite playback.
It is intentionally simple and boring, so you don't have to.