Linux系统音视频播放器的制作
madplay和mplayer的安装环境
- ubuntu18.04系统
- GEC6818 ARM cortex-A53开发板
- arm-linux-gcc 5.4.1
如果没有系统没有对应的编译环境,可参考Linux系统交叉编译环境的搭建
一、Linux系统录音播放源码的下载和移植
1、需要下载alsa-lib-1.2.6.tar.bz2(声音驱动的内核组件库)和 libmad-0.15.1b.tar.gz(解码库)
- 到 http://www.alsa-project.org/main/index.php/Download 下载alsa-lib-1.2.6.tar.bz2库;
找到对应的压缩包下载 - 到 https://www.linuxfromscratch.org/blfs/view/svn/multimedia/libmad.html下载libmad-0.15.1b.tar.gz(解码库)
2、Ubuntu18.04移植编译alsa-arm.tar.gz库
- 在arm目录下创建alsa-arm文件夹
mkdir -p /usr/local/arm/alsa-arm
- 解压 xxx.tar.gz 解压 tar -zxvf xx.tar.gz(后缀为gz的解压命令)
xxx.tar.bz2 解压 tar -jxvf xx.tar.bz2(后缀为bz2的解压命令) - 进入解压的目录配置参数
./configure CC=arm-linux-gcc --host=arm-linux --prefix=/usr/local/arm/alsa-arm
./configure //shell脚本 配置工具
CC=arm-linux-gcc //编译工具
–host=arm-linux //平台
–prefix=/usr/local/arm/alsa-arm //安装路径 - Makefile里设置
(1)程序中添加头文件 #include “asoundlib.h”,在库文件夹include/alsa/asoundlib.h
(2)Makefile里设置
头文件路径
库文件路径
库名 -lasound
MakeFile的详解参加Makefile代码解释 - 编译和下载
make && make install
- 打包压缩包
tar zcvf alsa-arm.tar.gz alsa-arm
,将压缩包移植到开发板中 - 库目录放置在开发板的路径:
- 系统路径,
cp alsa-arm/lib/* /lib -radf
/lib (不需要配置/etc/profile,因系统已配置好) - 自定义路径 /usr/local/arm (需要配置)
配置相应环境变量:vi /etc/profile在后面添加
export LD_LIBRARY_PATH=/usr/local/arm/libmad-arm/lib:$LD_LIBRARY_PATH
刷新配置:source /etc/profile
-把库文件放到对应项目文件夹中
3、Ubuntu18.04移植编译libmad-0.15.1b.tar.gz库
注意:如果通过代码对MP3进行解码,得下载libmad-0.15.1b.tar.gz
- 在arm目录下创建alsa-arm文件夹
mkdir -p /usr/local/arm/libmad-arm
- 解压和进入解压目录配置参数:
tar -zxvf libmad-0.15.1b.tar.gz
./configure CC=arm-linux-gcc --host=arm-linux --prefix=/usr/local/arm/libmad-arm
选项说明:
./configure
CC=arm-linux-gcc
–host=arm-linux
–prefix=/usr/local/libmab/mad
–disable-shared
–disable-debugging - 修改Makefile文件,
gedit Makefile
ctrl+f查找-fforce-mem将其删掉保存退出。 - 编译与安装
make && make install
,把相对应的库打包移植到开发中 - 库目录放置在开发板的路径:
- 系统路径, /lib (不需要配置/etc/profile,因系统已配置好)
- 自定义路径 /usr/local/arm (需要配置)
配置相应环境变量:vi /etc/profile在后面添加
export LD_LIBRARY_PATH=/usr/local/arm/libmad-arm/lib:$LD_LIBRARY_PATH
刷新配置:source /etc/profile
-把库文件放到对应项目文件夹中 - 库使用
(1)在程序中添加头文件#include “mad.h”
(2)Makefile里设置
头文件路径:-I头文件路径
库文件路径:-L库路径
库名: -lmad
二、Linux系统madplay的编译与移植
1、准备以下几个库
- zlib-1.2.7.tar.gz //用于文件的压缩与解压;
- libid3tag-0.15.1b.tar.gz //mp3的解码库;
- libmad-0.15.1b.tar.gz //madplay的库文件;
- madplay_0.15.2b.orig.tar.gz //播放程序的压缩包,mp3播放器的源码
2、Linux对各个库的操作
(1) zlib-1.2.7.tar.gz的操作
- 创建mp3的安装目录
mkdir -p /usr/local/arm/madplay_arm/
; - 第一次解压
tar zxvf zlib-1.2.7.tar.gz -C ~
; - 进入解压的库配置参数
export CC=arm-linux-gcc
和./configure --prefix=/usr/local/arm/madplay_arm
; - 编译和安装
make && make install
; - 把第一次解压的文件夹删掉
rm -R ~/zlib-1.2.7/
; - 重新进行第二次解压
tar zxvf zlib-1.2.7.tar.gz -C ~
; - 配置参数
export CC=arm-linux-gcc
和./configure --shared --prefix=/usr/local/arm/5.4.0/usr
根据自定义路径进行配置; - 再次进行编译和安装
make && make install
;
(2) libid3tag-0.15.1b.tar.gz的操作
- 解压 libid3tag-0.15.1b.tar.gz到家目录
tar zxvf libid3tag-0.15.1b.tar.gz -C ~
; - 进入目录并配置Makefile参数
./configure --prefix=/usr/local/arm/madplay_arm --host=arm-linux CPPFLAGS="-I/usr/local/arm/madplay_arm/include" LDFLAGS="-L/usr/local/arm/madplay_arm/lib -lz"
; - 编译和安装
make && make install
;
(3)libmad-0.15.1b.tar.gz的操作
- 解压 libid3tag-0.15.1b.tar.gz到家目录
tar zxvf libmad-0.15.1b.tar.gz -C ~
; - 进入目录并配置Makefile参数
./configure --prefix=/usr/local/arm/madplay_arm --host=arm-linux
; - 直接make会出现问题,修改Makefile文件,
gedit Makefile
ctrl+f查找-fforce-mem将其删掉保存退出。 - 编译和安装
make && make install
;
(4)madplay_0.15.2b.orig.tar.gz的操作
- 解压 madplay_0.15.2b.orig.tar.gz到家目录
tar zxvf madplay_0.15.2b.orig.tar.gz -C ~
; - 配置参数
./configure --prefix=/usr/local/arm/madplay_arm --host=arm-linux --disable-debugging --disable-shared CPPFLAGS="-I/usr/local/arm/madplay_arm/include" LDFLAGS="-L/usr/local/arm/madplay_arm/lib"
- 编译和安装`make && make install;
3、完成以上所有步骤后,会在/usr/local/arm/madplay_arm/bin/
下看到“madplay”这个可执行文件,为MP3播放器。
三、Linux系统下mplayer视频播放器的制作
1、下载MPlayer-1.4源码
在http://www.mplayerhq.hu/design7/dload.html#source下载MPlayer源码
(1)MPlayer-1.4.tar.xz源码的操作
- 解压源码包
xz -d MPlayer-1.4.tar.xz
tar xvf MPlayer-1.4.tar -C ~
; - 进入解压的文件夹
cd ~/MPlayer-1.4/
; - 进入/libvo修改源码,
gedit libvo/video_out.c
,找int vo_doublebuffering=1;修改为int vo_doublebuffering=0;保存退出; - 返回上一层目录配置参数
./configure --prefix=/usr/local/arm/madplay_arm/ --cc=arm-linux-gcc --ar=arm-linux-ar \ --ranlib=arm-linux-ranlib --disable-gui \ --target=arm-linux --host-cc=arm-linux-gcc --disable-freetype\ --enable-fbdev --disable-mencoder --disable-sdl --disable-live --disable-dvdread \ --disable-libdvdcss-internal --disable-x11 --enable-cross-compile --disable-mp3lib \ --enable-mad --with-extraincdir="/usr/local/arm/madplay_arm/include " --with-extralibdir="/usr/local/arm/madplay_arm/lib " \ --disable-dvdnav --disable-dvdread-internal --disable-jpeg --disable-tga \ --disable-dvbhead --disable-pnm --disable-tv --disable-ivtv \ --disable-fontconfig --disable-xanim --disable-win32dll --disable-armv5te --disable-armv6
- 编译:
time make
显示时间(时间较长); - 安装:make install
注:安装时会出现错误
原因:install时默认使用的strip指令不正确,修改Makefile手动指定即可
vi Makefile
#找到原始的安装命令(858行)左右如下:
$(INSTALL) -m 755 $(INSTALLSTRIP) $< KaTeX parse error: Expected 'EOF', got '#' at position 12: (BINDIR)** #̲修改为如下: **(INSTALL) -m 755 $(INSTALLSTRIP) --strip-program=arm-linux-strip $< $(BINDIR)
#保存退出;
#重新make install