Make a USB Video Looper with a Raspberry Pi 4 Model B

Hey all new tutorial and video out "Video Looper with Raspberry Pi 4 Model B"

Follow along to create a small-footprint, low-power, high definition video looping monster that is capable of running 24/7. Just plug in a USB filled with videos and it will play automatically. No faffing around with controllers or settings. Everything you need and exactly how to do it all in a succinct package. Hope you dig it.

Also, if you happen to be holding a Raspberry Pi board and not quite sure what it is? Then check out this guide Raspberry Pi Generations to identify it.

Read more

1 Like


i have successfully installed the video looper on a raspberry pi4b.

I need to rotate the screen image 270 ° what can I do?

I have already changed the screen settings but when the player starts it does not respect the settings I set for the screen.

Thanks so much!


pls have a read here…


Hey Roberto,

Welcome to the forum! That tutorial Brian linked should have all the relevant info, if you run into any issues just jump back on here and we’ll do our best to help out.


This is a great program! It work at first, but when i unplugged the USB and replugged it, it doesn’t work anymore. It just goes to a black screen after the countdown. Please assist!

go over all your wiring…

also check that if your screen has not defaulted to another input if it has multiple ones…

you may not have powered it down correctly…
improper shutdowns if the sd-card is in a write cycle it may have corrupted your image and or program etc.etc… verify that your media is intact …you may need to re-flash it …do you have a backup copy sd-card …if not i suggest you make one and try it…
and if also check your power supply…for 5 volts…
i think if you look up the schem`s or diagrams and check voltages…

just a few things to consider for now…

Thank you! This is my first time playin around with a Raspberry. I do have a copy of the files i’m trying to media. I believe the media is still working since i can plug the sd-card into my pc and run it. I do not have another display. I am using a 7" Raspberry Screen. But I will go over the wiring and power again.

Would there be another issues that might be causing it

Thank you! i got it to work. I dont know what i did wrong, but it is working. If i want to loop the video once it ends, is there a code i can add to loop the video indefinately?

Thanks for this, it works very well for me! Is it possible to run a dual screen version, with one video on HDMI-0 and a different video on HDMI-1?

Hey Richard,

It seems to be possible, however, you’ll likely notice a major drop in performance if you are able to set that up on a Pi 4.

There’s actually a discussion in one of the issues on their repo about this exact question, I’ve linked it above for you. All the best with your project!

1 Like

This is a great tutorial! Thank you! Everything is running smoothly, except the player seems to distort the proportions of my video. The video plays at the correct proportions using the pi’s vlc player, but not with the looper. Any ideas what is happening?

`try switching to 720P and adjust the font sises…

There’s an issue in the github - looks like it’s something to do with OMXPlayer

Here’s a fix:

For convenience:

from /boot/config.txt

fixes the issue

Thanks for this looper, it’s working very well for me! Is there a way for me to control the volume out from the 3.5mm jack? I have it plugged into a powered amp system that doesn’t have convenient volume control, and changing the volume from the Rasparian GUI doesn’t seem to affect the output when the looper is playing, I assume it is bypassing the system volume settings. I could adjust the volume on the recording, but that’s a lot of trial and error compared to adjusting the volume of the system on-the-fly.


Hey Richard,

Did a bit of googling - perhaps try this:

Worked for this guy apparently:

Hi Guys,

Seems like adafruit added a volume config option in a recent release:

However I’m not 100% across this project so I can’t give the needed usage tips unfortunately :frowning:


Edit: Seems like you can do it on a per-video basis which seems really useful


Thanks James!

This seems to be the go, but I’m struggling with syntax. I’ve added volume text file reference to the video_looper.ini file, and the file itself to the video directory. I’m pretty sure I’m getting that bit right because the file plays normally (at full volume) when I don’t have the name or location of the file right, but when the names match and the location is correct, the file won’t play, which I assume is because my syntax in the text file is wrong.

I’ve tried “-3000”, I’ve tried “50%”, and I’ve tried “amixer -c 1 – sset Master playback -20dB” all of which seem to make sense, but cause the player to fail.

If you can point me in the direction of the “per video” information, that might help me, because at the moment what I’m doing would only have a single .txt file referenced for the whole directory of videos.

Also, I understand that this should be asked in the Adafruit Q&A, and I will, but people here seem much more responsive…

Thanks again!



I was able to try it out and it worked with my hdmi monitor but not with the 3.5 inch display(no hdmi port just the female pin thingies) i bought with raspberry.

Is there a way to make it work with the display or does the program only work with hdmi monitors?

To be clear, i’m a complete noob at any of this and literally only bought a raspberry pi a few days ago wahahahh


Hi Richard,

Sorry for leaving you hanging for so long! I put this on the back-burner and never took it off :sweat_smile:

From the default config file found on the GitHub for this project:

# ALSA configuration follows.
# This only applies when using omxplayer with sound = alsa.

# ALSA hardware device to use for sound output.  This consists of the card
# number and subdevice number separated by a comma, e.g. '1,0'.  Run 
# 'aplay -l' to list available devices.  If empty, the default output device is
# used.
hw_device = 
#hw_device = 1,0

# Volume of the hardware device can be set using a text file provided with the
# video files.  If the file does not exist, the hardware volume will remain
# unchanged.  This setting specifies the name of the text file.
# The file should contain a single line with an amixer-compatible volume value,
# such as '50%' or '-10db'.
hw_vol_file =
#hw_vol_file = alsa_volume

# Name of the ALSA control to use for adjusting volume.  Typically this will be
# 'PCM'.  Run 'amixer -c N scontrols' (where N is the card number of your output
# device) to list available controls.
hw_vol_control = PCM

I’d make sure you’re controlling the volume for the right sound device, and if that fails, just use the alsamixer command to set the volume before playing video with no volume control options selected in the looper.

Sorry to see it’s still giving you so much trouble! Adafruit are usually better than this in their documentation…


Hi Aaron,

To my knowledge the 3.5" displays work on a different framebuffer to the HDMI or DSI, I’d look through the code of the video looper to see if you could modify it (but I’m not really sure where to start)

Keen to see you get this working!