video player for artists by artists
Hi, we’re Jakub and Viktor, graduates from an art university, and we know what it’s like
- to transcode all your videos the night before your presentation,
- to burn the DVDs three times until the player finally accepts them,
- to see glitches and lags in your video and do the transcoding several times again until the playback is smooth,
- to visit the exhibition and see that your videos are not playing because someone forgot to press the play button or didn’t turn the loop function on.
VideoPi fixes all these problems:
- it plays virtually any video format you can think of1,
- from a USB stick2,
- with no glitches or lags (full HD supported),
- and it starts playing all videos on the USB stick in a loop automatically; you just connect the power cord.
VideoPi requires no configuration for the most common use case – HDMI full HD video output with a separate 3.5mm jack audio output.
VideoPi can also capture images using a webcam and upload them to your server.
VideoPi is extendable and open for modifications. You can modify VideoPi to do video post-processing like gamma adjustment, or to play the clips in random order, or to do something we couldn’t even imagine. VideoPi has all the capabilities of a micro PC; in the end it’s nothing but a clever Linux installation3. Dig in VideoPi’s open-source code.
If you don’t feel like installing VideoPi yourself (which you totally can, by the way, if you know the basics of Linux), we can
- lend you a VideoPi (or two, or a dozen) for a daily price for as long as you need,
- or we can sell it to you, so it will be yours and yours only forever.
In either case, we will help you with the initial setup.
We haven’t come up with a price list or the exact extent of provided support and maintenance yet, so just send us an email and we’ll get back to you.
VideoPi aims for simplicity and zero configuration, therefore:
- Make sure the HDMI cable is connected before you power on VideoPi.
- By default, the sound will play from the 3.5mm jack not from the HDMI.
- Volume adjustment is not available. Adjust the volume on your speakers.
- Video files will play in alphabetic order. If you want to be sure of particular file order, name your files with numbers or lowercase letters and use only latin characters.
- File names with non-latin characters (such as chinese or cyrillic) as well as special characters (such as punctuation) are supported but should be avoided; especially if you care about the playback order.
- The loop (repeat all) function cannot be turned off.
- To setup the webcam you need to have an internet connection and a server with remote SSH access, see the Webcam section for more info.
WARNING: Following documentation uses
/dev/sdX as a substitute for your real SD card device path. Double check this path before executing the installer (Makefile), so that you don’t accidentally overwrite a different device.
Required Arch Linux packages (should be similar on other distributions):
util-linux (sfdisk) dosfstools (mkfs.vfat) e2fsprogs (mkfs.ext4) make wget arch-install-scripts (arch-chroot) # Installation only binfmt-support (update-binftms) # Installation only qemu-user-static (qemu-arm-static) # Installation only
Install VideoPi on an SD card
First format your SD card:
# make erase filesystems DEVICE=/dev/sdX
Then install VideoPi for your Raspberry Pi version on the SD card and create a disk image of the whole card:
# make VERSION=2 DEVICE=/dev/sdX
Supported Raspberry Pi version are
Unpack a VideoPi image
After you’ve created an SD card image (see previous section), you can unpack it to another SD card without having to go through the installation again:
# make mount unpack umount VERSION=2 DEVICE=/dev/sdX
See the Makefile help for all available commands:
$ make help
To customize the installation (add or replace some files on the SD card), select one of the available modifications from
src-custom/ or create your own and pass appropriate
CUSTOM= parameter to
$ mkdir -p src-custom/my-improvement/home/alarm $ echo "bar" > src-custom/my-improvement/home/alarm/foo # make VERSION=2 DEVICE=/dev/sdX CUSTOM="my-improvement"
shuffle to play the video files in random order:
# make VERSION=2 DEVICE=/dev/sdX CUSTOM="shuffle"
To use multiple modifications put a space separated list in the parameter
# make VERSION=2 DEVICE=/dev/sdX CUSTOM="shuffle my-improvement"
To setup a network connection create a new netctl network config (possibly based on
src/etc/netctl/example) in a new modifications directory and rebuild the image:
$ mkdir -p src-custom/my-home-network/etc/netctl $ echo "my netctl content" > src-custom/my-home-network/etc/netctl/home $ rm src-custom/my-home-network/etc/netctl/my-network $ ln -s src-custom/my-home-network/etc/netctl/home src-custom/my-home-network/etc/netctl/my-network # make VERSION=2 DEVICE=/dev/sdX CUSTOM="my-home-network"
To setup a webcam image upload you need a working Network connection and SSH. Copy example SSH config files from
src/ and edit them to match your server settings:
$ mkdir -p src-custom/my-server/home/alarm/.ssh $ cp src/home/alarm/.ssh/config src-custom/my-server/home/alarm/.ssh/ $ cd src-custom/my-server/home/alarm/.ssh $ nano known_hosts $ echo "" > id_rsa $ nano config
Then edit your remote server directory:
$ cp src/home/alarm/bin/upload-image src-custom/my-server/home/alarm/bin/upload-image $ nano src-custom/my-server/home/alarm/bin/upload-image
…and build the image:
# make VERSION=2 DEVICE=/dev/sdX CUSTOM="my-home-network my-server"
The log is located in
Copyright 2016 Jakub Valenta
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.
VideoPi uses the excellent mpv media player with the FFmpeg library, which supports MPEG-2, H.263/MPEG-4 Part 2 (DivX, .avi, .mpeg), H.264/MPEG-4 AVC (.mp4, .mov, .mkv), Windows Media Video (.wmv), VP8 (.webm), Theora (.ogv), and many other codecs. ↩
VideoPi reads USB flash drives formatted on Windows (FAT, NTFS), Mac (HFS+), or Linux (ext4 etc). ↩