0

Achieving Gapless Looping Video from a MRSS Feed

I'm trying to create a BrightAuthor presentation that seamlessly loops a video file specified from a MRSS feed but every loop has a ~0.6 second stutter. My goal is to dynamically control what looping content is played on a BrightSign from a remote server where the content is encoded dynamically.

The video file has the following MediaInfo:

General
Complete name : ...\example-clean.v2.h264.mp4
Format : MPEG-4
Format profile : Base Media
Codec ID : isom (isom/iso2/avc1/mp41)
File size : 4.23 MiB
Duration : 21 s 0 ms
Overall bit rate : 1 692 kb/s
Writing application : Lavf58.45.100

Video
ID : 1
Format : AVC
Format/Info : Advanced Video Codec
Format profile : High@L4.2
Format settings : 4 Ref Frames
Format settings, CABAC : No
Format settings, Reference : 4 frames
Codec ID : avc1
Codec ID/Info : Advanced Video Coding
Duration : 21 s 0 ms
Bit rate : 1 686 kb/s
Width : 1 920 pixels
Height : 1 080 pixels
Display aspect ratio : 16:9
Frame rate mode : Constant
Frame rate : 60.000 FPS
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 8 bits
Scan type : Progressive
Bits/(Pixel*Frame) : 0.014
Stream size : 4.22 MiB (100%)
Writing library : x264 core 161 r3027 4121277
Encoding settings : cabac=0 / ref=4 / deblock=0:0:0 / analyse=0x3:0x133 / me=umh / subme=10 / psy=1 / psy_rd=1.00:0.00 / mixed_ref=1 / me_range=24 / chroma_me=1 / trellis=2 / 8x8dct=1 / cqm=0 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=-2 / threads=34 / lookahead_threads=5 / sliced_threads=0 / nr=0 / decimate=1 / interlaced=0 / bluray_compat=0 / constrained_intra=0 / bframes=8 / b_pyramid=2 / b_adapt=2 / b_bias=0 / direct=3 / weightb=0 / open_gop=0 / weightp=0 / keyint=250 / keyint_min=25 / scenecut=40 / intra_refresh=0 / rc_lookahead=60 / rc=crf / mbtree=1 / crf=10.0 / qcomp=0.60 / qpmin=0 / qpmax=69 / qpstep=4 / ip_ratio=1.40 / aq=1:1.00
Codec configuration box : avcC

(No audio track)

All other video files tested with MRSS exhibit the same stutter. When this file is loaded directly onto the BrightSign via BrightAuthor the playback is perfectly looped and gapless.

My best guess is that something with BrightAuthor's dynamic video playback doesn't cache the current video plane instance when looping and is creating/destroying playback instances.

Linked here is an example project which exhibits this behavior on a BrightSign HD224.

Any suggestions would be appreciated!

4 comments

  • 1
    Avatar
    Bright Scripters

    Model and encoding parameters affects seamless looping quailty

    See this thread, and look for ffmpeg related posts.

    https://brightsign.zendesk.com/hc/en-us/articles/218066567-Seamless-video-playback

     

    Choosing the stitching point in the video based on motion in the content should also be considered.

  • 0
    Avatar
    Joseph White

    The non-answer posted above is discouraging. I'm running across the same thing. No idea why the media refuses to play seamlessly in a medialist but works perfectly when directly loaded.

    Did you ever figure this out? 

  • 0
    Avatar
    Matthew Conto

    Video encoding ended up having nothing to do with this as the MRSS playback mode simply doesn't appear to preload videos in its playlist, leading to a multi-frame stutter.

    Probably not the answer you're looking for, but we ended up building our own in-house system serialize BrightSign-compatible BrightAuthor packages in python that behaved how we wanted with proper preloading. If you're looking into that solution, BrightSign used to freely publish the Typescript definitions for their JSON-based presentation files, but they stopped publicly listing it. You can find some copies on GitHub https://github.com/search?q=%40module+Core%3Aplayer+&type=code

  • 0
    Avatar
    Brandon

    As Matthew noted, the ___ List and OnDemand/PlayFile states play entries individually, so there's no way to achieve seamless looping, even with a single item.

    You'd have to use a plugin or HTML/JavaScript-based playback to load the single item in the player set to loop - then if it's encoded in a compatible manner, it will seamlessly loop.

    _________________________________________________________________________
    Friendly reminder, the community forum is intended for user-to-user discussion.  It is not regularly monitored. For troubleshooting problems and to ensure a timely answer from a BrightSign representative, please submit a support ticket

Please sign in to leave a comment.