带音频播放的MPlayer播放器在ARM上的移植笔记

Posted hurryddd

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了带音频播放的MPlayer播放器在ARM上的移植笔记相关的知识,希望对你有一定的参考价值。

前言

mplayer想要播放带音频的视频文件,需要依赖alsa-lib和zlib,所以交叉编译mplayer前还需要先编译alsa-lib和zlib

一、alsa-lib

        alsa-lib 是 ALSA 提供的一套 Linux 下的 C 语言函数库,需要将 alsa-lib 移植到板卡上,这样基于 alsa-lib 编写的应用程序才能成功运行

        如果想不用mplayer,直接使用alsa测试音频,还需要移植 alsa-utils,alsa-utils 包含了一些用于测试、配置声卡的工具,譬如 aplay、arecord、alsactl、alsaloop、alsamixer、amixer 等,在开发板出厂系统上可以直接使用这些工具,这些应用程序也都是基于 alsa-lib 编写的。

aplay 是一个用于测试音频播放功能程序,可以使用 aplay 播放 wav 格式的音频文件,需要注意的是,aplay 工具只能解析 wav 格式音频文件,不支持 mp3 格式解码

alsamixer 是一个很重要的工具,用于配置声卡的混音器,它是一个字符图形化的配置工具

1、下载源码

下载链接:

AlsaProject (alsa-project.org)

Advanced Linux Sound Architecture (ALSA) project · GitHub

选用版本:1.2.2

2、linux下解压

tar -vxjf alsa-lib-1.2.2.tar.bz2

3、config

注意 alsa-lib 编译过程中会生成一些配置文件,而这些配置信息的路径都是绝对路径,因此为了保证 ubuntu 和开发板根文件系统中的路径一致!需要在 ubuntu 和开发板中各创建一个路径和名字完全一样的目录。路径为 /usr/app_install/common/lib/alsa

./configure --host=arm-linux-gnueabihf --prefix=/home/wwyc/srv/winShared/lib-install/alsa --with-configdir=/usr/app_install/common/lib/alsa

--prefix:安装目录

--with-configdir:配置文件目录

3、编译安装

make

sudo make install //因为配置文件会生成到/usr目录下,所以需要root权限

4、遇到问题

解决办法:

二、alsa-utils(可选)

1、下载源码

下载链接:

AlsaProject (alsa-project.org)

Advanced Linux Sound Architecture (ALSA) project · GitHub

选用版本:1.2.2

2、linux下解压

tar -vxjf alsa-utils-1.2.2.tar.bz2

3、config

./configure --host=arm-linux-gnueabihf --prefix=/home/wwyc/srv/winShared/lib-install/alsa-utils --with-alsa-inc-prefix=/home/wwyc/srv/winShared/lib-install/alsa/include/ --with-alsa-prefix=/home/wwyc/srv/winShared/lib-install/alsa/lib/ --disable-alsamixer --disable-xmlto

--prefix:安装目录

--with-alsa-inc-prefix:alsa头文件路径

--with-alsa-prefix:alsa库路径

--disable-alsamixer:禁止编译alsamixer工具

4、编译安装

make

sudo make install

5、遇到问题

configure: error: No linkable libasound was found.

解决办法:

config前先导出先环境变量, source /etc/profile

三、zlib

1、下载源码

下载链接:zlib Home Site

选用版本:1.2.11

2、linux下解压

tar -vxzf zlib-1.2.11.tar.gz

3、config

CC=arm-linux-gnueabihf-gcc LD=arm-linux-gnueabihf-ld AD=arm-linux-gnueabihf-as ./configure --prefix=/home/wwyc/srv/winShared/lib-install/zlib

4、编译安装

make

make install

完成后会在安装目录下生成如下文件

四、mplayer

1、下载源码

下载链接:Index of /MPlayer/releases

选用版本:1.4

2、linux下解压

tar -vxzf MPlayer-1.4.tar.gz

3、config

./configure --cc=arm-linux-gnueabihf-gcc --host-cc=gcc --target=arm-linux-gnueabihf --disable-ossaudio --enable-alsa --prefix=/home/wwyc/srv/winShared/lib-install/mplayer --extra-cflags="-I /home/wwyc/srv/winShared/lib-install/zlib/include -I /home/wwyc/srv/winShared/lib-install/alsa/include" --extra-ldflags="-L/home/wwyc/srv/winShared/lib-install/zlib/lib -Iz -L/home/wwyc/srv/winShared/lib-install/alsa/lib -lasound" --enable-fbdev --disable-mencoder

--extra-cflags:指定 zlib 和 alsa-lib 的头文件路径

--extra-ldflags:指定 zlib 和 alsa-lib 的库文件路径

配置完成以后打开 config.mak 文件,找到“INSTALLSTRIP = -s”这一行,取消掉后面的“-s”,否则“make install”命令会失败!

4、编译安装

make

make install

完成后会在安装目录下的bin目录下生成 mplayer 工具

五、移植到ARM

1、将alsa-lib编译生成的lib库和配置文件 全部拷贝到板卡/usr/lib 路径下,注意软连接,需要生成tar包拷贝到设备后再解压缩

2、将alsa-utils编译生成的bin目录下二进制工具拷贝到板卡 /usr/bin 路径下,使用aplay可以直接播放 wav格式的音频文件。

3、将 mplayer 编译生成的bin程序拷贝到板卡/usr/bin 路径下,使用mplayer就可播放带音频的视频文件了

linux-2.26 移植mplayer 功能

mplayer介绍:  

  mplayer 是一个linux下的视频播放器,它支持相当多的媒体格式,无论在音频播放还是在视频播放方面,可以说它支持的格式是相当全面的。视频格式支持:mpeg、avi、asf、wmv、QuickTime、OGG/OGM、sdp、pva、gif。音频格式支持:mp3、wav、OGG/OGM 文件(Vorbis)、wma 与 asf、mp4、cd音频、xmms

一、移植环境:

  交叉编译 PC环境:Deepin-Linux

  交叉编译工具:arm-fsl-linux-gnueabi-gcc

  目标板环境:周立功 i.max287A 开发版

二、mplayer源码下载:http://www.mplayerhq.hu/MPlayer/releases/ 

  链接:https://pan.baidu.com/s/1jorUzUoMiGHwaLy7WZELFA
  提取码:fx4f

   

 

 三、制作编译时需要的头文件和库

        1. 把 libmad-0.15.1b.tar.gz 文件拷贝到PC端linux系统,执行解压缩命令 " tar -xzvf libmad-0.15.1b.tar.gz -C ." 解压到当前目录

   2. 进入 libmad-0.15.1b 目录 cd libmad-0.15.1b

   3. 新建一个目录,用来存放编译生成的信息 mkdir build 

   3. 配置编译链和编译信息:./configure --enable-fpm=arm --host=arm-fsl-linux-gnueabi --disable-shared --disable-debugging --prefix=/home/yx/imx287/mplayer/build/ CC=arm-fsl-linux-gnueabi-gcc

     “--host=”"CC=" 后边替换成目标板所需要的编译链;把“--prefix=”后边的信息换成刚才新建的文件夹目录

  4. 配置完成后,编译,编译时会报错,把libmad-0.15.1b 文件下的 Makefile 文件的第129行的 “--fforce-mem” 去掉后,重新编译就行。

  5. 编译完成后,执行 make install 生成相应的头文件和库文件, 下边是制作好的目录

    

  四、编译mplayer源码

  1. 把 MPlayer-1.0rc2.tar.bz2  文件拷贝到PC端linux系统,执行解压缩命令tar -xzvf MPlayer-1.0rc2.tar.bz2  -C ." 解压到当前目录,cd MPlayer-1.0rc2.tar.bz2 进入这个解压开的目录

  2. 配置编译链和编译信息:./configure --prefix=/home/yx/imx287/mplayer/build --cc=arm-fsl-linux-gnueabi --disable-gui --target=arm-linux --host-cc=gcc --disable-freetype --enable-fbdev --disable-mencoder --disable-sdl --disable-live --disable-dvdread --disable-libdvdcss-internal --disable-x11 --enable-cross-compile --disable-dvdnav --disable-dvdread-internal --disable-jpeg --disable-tga --disable-pnm --disable-tv --disable-ivtv --disable-fontconfig --disable-xanim --disable-win32dll --disable-armv5te --disable-armv6 --enable-static

     “--prefix=” 设置成 刚才创建的目录路径   “--cc=” 设置成目标板需要的编译链

  3. 编译,make -j4  (使用4条线程编译)编译时间有点长

  4. 编译完成后,会在 MPlayer-1.0rc2.tar.bz2 目录下生成可执行文件 mplayer 

五、移植到开发版

  移植比较简单直接把生成的可执行文件 mplayer 拷贝到开发版的 /bin 下就行,使用 “chmod +x mplayer” 修改好这个文件的可执行权限

六、mplayer 命令测试

  1. mplayer test.mp4 播放test.mp4视频

         结果报错:[AO OSS] audio_setup: Can\'t open audio device /dev/dsp: No such file or directory” ,网上查了一下,需要配置内核添加 OSS PCM (digital audio) API模块,

  2. make muenconfig 进入linux内核配置,打开界面后:

    进入 Deivce Drivers——>Sound card support ——>Advanced Linux Sound Architecture 选中 OSS PCM(digital audiop) API 和 OSS PCM (Digital audio) API -- Include plugin system 保存退出

    

 

   3. 重新编译内核,下载到开发版,这样就没问题了

   4. 查看mplayer 命令 mplayer -input cmdlist

以上是关于带音频播放的MPlayer播放器在ARM上的移植笔记的主要内容,如果未能解决你的问题,请参考以下文章

如何将用QT做好的播放器移植到ARM开发板上

#yyds干货盘点#Linux下播放器开发-Mplayer命令行使用介绍

Linux下播放器开发-Mplayer命令行使用介绍

Linux下播放器开发-Mplayer命令行使用介绍

Linux下播放器开发-交叉编译Mplayer

Linux MPlayer使用手册