It’s all about the ARMs, baby.
I bought several common Linux Small Board Computers (SBCs) online and immediately threw them into deep water by testing their video transcoding performance. x86 architectures are far better known for video encoding/decoding. However these small SoCs are still worth comparing side by side.
My resulting spreadsheet with all the answers:
TL;DR - You get what you pay for. Of the 5 boards I tested, the video performance scaled with price.
I’m not going to pretend to know much about these boards, the Linux kernels, or the intricacies of video transcoding libraries. I complied this list for personal reasons and installed all the software in a relatively naive way. I’m sure there are ways to squeeze more performance out of these boards - however I’m really only interested in how they compare to each other.
Here are the contenders, ordered by their price:
- Raspberry Pi Zero W
- Banana Pi Zero M2
- Raspberry Pi 3 B+
- RockPro64 4GB
I had also bought an Orange Pi PC and Orange Pi Zero, but the former arrived on my doorstep as dead as the doorknob above it. The Orange Pi Zero booted fine, but I wasn’t able for the life of me to install Cedrus for hardware acceleration (more on this later). I’m leaving both of them out of the results, as more of a “TBD”.
The two points of interest are:
- Raw synthetic CPU benchmarks
- FFMPEG x264 Transcoding
The first can be (and has been) reproduced by others fairly easily with the tool sysbench. Give it a shot if you have a board lying around:
Replace [CORES] with the number of processing cores your computer has. This gave predictable results from board to board.
The more nebulous, and consequently interesting test is the performance in transcoding a video to x264. Many of the boards have hardware available to accelerate the transcoding process. Several did not. I also tested the software transcoding performance on the boards worth bothering with, but as I mentioned these poor ARM CPUs tend to drown with this particular task.
I did not track file size of the transcoded output, since several factors (like bitrate/quality ratio of the codec) would affect that and would make for unfair and tedious testing.
What I wanted out of this was the time to convert this video into something resembling original quality.
The ODROID-XU4 and Raspberry Pi 3 B+ came out swinging with better than real-time hardware transcoding. The codec on the ODROID was not only 20% faster, it also took far less CPU resources in doing so. Even less so when you consider it has twice the core count of the Pi.
Although still slower than real time the Banana Pi Zero M2 was more than 3x faster than its competitor, the Raspberry Pi Zero. I don’t know if this is due to the beefier quad-core processor or the optimizations of cedrus264 over omx. Probably both.
I really wanted to be able to use the RockPro64, but FFMpeg hasn’t released any encoding support for the RK3328.
Similarly, it was seemingly impossible to install the hardware codec Cedrus on the Orange Pi Zero. Despite trying 3 different forks all claiming to support the chip I am still stumped.
Software transcoding was generally a waste of time on all of these boards.
Synthetic CPU Loads
The board’s synthetic CPU test killed it however, about 70% faster than the XU4. Otherwise, the results stack up as you might expect from the price of each SBC.
Personally, I’m most impressed by the ODROID XU4. It ran Linux and Android flawlessly, has decent IO and EMMC support, and great performance for a SBC.
These amateur tests lead me to believe that an organization which not only produces great hardware, but is supported by a community of software developers to enrich it will be hard to beat. I have a deep appreciation for the hard work put in by Hardkernel (and the people working with them) in making their products actually usable.
Despite some boards having hardware that would put some current-gen computers to shame, other boards less endowed could keep pace because of their optimizations.