I have beat my head against the wall on the Raspberry pi forums for hours on this, but I am shocked to find nothing that makes sense.
I KNOW that in Stretch the Raspberry Pi 3B+ is COMPLETELY capable of playing 1080p mp4 with ZERO issues on VLC, because I used it as my media machine for YEARS. No desktop slowdown, no UI issues - just plays the video like I was opening it on a modern multi-core machine. The microSD card that was still in there when I pulled it out still DOES function that way, although it’s obviously now an unupdatable security nightmare…
But it seems that every new Raspbian OS update after that… bullseye, trixie… all play video like they’re broken lemons. Playing through VLC is still PASSABLE with massive frame drops and awful UI lag, but playing video in a browser just displays solid pink colors, despite hardware acceleration being enabled.
What changed? Is it just the Wayland switch? Is it just impossible to use these things to their full potential anymore? I hate to throw out perfectly good old hardware that clearly CAN perform my use case, because the OS broke compatibility with it.
Can anybody explain what happened, or if it’s fixable?


Nice thought, but it’s exactly the same files. 1080p mp4s. I’ve tried them on both installations. Simply, they play without even the tiniest hint of a hitch on Stretch, and on Bullseye it’s like there’s no hardware acceleration at all.
Edit: For what it’s worth, it’s not only the 1080p mp4s. 720p mp4s are much the same. Smooth as butter on Stretch, barely chugging out on Bullseye.
This may seem pedantic, but mp4 is a container that holds the video and audio streams. The actual video stream can be encoded im various formats (mpeg 2, h264, h265, etc). If you open vlc and look at the codec menu, find the video stream and report back the encoding type it may provide some insight. It could be that there’s a performance regression with a particular decoder or maybe they changed decoding library or any number or things. Sorry it’s a bit vague, but what I’m getting at is if we know the actual video encoding of the file it may help to track down the decoding performance issue.
If it does turn out to be mpeg2, it could be that something changed about how the video decoding drivers (kernel module) are loaded. Like maybe they stopped including them by default or are no longer being used for some reason.
If it’s not mpeg 2, then could look in to decoder specific changes between distro versions or hardware support related changes (like maybe a kernel module needs an extra config passed to it to get better performance on 3b), or even decoder library config may be possible to tweak. Sometimes performance optimizations make things worse and the new default configs work better on newer hardware but worse for you.
In any case, I think knowing the specific video encodings would be helpful. I also just remembered that I had some performance issues on some files due to audio formats if I was having the Pi software decode vs connected to an external AV receiver that could decode the bit streamed audio data.
Not pedantic at all! You’re right, of course.
The exact encoding is:
H264 - MPEG-4 AVC (part 10) (avc1)