mplayer是一款开源多媒体播放器,以gnu通用公共许可证发布。它资源占用率低,无论是音频还是视频方面,支持的格式相当全面,支持的输出设备也很多,可以在各种主流操作系统中使用。

1. alsa

Advanced LinuxSound Architecture简称alsa,用于替代过时的Open Sound System(OSS),是linux下主流音频体系架构。

alsa对底层驱动以及上层应用开发进行了分层,在内核设备驱动层,需要内核提供相应的alsa-driver,在内核编译配置Device Drivers >Sound card support > Advanced Linux Sound Architecture > ALSA for SoCaudio support > ASoC support for SUNXI中确认alsa-driver的支持。

06_移植mplayer - 图1

alsa对上层应用开发提供了用户空间的alsa-lib,它为应用程序提供了统一的api接口,隐藏了驱动层的实现细节,简化了应用程序的实现难度。音频相关的应用可以通过alsa-lib实现对alsa-driver的访问,此处移植mplayer需要用到alsa-lib的支持。

alsa为了设置、测试声卡,如音量、通路的设置等等,提供了alsa-utils工具包。可以通过源码包进行交叉编译生成平台工具,在ubuntu下,还可以直接通过apt-get安装。在宿主机上安装qume-user-static,实现arm架构的仿真模拟,切换到板端sd卡ubuntu根文件系统目录,通过chroot切换到arm模拟器中,实现对根文件系统的编辑。

06_移植mplayer - 图2

用apt-get install alsa-base命令安装相应的alsa驱动配置文件以及alsa-utils工具包。alsa-utils包含了alsactl、alsamixer、aplay等等工具,alsa声卡在系统启动后,处于默认的复位状态,需要通过alsamixer命令进行相应的配置。

06_移植mplayer - 图3

配置好声卡后,可以通过aplay播放wav音频文件,speaker-test测试alsa是否已经正常工作。

06_移植mplayer - 图4

通过alsactl store命令保存当前的声卡配置,在/var/lib/alsa/asound.state文件中有相应的alsamixer配置信息。

2. mplayer编译

从mplayer官网下载最新的mplayer1.3.0源码,可以在源码包中查看README文件等,确定编译、安装的步骤。

在编译之前,需要设置相应的交叉编译工具链环境,在/etc/profile中加入工具链的路径。

export PATH=/usr/lichee/brandy/toolchain/gcc-aarch64/bin:$PATH

mplayer需要zlib的支持,先下载zlib,并编译。

CC=aarch64-linux-gnu-gcc ./configure --prefix=./build –static

06_移植mplayer - 图5

make

make install

mplayer需要alsa-lib实现对alsa声音的支持,下载alsa-lib,并编译。

./configure --host=aarch64-linux-gnu --enable-static--disable-shared --disable-python

06_移植mplayer - 图6

make

make install DESTDIR=/usr/alsa-lib

alsa-lib默认安装在/usr目录,在make install指定DESTDIR使之安装到/usr/alsa-lib目录,避免安装在宿主机/usr目录中。

在mplayer源码目录可以通过./configure –h来查看配置选项。

06_移植mplayer - 图7

configure中指定–enable-alsa支持alsa,–disable-ossaudio禁用过时的oss,加入zlib、alsa-lib的头文件、库路径。

./configure--cc=aarch64-linux-gnu-gcc --host-cc=gcc --target=aarch64-linux-gnu --disable-ossaudio --enable-alsa--prefix=./build --extra-cflags="-I/usr/zlib-1.2.11/build/include/-I/usr/alsa-lib/usr/include/ -DHAVE_ARMV8=0" --extra-ldflags="-L/usr/zlib-1.2.11/build/lib/ -lz -L /usr/alsa-lib/usr/lib/ -lasound"

06_移植mplayer - 图8

make

make install

make install会提示strip错误:

06_移植mplayer - 图9

修改MPlayer-1.3.0源码目录下的Makefile如下:

06_移植mplayer - 图10

编译成功后,会在./build/bin目录中生成mplayer可执行文件,把mplayer拷贝到板端/usr/local/bin目录。

3. 测试

mplayer是一款音视频播放器,能支持播放大部分的音频、视频格式。由于NanoPi-NEO2没有显示输出设备,此处只测试音频的播放。测试mp3音频文件Dream it possible.mp3放在板端/usr目录,执行mplayer命令播放。

mplayer -af format=s16le /usr/Dream\ it\ possible.mp3

06_移植mplayer - 图11

可以通过mplayer把mp3转换成wav格式

mplayer -srate 8000 -ao pcm:fast:file="/usr/Dream itpossible.wav" "/usr/Dream it possible.mp3"

06_移植mplayer - 图12

播放wav音频文件

06_移植mplayer - 图13

4. 附录

编译好的mplayer,适用于arm64架构的linux系统。
源码:http://pan.baidu.com/s/1nv6yxZF