Banana PI M5 - Android TV - Jellyfin/Plex/VLC laggy playback

I’m using a Banana Pi M5 as a TV Box using the LineageOS Android TV build that can be obtained from the official install guide (actually the first nightly they list for November, newer ones have a regression in which the ethernet port doesn’t really connect).

Everything seems to work quite well, the experience using most of the Android TV apps isn’t that much different than using a Google branded device (plus, the device is fully de-googled, which makes it better). But I said most, and this is because there are a handful that don’t really work and that bugs me, a lot.

The ones that do not work correctly are Jellyfin, Plex and VLC, in fact they show exactly the same kind of behaviour: playback feels sticky with very frequent lag, what looks like a transcoding issue. However I know transcoding server side works fine, if I use Jellyfin’s web interface then the playback is smooth (after some buffering, but smooth after all). I in fact tested this in-device using the TVBro web browser, I suspect others will work fine too.

Wondering if anyone has seen something similar or if they have successfully built a 4K-capable TV Box using this device.

Found a solution for this so answering myself in case someone else comes across this and finds this (as unlikely as it sounds). What exactly happens here is that the BPI-M5 is not equiped with powerful enough hardware to do HEVC decoding 8-bit and both Jellyfin and VLC is what they were trying to do, which results in choppy playback (it’s slightly better with VLC but not good enough though).

Summarizing here the steps to make this work (without actually going and buying a better device):

  • Install mpv-android via F-droid
  • Configure the Jellyfin AndroidTV app to use an external video player (it’s in the advanced playback settings)
  • Go and play any movie that usually shows issues during playback, it will ask which of the available installed video players to use. Now choose mpv-android (you can mark as to always use that one and stop asking in the future)
  • Video playback will start and should still be a little choppy but not much, it’s almost smooth (but still unwatchable)
  • Use your remote controller or mouse to navigate the mpv context menu, you should find a button that shows “HW”, meaning it is using hardware decoding. Change it to “SW” (software decoding)
  • Enjoy a now totally smooth playback

This obviously isn’t the best way to experience these kind of movies, at some point in the future I’ll replace this unit with more powerful hardware such that I can have the full experience (most likely a rockchip-based one once the kernel builds are stable) but as a stop-gap solution it works great.