Seamless looped video playback

General Information

Seamless looping essentially puts the video file into a circular buffer and you can seamlessly loop only a single video at a time in a zone, not multiple back-to-back videos.

In order for there not to be a gap at the loop point all tracks in the file, even non-video/audio tracks, must be exactly the same length down to the sample, not just the metadata length value.
numberOfSamples x sampleDuration must be the same for all tracks.  Any difference between tracks in the file will cause the loop to not be seamless.

Encoding the Media

Files should be encoded with Fast Start (Web-Optimized/Progressive Download) enabled so the MOOV header is at the front/top of the file.

For Seamless Video Looping Only (No Audio)

  • XCx55, XTx45, XDx35, HDx25, LS445, XTx44/43, XDx34/33, HDx24, LS424, 4Kx42: Supports seamless looping of H.265 or H.264 .mp4 or .mov files.
  • LS425, XDx32/30, HDx23/22/20, LS423/22: Supports seamless looping of H.264 .mp4 or .mov files. These models do not support seamless looping of transport streams.
  • HDx10: Can seamlessly loop an H.264 transport stream (which does not use an .mp4 or .mov container). 

For Seamless Audio and Video Looping

  • XCx55, XTx45, XDx35, HDx25, LS445, XTx44/43, XDx34/XDx33, HDx24, LS424, 4Kx42: Supports seamless audio/video looping of .mov files with H.265 or H.264 encoded video and PCM SOWT encoded audio.
  • LS425, XDx32/30, HDx23/22/20, LS423/22: Supports seamless audio/video looping of .mov files with H.264 encoded video and PCM SOWT encoded audio.
  • HDx10: Does not support seamless audio/video looping.

For Seamless Video Wall Looping

We recommend using BrightWall to create a seamless-looping video wall. 

  • XCx55, XTx45, XDx35, HDx25, LS445, XTx44/43, XDx34/33, HDx24, LS424, 4Kx42: Supports seamless video looping of .mp4 or .mov files with H.265 or H.264 encoded video. If audio is included, the audio/video should be formatted as an .mov file and the audio should be encoded as SOWT PCM for seamless audio.
  • LS425, XDx32/30, HDx23/22/20, LS423/22: Supports seamless video looping of .mp4 or .mov files with H.264 encoded video. If audio is included, the audio/video should be formatted as an .mov file and the audio should be encoded as SOWT PCM for seamless audio.

Creating a Presentation

You can use either a simple BrightAuthor interactive playlist or a script to loop a single video.

BrightAuthor Project

If the BrightAuthor project has a single video, with no Media End event connecting it to another state or to itself, it will loop seamlessly.

NoteIn BrightAuthor versions 4.1.0.x and later, you will need to specify the Loop media option in the Media Properties of the video state.

seamlessloop1.JPG

Custom Script

Copy the following script to a text file and rename it "autorun.brs". Change the filename of "video.ts" in the script  to match the video you wish to loop.

v=CreateObject("roVideoPlayer")
v.SetLoopMode(true)
v.PlayFile("video.ts")
while true
sleep(10000)
end while

Have more questions? Submit a request

33 Comments

  • 0
    Avatar
    Allan Hughes

    Is there any reason the custom script above would downscale 1080p video to 576 50i? I am trying to troubleshoot an installation with a HD1010 and a Blaupunkt 1080p LED Screen. Video is playing and looping ok. Video file is 1080p h.264 mp4 and aac audio in a .ts container.

  • 0
    Avatar
    Brandon

    The script above does not set the video output mode, so it will be whatever was autodetected, which isn't always the full resolution on some displays.

    Try adding this at the beginning

    mode = createobject("roVideoMode")

    mode.SetMode("1280x720x60p")

    That will set it to 720p output

  • 0
    Avatar
    Joe Hamilton

    Can the 'x' in the model numbers be replaced by any number?

    (i.e. HDx20 = HD120 and HD220)

  • 0
    Avatar
    BrightSign Support

    Joe,

    Yes.

  • 0
    Avatar
    Jean Michel

    What about getting video to loop seemlessly in HTML5 content?

  • 0
    Avatar
    Lyndon

    as you asking if you can do it, or how you'd do it? 

  • 0
    Avatar
    Jean Michel

    Well, both, really. I would guess the most straightforward method to loop a HTML5 video is to set the "loop" propery of the video element to true. I tried that, and it seems to work. But it would be nice to have an official stance on this, that this is your recommended method for doing seamless looping on HTML5 video content.

  • 0
    Avatar
    Lyndon

     

    I don't work as much in html, but our html developers response matches what you are doing setting loop in the video tag.

     

    <video .....   "loop">

     

     

  • 0
    Avatar
    Jennifer Frost

    Is there a way to loop video between a start and end time? For example, I have a video that is 30 minutes long, and I want it to play continuously but only from 7:30am until 3:30pm. How would I go about doing that?

  • 0
    Avatar
    d crooks

    I'm having some issues using Adobe Media Encoder to prepare files for a seamless looping project. After a time of wonder I finally got a file to loop by encoding a .mov file using h264 as the encoder and setting a data-rate limit.
    AME gives very little control over profiles when encoding as h264 to quicktime. But by limiting the data rate you can control the profile, unfortunately it doesn't seem to actually use the specified datatrate fro anything else. I tried a range of data rate lists 10/15/20/25/30 Mb/s and they all came out exactly the same, only the profile dropped from 4.1 to 4.0 (unchecking the data rate limit results in increased data rate but an unusable 5.1 profile).

    so... any suggestions for a better Adobe Media Encoder workflow ???

    how can I control the quality of the H264 encode (datarate, variable/constant bitrate, Profile used etc.) AND have PCM audio. I really can't figure a way to do it. I even looked at using secondary muxing software but they all spat the dummy with the PCM audio... argh...

    Edited by d crooks
  • 1
    Avatar
    T

    What software can make "mp4 files with H.265 encoded video and PCM encoded audio" ?

    I can't find any. Windows or OS X.

  • 1
    Avatar
    A.K. Weber

    T Did you figure out the H265 with PCM audio?

    Is it supposed to be a separate file that is married together in bright author? Thats my only Idea.

     

  • 1
    Avatar
    T

    Yes, A.K. Weber

    Romeo, from support helped. 

    Basically using ffmpeg comandline. This allows H264/H265 with PCM audio in .MOV

    In order to encode the file I used the below FFMPEG command line settings below:

    C:\****\ffmpeg -probesize 500M -analyzeduration 500M -loglevel verbose -i F:\pathtofile\****.mov -pix_fmt yuv420p -s:v:0 1920x1080 -preset:v medium -c:v libx265 -x265-params vbv-bufsize=10000:vbv-maxrate=40000:crf=16:bframes=2 -c:a pcm_s16le -ar 48000 F:\pathtosave\****.mov

     

    Hope this helps!

  • 0
    Avatar
    Dan Sloane

    I'm trying to get three XD234 players to seamlessly loop UHD 60fps content.  The videos loop seamlessly standalone in a BrightAuthor project, but not when running in a Brightwall project.  

    ffprobe tells me this about the files:

    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'LEO_Wind_0115_01_Right.mp4':
    Metadata:
    major_brand : mp42
    minor_version : 0
    compatible_brands: mp42mp41
    creation_time : 2019-01-16T10:46:57.000000Z
    Duration: 00:00:10.07, start: 0.000000, bitrate: 75489 kb/s
    Stream #0:0(eng): Video: hevc (Main) (hvc1 / 0x31637668), yuvj420p(pc, bt709), 3840x2160 [SAR 1:1 DAR 16:9], 75553 kb/s, 60 fps, 60 tbr, 60k tbn, 60 tbc (default)
    Metadata:
    creation_time : 2019-01-16T10:46:57.000000Z
    handler_name : ?Mainconcept Video Media Handler
    encoder : HEVC Coding
    Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 317 kb/s (default)
    Metadata:
    creation_time : 2019-01-16T10:46:57.000000Z
    handler_name : #Mainconcept MP4 Sound Media Handler

     

    The above specs haven't been updated for the XDx34 series.  What should I be considering? 

  • 0
    Avatar
    T

    You need to encode the video using .mov (H.265) with PCM audio see below:

    "XTx43, XDx33, 4Kx42: Supports seamless video looping of .mp4 or .mov files with H.265 encoded video. If audio is included, the audio/video should be formatted as an .mov file and the audio should be encoded as SOWT PCM for seamless audio."

  • 0
    Avatar
    Dan Sloane

    Thanks @T,

    Ignoring the audio, my files are H.265 (HEVC), but in an .mp4 container rather than .mov.  From my understanding there is little difference between the two.  Does the container make a difference in this case?

     

  • 0
    Avatar
    Jean Michel

    Container shouldn't make a difference. MP4 is a subset of MOV anyway, so if anything should be "better" for compatibility.

  • 0
    Avatar
    T

    Your video about does contain an incompatible audio stream for looping:

    "Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 317 kb/s (default)"

     

    How are you encoding the files? You can't encode mp4 with PCM audio, as far as I know. 

  • 0
    Avatar
    Dan Sloane

    Thanks all - after a bit of experimentation, it turns out that the Media End event described in this video is causing the pause. 

    https://www.brightsignnetwork.com/download/Videos/Sync%20Presentation.mp4

    Remove the Media End re-sync and the films loop seamlessly, but I only get to sync the slaves on startup. 

    I'm guessing Brightwall does a similar thing invisibly. 

    Any clues how to re-sync the slaves in Enhanced Synchronisation without a Media End event on the master? 

  • 0
    Avatar
    T

    I have used both methods in the past, and with recent firmware, sync is very robust.

    If after startup you unplug one player and reboot does it pick up the correct place and sync in the video?

    This is normally the case for me, using the above tutorial. Making me the think the resync is continuos regardless of the media start and end sync. Possibly this is from "Enhanced Synchronisation" not sure?

  • 0
    Avatar
    Dan Sloane

    More digging through logs and it seems Enhanced Sync is basically just an implementation of PTP (ptp4l) , which keeps the player's system clocks very accurately sync'd.  It doesn't seem to affect the video playback directly at all. 

    The Link Synchronise events used in the tutorial are manual network triggers used to play (or restart) the slave device's video. 

    Even the Brightscript documentation roSyncManager example shows the slaves waiting for the master to send a start trigger.  There is no ongoing direct frame locking, other than to the PTP-guided local clock. 

    Fatih from support is investigating why the Media End event that is used in the tutorial causes a very noticeable loop point pause.  Of course, if your content can loop on black or a static frame, then you won't notice this pause. 

     

     

  • 0
    Avatar
    T

    If you know how to get Genlock working that would be great?

  • 0
    Avatar
    Dan Sloane

    I realise I'm causing this thread to drift off topic, so apologies, but Genlocking computers is hard.  Both nvidia and AMD have expensive add on cards for their expensive top end workstation graphics cards. 

    If we needed Genlock, we'd be looking well beyond Brightsign. :)

     

    Edited by Dan Sloane
  • 0
    Avatar
    T

    Brightsign have it but I don’t know how to write the script. I asked for an example a while back but nothing.

    “As of firmware version 7.0, roSyncManager also supports Genlock synchronization (frame-accurate VSync) over Ethernet. To enable Genlock on an roSyncManager domain, pass the domain name to the roVideoMode.SetSyncDomain() method. Otherwise, the process for synchronizing video, image, and ticker playback is the same.”

  • 1
    Avatar
    Dan Sloane

    Interesting.  This exemplifies my endless love-hate relationship with Brightsign.  Brightauthor is just horrible and limiting, but Brightscript is yet another language to learn and life is too short. 

     

  • 0
    Avatar
    Brandon

    "Even the Brightscript documentation roSyncManager example shows the slaves waiting for the master to send a start trigger.  There is no ongoing direct frame locking, other than to the PTP-guided local clock."

    Playback position is readjusted as necessary to maintain sync.  If you create a situation where the Slave is already playing its video when the Master comes back online, you will see the Slave readjust.  The easiest way to do this would be to use a long-duration video, start both players, then reboot the Master after both master and slave are playing.

    "Fatih from support is investigating why the Media End event that is used in the tutorial causes a very noticeable loop point pause.  Of course, if your content can loop on black or a static frame, then you won't notice this pause. "

    This pause is normal.  Seamless looping requires no Media End event, as the Media End event stops the playback, and the transition back to the same state would set up and start video playback, but that stop and set up process takes a perceivable amount of time.

    BrightAuthor 4.7.1 and newer automatically enable Genlock support on synced players with firmware that supports that feature.


    Friendly reminder, the community forum is intended for user-to-user discussion. For troubleshooting problems and to ensure a timely answer from a BrightSign representative, please submit a support ticket.
    Edited by Brandon
  • 0
    Avatar
    Nick

    So a quick question to clarify some of the above:

    Is it possible to play a seamless loop on a master player, while also providing timing data to slaves using the BrightAuthor Enhanced Sync option?

    Cheers!

  • 0
    Avatar
    Jerry Gill

    Is there any update to this regarding BS Connected? I have a video nested in a super state that has a brief fade in and out of the video / audio at the end of the loop.
    I tried poking around the autorun.brs looking for a spot to put the code provided. Can I just drop this in anywhere or do I need to replace something with this? Thanks!

    v=CreateObject("roVideoPlayer")
    v.SetLoopMode(true)
    v.PlayFile("video.ts")
    while true
    sleep(10000)
    end while

  • 0
    Avatar
    James Brown

    What's the necessary magic here? Can someone give me an FFMPEG command line that will generate a seamless looping video WITH AUDIO?

    I'm using an LS423 with 8.5.33 firmware.

    Tobias generated some files that work in this thread comment:
    https://support.brightsign.biz/hc/en-us/community/posts/360003932514/comments/360001135594

    However, if I swap out either the video or the audio in his file, it no longer works. I've tried just reencoding his file with ffmpeg and that works fine. But I can't create my own file that actually works (loops seamlessly).

    I can generate h.264 / h.265 video WITHOUT audio that works just fine. But as soon as I add audio, it pauses each time it loops.

    According to this article an LS423 can seamlessly loop 1080 video with audio. Plus, the videos from the comment linked above WORK on my hardware so it's definitely not a hardware or firmware issue. It's definitely the encoding.

    Yes, I'm using an MOV container, not mp4. Yes, I'm using PCM S16LE (sowt). Yes I've checked the bitrate and it's well below 20k. No, there are no other problems besides the pause at the loop point.

    HELP!! Please!! Someone must know the magic incantation to get this to work!!

     

    SOLVED!:

    Thanks to Brandon at BrightSign I now know the solution! All the streams (both video and audio) must be EXACTLY the same length, to the frame. If not, the player won't loop seamlessly.

    The other stuff matters too (pcm audio, h264/5 encoding, etc.) but the key is having both stream the identical length.

    Edited by James Brown
  • 0
    Avatar
    T

    I recommend using an ffmpeg gui, ff·Works 3 on Mac or my·FFmpeg 5 on windows.

    I can send you a preset I've made. If it helps

Please sign in to leave a comment.
Can't find what you're looking for? Try to
Powered by Zendesk