Looping Video for a virtual fireplace

I found Screenly searching for a way to make a virtual fireplace. I found a post and followed the instructions. Screenly works will on my device but the issue is that it pauses when it loops back to the beginning of the video. Is there a way to make this a seamless loop?


When you added the asset of the virtual fireplace, is it a direct file upload video, or a video hosted on a website?

Just one very basic simple way I would do this is to put that video file on a published google Slides presentation and set the desired loop of slide…

I did a file upload. I was following these directions. Seemed pretty straightforward and simple…

oh ok, testing now will let you know…

I was able to grab a blank SD card, install raspbian lite on it, run the bash script to install screenly, and I was able to upload a sample looped fireplace video and it works perfectly fine…

Thanks so much. I’ll try installing that way. I followed the directions in the web article I sent the link to.

well, which image did you download to the SD card if you followed the blog directions, let’s start with that… i dont usually grab the image from the Sprints since i burn a clean fresh copy of Raspbian lite and set it up using raspi-config and then i use the bash install command to get Screenly…
I can try and reproduce if you tell me which exact image you downloaded or you can try it my way since i know it’ll work 99.99%

I am doing it your way as I type. The instructions I followed before were in my post above. It was a single image.

Just finished fresh install and doing the same thing…

  1. Installed Raspbian buster lite
  2. Ran raspi-config
  3. ran ```
    bash <(curl -sL https://www.screenly.io/install-ose.sh) NOTE*From the console not SSH
4. Once installed rebooted and used web interface to upload a 10 second video. Plays once, goes to black screen then starts over. Its still not seamles.

sorry but re-reading your post i just realized that when i was answering, i was first answering to that other guy who i guess no longer has an account in forums and deleted his posts because that person posted they couldn’t get their video to load and then i got confused and continued thinking you couldn’t get the video to even open… :man_facepalming:t2:

if you wanted the video not to stop at end of its own duration, and start again seamlessly, this is not possible right now as far as i know because you are adding the asset and the video comes with it’s own duration and after the duration ends, the screenly viewer tries to go to the “next” asset, even if you only have one… I used to go into the viewer.py a while back and edit the python code to fiddle with things like this but i havent done that in a while…

so here is what i suggest as a temporary workaround, go to youtube and search for fireplace and find a video that is hour long… download that using some simple youtube video downloader website like y2mate.com (not affiliated at all just I’ve used it before, watch out for adult ads) , and upload that file to the assets… at least that way it doesnt loop after 10 seconds… sorry… maybe i can try to edit the viewer python file and change the omxplayer settings to see if this just needs a simple flag for you to loop seamlessly… if i cant do it tonight i’ll def try again because i am also interested in this seamless loop as a custom setting.

ok @itgoes211 i got your loop ready…

remember this is editing the main viewer.py file which is the main file that plays assets so you have to be careful when editing it…

edit the file in nano:

sudo nano ./screenly/viewer.py

find the following lines:

def view_video(uri, duration):
    logging.debug('Displaying video %s for %s ', uri, duration)

    if arch in ('armv6l', 'armv7l'):
        player_args = ['omxplayer', uri, '--loop', '--no-osd']
        player_kwargs = {'o': settings['audio_output'], '_bg': True, '_ok_code': [0, 124, 143]}
        player_args = ['mplayer', uri, '-nosound']
        player_kwargs = {'_bg': True, '_ok_code': [0, 124]}

    #if duration and duration != 'N/A':
       # player_args = ['timeout', VIDEO_TIMEOUT + int(duration.split('.')[0])] + player_args

    run = sh.Command(player_args[0])(*player_args[1:], **player_kwargs)

i added the --loop and --no-osd arguments because the omxplayer needs those arguments for the video file you play, the loop is self explanatory and the no osd just prevents the screen from showing the SEEK 00:00:## time of video words from showing on the screen so you get a real seamless experience, but we also need to comment out the timeout function because if you dont, after 20 seconds or 30, not sure, i didnt calculate but after my video played twice seamless it started showing the black tmp page so commenting those two lines solved it…

i gotta admit, it does look very nice on a seamless loop…

Worked like a champ. I guess one reason this isn’t an option is it appears the video file gets cached in memory because once you start it there is no way to stop it. Even tried deleting the file…But it works for what I want it do

Thanks so mucj

Yes there is a way to stop it… just deactivate the Asset… and press Next Asset or something and you will see it stop…

Can someone help me?
I use screenlyOSE in conjunction with a hospital care queue management system. I need the video volume to be lower than the system beep. was changing the viewer.py file by assigning volume omxplayer command.

def view_video(uri, duration):
logging.debug('Displaying video %s for %s ', uri, duration)

if arch in ('armv6l', 'armv7l'):
    player_args = ['omxplayer', uri, '--vol -600']
    player_kwargs = {'o': settings['audio_output'], '_bg': True, '_ok_code': [0, 124, 143]}
    player_args = ['mplayer', uri, '-nosound']
    player_kwargs = {'_bg': True, '_ok_code': [0, 124]}

I’ve tried it in many ways but unfortunately it didn’t work.
Thank you very much in advance.

Hello, you almost did it right, you just cant pass that args with a space, just separate it into two parts and it will work…

so change this: ['omxplayer', uri, '--vol -600']
to this: ['omxplayer', uri, '--vol', '-600']

by the way, that -600 is going to make a very small difference, i tested and for me to get lower volume that is noticeable i had to make it -2000