创客神器NanoPi
直播中

刘天

14年用户 132经验值
擅长:微处理器/微控制 数字及可编程逻辑 模拟与电源 基础元器件 微处理器/微控制 数字及可编程逻辑 模拟与电源 基础元器件 微处理器/微控制 数字及可编程逻辑 模拟与电源 基础元器件 微处理器/微控制 数字及可编程逻辑 模拟与电源 基础元器件 微处理器/微控制 数字及可编程逻辑 模拟与电源 基础元器件 微处理器/微控制 数字及可编程逻辑 模拟与电源 基础元器件 微处理器/微控制 数字及可编程逻辑 模拟与电源 基础元器件 微处理器/微控制 数字及可编程逻辑 模拟与电源 基础元器件 微处理器/微控制 数字及可编程逻辑 模拟与电源 基础元器件 微处理器/微控制 数字及可编程逻辑 模拟与电源 基础元器件 微处理器/微控制 数字及可编程逻辑 模拟与电源 基础元器件 微处理器/微控制 数字及可编程逻辑 模拟与电源 基础元器件 微处理器/微控制 数字及可编程逻辑 模拟与电源 基础元器件 微处理器/微控制 数字及可编程逻辑 模拟与电源 基础元器件 微处理器/微控制 数字及可编程逻辑 模拟与电源 基础元器件 微处理器/微控制 数字及可编程逻辑 模拟与电源 基础元器件
私信 关注
[经验]

【NanoPi NEO2试用体验】移植mplayer

本帖最后由 20083200056 于 2017-7-23 16:00 编辑

移植mplayer
象棋小子   1048272975
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的支持。

alsa对上层应用开发提供了用户空间的alsa-lib,它为应用程序提供了统一的api接口,隐藏了驱动层的实现细节,简化了应用程序的实现难度。音频相关的应用可以通过alsa-lib实现对alsa-driver的访问,此处移植mplayer需要用到alsa-lib的支持。
0.png
alsa为了设置、测试声卡,如音量、通路的设置等等,提供了alsa-utils工具包。可以通过源码包进行交叉编译生成平台工具,在ubuntu下,还可以直接通过apt-get安装。在宿主机上安装qume-user-static,实现ARM架构的仿真模拟,切换到板端sd卡ubuntu根文件系统目录,通过chroot切换到arm模拟器中,实现对根文件系统的编辑。
1.png

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

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

通过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
4.png

make
make install
mplayer需要alsa-lib实现对alsa声音的支持,下载alsa-lib,并编译。
./configure --host=aarch64-linux-gnu --enable-static--disable-shared --disable-python
5.png

make
make install DESTDIR=/usr/alsa-lib
alsa-lib默认安装在/usr目录,在make install指定DESTDIR使之安装到/usr/alsa-lib目录,避免安装在宿主机/usr目录中。
在mplayer源码目录可以通过./configure –h来查看配置选项。
6.png

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"
7.png

make
make install
make install会提示strip错误:
8.png

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

编译成功后,会在./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
10.png

可以通过mplayer把mp3转换成wav格式
mplayer -srate 8000 -ao pcm:fast:file="/usr/Dream itpossible.wav" "/usr/Dream it possible.mp3"
11.png

播放wav音频文件
12.png

4.  附录
编译好的mplayer,适用于arm64架构的linux系统。


回帖(1)

徐春华

2017-7-31 08:43:29
学习学习
举报

更多回帖

发帖
×
20
完善资料,
赚取积分