I don't know how build-in mpv in Desktop Armbian behave. But i am using my own built of mpv and it play h265 video fine. I tried several videos, including 4k resolution and they all played with very low CPU usage. OPI PC is great device for such purpose, fueled by Armbian, of course . I don't know if you want to try this, but here are the basic steps i think should be enough to build it yourself too. Some of this may be redundant, but this way works for me.
First the newest version of libvdpau-sunxi is needed for h265 and especially for subtitles support. As i don't know what is in Desktop Armbian, i will post this too. First make some temporary directory, it's "t". located in ~home in my example. We need livdpau>=1.1, so:
cd t
wget http://ftp.de.debian.org/debian/pool/main/libv/libvdpau/libvdpau1_1.1.1-3_armhf.deb
wget http://ftp.de.debian.org/debian/pool/main/libv/libvdpau/libvdpau-dev_1.1.1-3_armhf.deb
wget http://ftp.de.debian.org/debian/pool/main/v/vdpauinfo/vdpauinfo_1.0-1+b1_armhf.deb
sudo dpkg -i libvdpau1_1.1.1-3_armhf.deb
sudo dpkg -i libvdpau-dev_1.1.1-3_armhf.deb
sudo dpkg -i vdpauinfo_1.0-1+b1_armhf.deb
Then libvdpau-sunxi:
git clone https://github.com/linux-sunxi/libcedrus.git
cd libcedrus
make
sudo make install
cd ..
wget http://cairographics.org/releases/pixman-0.34.0.tar.gz
tar -xzvf pixman-0.34.0.tar.gz
cd pixman-0.34.0
./configure
make -j4
sudo make install
cd ..
git clone https://github.com/linux-sunxi/libvdpau-sunxi.git
cd libvdpau-sunxi
make
sudo make install
We need to "export VDPAU_DRIVER=sunxi", "export VDPAU_DISABLE_G2D=1" and for subtitles support "export VDPAU_OSD=1". As i had a lot of troubles with this and never new for sure where is the correct place for this, i do it in several places. So put this:
export VDPAU_DRIVER=sunxi
export VDPAU_OSD=1
export VDPAU_DISABLE_G2D=1
in /etc/environment , in /home/"user"/.bashrc and in /etc/X11/Xsession.d/ create file named "90environment" (sudo nano /etc/X11/Xsession.d/90environment) and put the lines there too. This is all done for libvdpau-sunxi.
For mpv, first get dependencies:
sudo apt-get update
sudo apt-get build-dep libav
sudo apt-get build-dep mpv
If you want youtube support, install youtube-dl:
sudo curl https://yt-dl.org/downloads/2016.02.27/youtube-dl -o /usr/local/bin/youtube-dl
sudo chmod a+rx /usr/local/bin/youtube-dl
Install x264:
git clone git://git.videolan.org/x264.git
cd x264
./configure --enable-static --enable-shared
make -j4
sudo make install
sudo ldconfig
cd ..
and get x265:
sudo apt-get install mercurial cmake cmake-curses-gui build-essential
hg clone https://bitbucket.org/multicoreware/x265
There is a bug here and we can't build shared libraries, so before compilation open this file x265/source/common/primitives.cpp (sudo nano x265/source/common/primitives.cpp) and at the end remove the lines i marked with "-" in front:
- #if ENABLE_ASSEMBLY && X265_ARCH_ARM == 0
void PFX(cpu_neon_test)(void) {}
int PFX(cpu_fast_neon_mrc_test)(void) { return 0; }
- #endif
}
#endif
now compile and install x265:
cd x265/build/linux
./make-Makefiles.bash
make -j4
sudo make install
sudo ldconfig
cd ~/t
I used to install some other codecs, but this should be enough for most people. Now the mpv itself:
sudo apt-get install git devscripts equivs
git clone https://github.com/mpv-player/mpv-build.git
cd mpv-build
./update
rm -f mpv-build-deps_*_*.deb
mk-build-deps -s sudo -i
.deb part is to get some more dependencies. This may not be necessary, but i remember i had build errors because of this before.
Put some options for ffmpeg:
echo --enable-nonfree >> ffmpeg_options
echo --enable-gpl >> ffmpeg_options
echo --enable-version3 >> ffmpeg_options
echo --enable-vdpau >> ffmpeg_options
echo --enable-libass >> ffmpeg_options
echo --enable-libfdk-aac >> ffmpeg_options
echo --enable-libfreetype >> ffmpeg_options
echo --enable-libmp3lame >> ffmpeg_options
echo --enable-libopus >> ffmpeg_options
echo --enable-libtheora >> ffmpeg_options
echo --enable-libvorbis >> ffmpeg_options
echo --enable-libvpx >> ffmpeg_options
echo --enable-libpulse >> ffmpeg_options
echo --enable-libv4l2 >> ffmpeg_options
echo --enable-libx264 >> ffmpeg_options
echo --enable-libx265 >> ffmpeg_options
echo --enable-libmpv-shared > mpv_options
If you miss some of this codecs just skip the line, or remove it later from ~/t/mpv-build/ffmpeg_options file. Finish building and installation:
./rebuild -j4
sudo ./install
That's all
Optionally, you can add your config in file, so you don't write it every time - sudo nano /usr/local/etc/mpv/mpv.conf :
vo=vdpau
hwdec=vdpau
framedrop=vo
hwdec-codecs=all
ao=alsa:device=[hw:1,0]
slang=bg,en,
fs=yes
"slag" line is for subtitles, you can replace "bg" with your language, or remove it at all.
The reason is simple. If you insert a card when the board boots the H3 will always search for a bootloader there. If you insert the card later it won't be recognized (which might be able to be fixed by playing around with /proc/driver/sunxi-mmc.x/insert).
So to boot with inserted SD card the bootloader has to remain there and point to the rootfs on the eMMC (the numbering of devices will then also change!). This can be done by using our nand-sata-install.sh script and then not wiping out the SD card but keep the 1st MB intact and only adjust the partition table so that the SD card can be used for data.