Has anyone cracked the nut in terms of HLS syncing so that multiple Rokus are playing an HLS live stream in sync (within 200ms)? I’ve tried micro pausing and a few other things, but haven’t got it smooth or correct. I can get within 1 second easily, but I need audio level syncing (no echoes). I’ve solved this on the other platforms by changing the playback speed ever so slightly until the players get in alignment, but apparently, playback speed is not a thing here. Yes, sub 200ms is required for audio, kind of like how wireless speakers behave, you should be able to have 2 in the same room and they blend like stereo, not like a karaoke reverb.
There is an undocumented playbackSpeed property of video nodes, but I’m not sure that it works on all models and I haven’t tried it on anything but MP4s.
I saw that in another thread here, but after a few minutes of messing with it, I gave up on it pretty quickly.
a) If it’s undocumented, that’s for a reason
b) When I tried it, it didn’t work in my testing; likely as you said, it’s not going to work for segmented live streams.
I’m trying a few hacks right now, but have mostly lost hope, which sucks because I will have to pivot to custom decoders. Rokus are so ubiquitous now, it would have been nice to use them for my use case.
The bright side (no pun intended) is that I can transition to SRT/H265 or maybe even WebRTC to go after the grail of <500ms latency if I step off the Roku OS platform.
Two things I need to add:
- I forgot, I have tried it with HLS and it does work although technically what I was watching was more of a VOD that happened to use segmented HLS and wasn’t “live”. It would be interesting to try it on a live stream, but I don’t see why it wouldn’t work.
- I think you have to pause and resume playback before it takes effect.
It may not help in your situation, but I just thought I’d mention that the property has been there for a while. I haven’t received the latest 15.x update, but it worked on the last 14.x update on multiple devices (some work better than others). As you mentioned, if it’s undocumented, it’s probably not something to be used in a production app. I use it all the time to watch sped up videos from my security cameras.
Yeah, Roku devices are pretty limited. If your use case doesn’t match Netflix, you may be out of luck and even then, the big boys seem to have access to things that we don’t.
@renojim Hmm, that’s interesting, by live I just mean I’m runing segments out of FFMpeg, which is encoding HDMI.
Right now I’m trying a segment approach, like launch and wait for segment xyz.
So here is my out
#EXTM3U #EXT-X-VERSION:6 #EXT-X-STREAM-INF:BANDWIDTH=6780400,RESOLUTION=1920x1080,CODECS=“avc1.42c028,mp4a.40.2” playlist.m3u8
#EXTM3U #EXT-X-VERSION:6 #EXT-X-ALLOW-CACHE:NO #EXT-X-TARGETDURATION:1 #EXT-X-MEDIA-SEQUENCE:8915 #EXT-X-INDEPENDENT-SEGMENTS #EXTINF:1.000000, #EXT-X-PROGRAM-DATE-TIME:2025-10-25T16:09:01.736-0400 segment_8915.ts #EXTINF:1.000000, #EXT-X-PROGRAM-DATE-TIME:2025-10-25T16:09:02.736-0400 segment_8916.ts #EXTINF:1.000000, #EXT-X-PROGRAM-DATE-TIME:2025-10-25T16:09:03.736-0400 segment_8917.ts
I have one Roku that no matter what, always seems to be about 1 second ahead of the others, it’s maddening.
I appreciate you chiming in here.
Hey Roku… can we get this play speed better support? ![]()
I’ve had some mixed results with playbackSpeed. When you say you have to pause and resume, do you mean every time you apply a speed change?
By mixed results, I mean if I go drastic, I can see a difference so “something” is happening, meaning the command does exist, but I cant get my streams to sync yet, getting super close though. Got any examples?
v.playbackSpeed = 0.85
sleep(500)
' ----------- or
v.control = "pause"
v.playbackSpeed = 0.85
sleep(500)
v.control = "resume"
' ----------- or
v.control = "pause"
v.playbackSpeed = 0.85
v.control = "resume"
I set the playbackSpeed and then immediately do a pause and resume (no sleep). For my use case, I use the arrow buttons while the video is playing and make the change in an onKeyPress routine. Right arrow speeds it up by 0.1 per click if the current speed is < 1.0 and by 0.5 if it’s >= 1.0. Left arrow slows it down. I haven’t tested to see what kind of granularity I can get out of it (0.1 is the smallest change I’ve tried) and I wouldn’t be surprised if it depended on the device. I also overlay the speed in a label over the video so I can see where its at.
For anyone getting here with the same issue or question, I never was able to get sync to work correctly, not even close. The best I could do was reduce the HLS parameters down to the minimum the Roku would play and hope for a close sync. 2 segments, 3 sec duration will get you around 8 seconds of latency and within 6 seconds of sync (in theory).
