Jump to content

Poor playback performance on Roku apps


Go to solution Solved by Vaughn,

Recommended Posts

Posted

I’m seeing a very similar issue with Roku SG 4.1.70 on a local wired connection. Playback hangs at 13% for about two minutes, then plays normally. Pause/resume works, but completely stopping and starting playback triggers the delay again.
The server dashboard shows MKV at 11 Mbps, 1080p H.264 video and EAC3 5.1 audio, all Direct Play. The dashboard timer advances during the Roku’s loading screen; when video finally appears, the dashboard returns to the starting position.
PC, tablet and remote users have no issues. I have tried a Roku restart, unplugging the Roku, reinstalling Emby, changing playback quality and rebooting the router, without improvement.

Posted

I will build a log, etc., and send it off tomorrow however I’m going to bed but I’ve done some testing tonight and I would like to send you the information that I have found so farFurther testing tonight:
•    The affected Roku is model 4630X, running Emby 4.1.70.
•    An affected MKV shows approximately 11.49 Mbps, 1080p H.264 video and EAC3 5.1 audio. The stream, video and audio all show Direct Play before selecting playback correction.
•    Once playback finally starts, it runs normally. Pausing/resuming works, but completely stopping and starting again repeats the long startup delay.
•    After playback had started, I selected “Attempt playback correction.” It switched immediately from MKV to HLS without another loading delay. The video and audio still showed Direct Play, so neither was being re-encoded.
•    The “Recovering from playback error” message appeared only after I manually selected playback correction. Please do not interpret that screenshot as evidence of automatic error recovery during the initial delay.
•    Starting the title again returned it to MKV Direct Play; the HLS playback method did not carry over.
•    I cannot access playback correction while the initial loading spinner is displayed, so I have not been able to test whether starting with HLS would avoid the delay.
•    A different MP4 started almost immediately, with only a small delay. It was also 1080p H.264, but approximately 3.86 Mbps with AAC stereo audio, all Direct Play. This was not the same content remuxed, so container, bitrate and audio format all differed.
•    In general, shorter/lower-quality titles start faster, while longer, higher-quality HD titles take much longer.
•    This setup previously worked normally. I noticed the problem around the time the Roku Emby app updated a couple of days ago, although I do not know which component caused it. Other local clients and remote users remain unaffected.
•    I have not yet tested a remuxed copy of an affected MKV.
Could you advise which Roku/server logs you need to identify what is happening during the initial Direct Play loading delay, and whether there is a supported way to test HLS/remux delivery from the beginning of a fresh playback session?

Posted

One additional comparison: casting from the Emby app on my iPad to my smart TV worked perfectly and playback began immediately, bypassing the Roku. This further isolates the problem to the Roku playback path. I have not verified whether the TV used the same playback method or codecs.

Posted

Hi.  Your situation definitely sounds like a header or metadata issue in the file.  It sounds like the Roku is having to read in the entire file to get to the information it needs to start playback.

Can you try running one of these problem files through MKVToolNix to see if it fixes it?

Posted

I will try that. However, these files and this setup has been in place for a long time and this is never happened. Why would this suddenly be happening that it can’t read the header or that there’s a problem with a MKV files?

pwhodges
Posted

Roku updates can break things, as well as Emby...

Paul

Posted

I tried MKVToolNix and the issue remains

Posted (edited)

Are you using the Playback Reporting plugin?

You also have errors in your log regarding access to some websites were 500.

Quote

2026-10-16 22:26:49.091 Info VideoService-0HNPBMMSSFL29:00000001: http/1.1 Response 206 to host9. Time: 69ms. GET http://192.168.50.191:8096/emby/videos/88889/original.mkv?DeviceId=326aa925-fcf1-53d4-b4b0-629dc4fcd571&MediaSourceId=mediasource_88889&PlaySessionId=f570b5a0c870412a99f1a6db9fb24a4f&api_key=x_secret4_x. Headers: Content-Type=video/x-matroska, Date=Sat, 17 Oct 2026 04:26:48 GMT, Server=UPnP/1.0 DLNADOC/1.50, Accept-Ranges=bytes, Cache-Control=private, no-transform, Content-Range=bytes 2919443052-2920302496/2920302497, ETag="093e7b577a998e6882397338bafcb0ee", Content-Length=859445, Cross-Origin-Resource-Policy=cross-origin, Private-Network-Access-Name=VBSERVER, Private-Network-Access-Id=bb04e70c5fb04fe19f9924c8bf0c13d9
2026-10-16 22:26:58.445 Error PortMapper: Error creating port map
    *** Error Report ***
    Version: 4.10.1.0
    Command line: C:\Users\vbeng\AppData\Roaming\Emby-Server\system\EmbyServer.dll
    Operating system: Microsoft Windows 10.0.26300
    OS/Process: x64/x64
    Framework: .NET 8.0.31
    Runtime: C:/Users/vbeng/AppData/Roaming/Emby-Server/system/System.Private.CoreLib.dll
    Processor count: 24
    Data path: C:\Users\vbeng\AppData\Roaming\Emby-Server\programdata
    Application path: C:\Users\vbeng\AppData\Roaming\Emby-Server\system
    MediaBrowser.Model.Net.HttpException: MediaBrowser.Model.Net.HttpException: No connection could be made because the target machine actively refused it. (192.168.50.1:40517)
     ---> System.Net.Http.HttpRequestException: No connection could be made because the target machine actively refused it. (192.168.50.1:40517)
     ---> System.Net.Sockets.SocketException (10061): No connection could be made because the target machine actively refused it.
       at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken)
       at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.System.Threading.Tasks.Sources.IValueTaskSource.GetResult(Int16 token)
       at System.Net.Sockets.Socket.<ConnectAsync>g__WaitForConnectWithCancellation|285_0(AwaitableSocketAsyncEventArgs saea, ValueTask connectTask, CancellationToken cancellationToken)
       at System.Net.Http.HttpConnectionPool.ConnectToTcpHostAsync(String host, Int32 port, HttpRequestMessage initialRequest, Boolean async, CancellationToken cancellationToken)
       --- End of inner exception stack trace ---
       at System.Net.Http.HttpConnectionPool.ConnectToTcpHostAsync(String host, Int32 port, HttpRequestMessage initialRequest, Boolean async, CancellationToken cancellationToken)
       at System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
       at System.Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
       at System.Net.Http.HttpConnectionPool.AddHttp11ConnectionAsync(QueueItem queueItem)
       at System.Threading.Tasks.TaskCompletionSourceWithCancellation`1.WaitWithCancellationAsync(CancellationToken cancellationToken)
       at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)
       at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
       at System.Net.Http.DecompressionHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
       at System.Net.Http.HttpClient.<SendAsync>g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)
       at Emby.Server.Implementations.HttpClientManager.CoreHttpClientManager.SendAsyncInternal(HttpRequestOptions options, String httpMethod)
       --- End of inner exception stack trace ---
       at Emby.Server.Implementations.HttpClientManager.CoreHttpClientManager.SendAsyncInternal(HttpRequestOptions options, String httpMethod)
       at Emby.Server.Implementations.HttpClientManager.BaseHttpClientManager.SendAsync(HttpRequestOptions options, String httpMethod)
       at Mono.Nat.Upnp.UpnpNatDevice.CreatePortMapInternal(Mapping mapping, CancellationToken cancellationToken)
       at Mono.Nat.Upnp.UpnpNatDevice.CreatePortMap(Mapping mapping, CancellationToken cancellationToken)
       at Emby.PortMapper.ExternalPortForwarding.CreateRules(INatDevice device, CancellationToken cancellationToken)
    Source: Emby.Server.Implementations
    TargetSite: Void MoveNext()
    InnerException: System.Net.Http.HttpRequestException: No connection could be made because the target machine actively refused it. (192.168.50.1:40517)
    Source: System.Net.Http
    TargetSite: Void MoveNext()
       at System.Net.Http.HttpConnectionPool.ConnectToTcpHostAsync(String host, Int32 port, HttpRequestMessage initialRequest, Boolean async, CancellationToken cancellationToken)
       at System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
       at System.Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
       at System.Net.Http.HttpConnectionPool.AddHttp11ConnectionAsync(QueueItem queueItem)
       at System.Threading.Tasks.TaskCompletionSourceWithCancellation`1.WaitWithCancellationAsync(CancellationToken cancellationToken)
       at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)
       at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
       at System.Net.Http.DecompressionHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
       at System.Net.Http.HttpClient.<SendAsync>g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)
       at Emby.Server.Implementations.HttpClientManager.CoreHttpClientManager.SendAsyncInternal(HttpRequestOptions options, String httpMethod)
    InnerException: System.Net.Sockets.SocketException: No connection could be made because the target machine actively refused it.
    Source: System.Net.Sockets
    TargetSite: Void ThrowException(System.Net.Sockets.SocketError, System.Threading.CancellationToken)
       at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken)
       at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.System.Threading.Tasks.Sources.IValueTaskSource.GetResult(Int16 token)
       at System.Net.Sockets.Socket.<ConnectAsync>g__WaitForConnectWithCancellation|285_0(AwaitableSocketAsyncEventArgs saea, ValueTask connectTask, CancellationToken cancellationToken)
       at System.Net.Http.HttpConnectionPool.ConnectToTcpHostAsync(String host, Int32 port, HttpRequestMessage initialRequest, Boolean async, CancellationToken cancellationToken)
    
2026-10-16 22:27:49.065 Info SessionManager: PlaySession f570b5a0c870412a99f1a6db9fb24a4f has gone idle while playing
2026-10-16 22:27:49.065 Info SessionManager: Playback stopped reported by app Roku SG 4.1.70 on Roku Front Room playing Shrinking - S3, Ep10 - The Bodyguard of Sadness. Position: 856000 ms. PlaySessionId: f570b5a0c870412a99f1a6db9fb24a4f. IsPaused: False
2026-10-16 22:27:49.066 Info SessionManager: Removed playSession f570b5a0c870412a99f1a6db9fb24a4f from session 9b977f8d2822d8e81d1fa2e10a178db9
2026-10-16 22:27:49.066 Info PlaybackReporting - EventMonitorEntryPoint: _sessionManager_PlaybackStop : Entered
2026-10-16 22:27:49.066 Info PlaybackReporting - EventMonitorEntryPoint: Saving final duration for Item : 326aa925-fcf1-53d4-b4b0-629dc4fcd571|f76428e94dd544559509aa1ceb566fa4|88889|DirectStream
2026-10-16 22:27:49.084 Info PlaybackReporting - EventMonitorEntryPoint: Removing Old Key from playback_trackers : 326aa925-fcf1-53d4-b4b0-629dc4fcd571|f76428e94dd544559509aa1ceb566fa4|88889|DirectStream

There is also this where your server actively rejected sending a reply to the Roku. For whatever reason.

If you uninstall the playback reporting plugin does the problem persist? Maybe it is related to the plugin.

Also, were any ffmpeg logs created in the transcode directory? Those would help explain why it is taking so long if any were created.

The part where you say "it takes 2 minutes before the playback begins" sounds like the drive itself might be nearing end of life. Can you run CrystalDiskInfo and check that drive? CrystalDiskInfo is an app to check the SmartData and health status of that drive. It will notice critical issues before you might suspect them. If that is what is happening using the drive more can compromise data. You want to remove that drive from operation and only connect it again to copy data from it. That is if it is compromised and CrystalDiskInfo will show if it is still good or not.

You can share the CystalDiskInfo to show its good then a few ffmpeg logs and we should be able to see what is causing the slowdown. Thanks.

Edited by speechles
Posted

I am using plaback reporting.   I uninstalled it and restarted the server.   No Change.  Leaving it unistalled for now.   As to my disks, I guarantee they are fine.   As I reported the same file plays fine and fast on all other devices, IOS, Android, Fireticks etc.   Its only the ROKU where this happens.  If there was a disk issue it would happen on all devices.   Theses same files played fine three days ago.  I am not 100% sure but believe its since the last Emby app update on Roku .   It direct plays and does not create file but found one from last nights tries but when I playe d it this morning no ffmpeg logs were created see attached,

ffmpeg-directstream-5eac141e-bbc3-49ed-b4a6-96b3e59a5322_1.txt

Neminem
Posted

Hmm this file has 41 subtitle embedded.

Try removing the 1's you don't need.

Posted
12 minutes ago, Neminem said:

Hmm this file has 41 subtitle embedded.

Try removing the 1's you don't need.

Hey Neminem!  Thanks, this is the first sign of light.   I removed all subtitles and it played normally.    Now........   Why did this become an issue suddnely?   A subtitle add in?   I do not want to remux my llibrary.  Ideas?

Posted

I still lean towards the rrecent Ronku Emby app update as the reason this is happening.  Something withthe handling of subtitles has had a bug introduced as all other device play fine..

Posted
1 hour ago, Vaughn said:

I still lean towards the rrecent Ronku Emby app update as the reason this is happening.  Something withthe handling of subtitles has had a bug introduced as all other device play fine..

Hi.  The app doesn't control any part of the process that is hanging up for you.  It is the player loading the item. 

3 hours ago, Vaughn said:

I tried MKVToolNix and the issue remains

Exactly what did you do?

Your process of removing the subtitles would have also accomplished the task I was after which was re-constructing the MKV with proper header and meta information.  So, it could just be that.  However, I have seen some players choke on items with that many embedded subtitles.

  • Agree 1
Neminem
Posted

Even removing 1 of the subs would have resulted in a remux and made the difference.

Or any other remux maight have done it.

But I have seen Roku devices choke on the sheer amount of streams embedded.

Posted

I understand that the header and subtitles are causing issues.   But the only thing I see that changed in the time frame that the issue started was a new Emby app on Roku.   I do not insist that this is the cause.   But in summary, same emby server no changes, same roku that has worked for a long time but an app update.    The same files ran perfect in the past.   So even if its a header issue etc.   these are not new files,  the same files worked before and have not been messed with.   No changes to settings on roku or server.    Remuxing my library is not a solution.   Btw thanks so much for all your ideas.    I appreciate it.    I would not have gotten thus far without your help.

pwhodges
Posted

Most Roku updates are invisible unless you look for them, so that could have happened.

Or maybe the latest Emby is letting the Roku direct play, hence showing the problem, when previously it was transcoding?  That would mean an "improvement" for most is a problem for you.

Paul

Posted (edited)

Your Roku firmware has updated if the Emby app updated. You cannot avoid the Roku firmware update. When it is ready it forces it if you try to avoid it. In order for any apps to get updated the Roku firmware update will have to happen first. It will tell you sometimes ahead of time, that you must perform the software update before you can update any applications. Like do this or just use the apps you have. But lately they just seem to be pushing updates to try to get everyone up to firmware 16.x. 

Those subtitles also appear to contain Chinese.

21:49:33.502   Stream #0:43(chi): Subtitle: subrip
21:49:33.502     Metadata:
21:49:33.502       title           : 中文(简体)

But the title isn't rendering in UTF-8 and is in some ISO format. Maybe these multi-byte subtitles are causing an issue when direct playing when they aren't encoded correctly?

Edited by speechles
Posted

So i am at work around stage.   I have found if i force encoding on the roku by lowering the quality below natural bitrate of the file, it plays properly but it obviously lowers the quality.      Work around #2.  I have a smart tv (android) that plays the files.  fine.    However without boring you the tv does not dance nicely with my reciever etc when its the source.     But may try one of these for a while and hope the next upgrades fix the issue.    Still,  if there is a solution someone has , still very interested.     

Posted

can you try using mkvtoolnix to repackage it into a new mkv? does the problem happen with that version?

Posted

It does remove the issue but i have a large library to remux.   Is there a ezsy way to fo this?  Just so frustrating as this has never been an issue.

Posted

How did you do the remux, using mkvtoolnix ?

  • Solution
Posted

So today, I thought I would get out my travel Roku and try it on my network. It worked just fine. So obviously the issue is that particular Roku because my android smart TV worked fine and this other Roku worked fine. People outside my network are working fine so I decided to factory reset my Roku premium plus player. That did the trick and everything is working as it was before. In case anyone’s wondering, I had done a cash clearing and done a full power off left it off for a while and restarted it I had checked for updates, etc. and none of that worked. I had to do a factory reset and now everything was working as it was before I consider this closed. 

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...