S3C2410下mplayer音视频播放器移植

发布者:数字航海家最新更新时间:2021-06-18 来源: eefocus关键字:S3C2410  mplayer  移植 手机看文章 扫描二维码
随时随地手机看文章

一、s3c2410移植ALSA及相关工具使用

相关源码文件
ncurses-5.6.tar.gz
alsa-lib-1.0.17.tar.bz2
alsa-utils-1.0.17.tar.bz2

1. 设置环境变量

export MEDIA_INSTALL_DIR=/home/linux/driver/mplay/media_install

2. 编译ncurses
 
tar zxvf ncurses-5.6.tar.gz

cd ncurses-5.6

./configure --host=arm-linux --target=arm-linux --build=i686-linux --with-softfloat --prefix=/usr --without-ada CC=/opt/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/bin/arm-softfloat-linux-gnu-gcc

make

make install DESTDIR=$MEDIA_INSTALL_DIR

2. 编译alsa-lib
 
tar jxvf alsa-lib-1.0.17.tar.bz2

cd alsa-lib-1.0.17

./configure --host=arm-linux --target=arm-linux --build=i686-linux --with-softfloat --prefix=/usr --disable-python CC=/opt/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/bin/arm-softfloat-linux-gnu-gcc 

修改Makefile,删除掉aserver和alsalisp所有部分(各2处 );因为运行configure设置了--with-softfloat ,不然会出错。

make

make install DESTDIR=$MEDIA_INSTALL_DIR

3.编译alsa-util
 
tar jxvf alsa-utils-1.0.17.tar.bz2

cd alsa-utils-1.0.17

./configure --host=arm-linux --target=arm-linux --build=i686-linux --with-softfloat --prefix=/usr --with-alsa-prefix=$MEDIA_INSTALL_DIR/usr/lib --with-alsa-inc-prefix=$MEDIA_INSTALL_DIR/usr/include CC=/opt/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/bin/arm-softfloat-linux-gnu-gcc

make

make install DESTDIR=$MEDIA_INSTALL_DIR

4.相关工具使用

(1)
由于alsa util工具访问音频alsa设备目录在/dev/snd下,可先创建一个脚本:create_snd_dev.sh

mkdir /dev/snd
ln -s /dev/controlC0 /dev/snd/controlC0
ln -s /dev/pcmC0D0c /dev/snd/pcmC0D0c
ln -s /dev/pcmC0D0p /dev/snd/pcmC0D0p
ln -s /dev/mixer /dev/snd/mixer
ln -s /dev/timer /dev/snd/timer

(2) 使用aplay直接播放wav文件
./aplay xxx.wav


二、s3c2410上mp3库及madplay移植

相关源码文件
zlib-1.2.3.tar.gz
libid3tag-0.15.1b.tar.gz
libmad-0.15.1b.tar.gz
madplay-0.15.2b.tar.gz

1.编译zlib-1.2.3
 
tar zxvf zlib-1.2.3.tar.gz
cd zlib-1.2.3

./configure --prefix=/home/linux/driver/mplay/media_install/usr

修改Makefile
CC=/opt/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/bin/arm-softfloat-linux-gnu-gcc

AR=/opt/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/bin/arm-softfloat-linux-gnu-ar rc
RANLIB=/opt/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/bin/arm-softfloat-linux-gnu-ranlib

make

make install

2. 编译libid3tag

tar zxvf libid3tag-0.15.1b.tar.gz

cd libid3tag-0.15.1b

./configure --prefix=/home/linux/driver/mplay/media_install/usr --host=arm-linux --disable-debugging CC=/opt/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/bin/arm-softfloat-linux-gnu-gcc CPPFLAGS="-I/home/linux/driver/mplay/media_install/usr/include" LDFLAGS="-L/home/linux/driver/mplay/media_install/usr/lib"

make

make install

3. 编译libmad

tar zxvf libmad-0.15.1b.tar.gz

cd libmad-0.15.1b

./configure --prefix=/home/linux/driver/mplay/media_install/usr --host=arm-linux --disable-debugging CC=/opt/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/bin/arm-softfloat-linux-gnu-gcc CPPFLAGS="-I/home/linux/driver/mplay/media_install/usr/include" LDFLAGS="-L/home/linux/driver/mplay/media_install/usr/lib"

make

出现:cc1: error: unrecognized command line option "-fforce-mem"
修改Makefile
在Makefile中找到包含"fforce-mem"字符串,将其删除即可;原因:gcc3.4或更高版本中,已将将该选项去除了。

再重新make即可

make install

4. 编译madplay

tar zxvf madplay-0.15.2b.tar.gz

cd madplay-0.15.2b

./configure --prefix=/home/linux/driver/mplay/media_install/usr --host=arm-linux --disable-debugging --with-alsa CC=/opt/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/bin/arm-softfloat-linux-gnu-gcc CPPFLAGS="-I/home/linux/driver/mplay/media_install/usr/include" LDFLAGS="-L/home/linux/driver/mplay/media_install/usr/lib"
 
make

编译出错:
/opt/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/bin/arm-softfloat-linux-gnu-gcc -Wall -O2 -fomit-frame-pointer -o madplay madplay.o getopt.o getopt1.o version.o resample.o filter.o tag.o crc.o rgain.o player.o audio.o audio_aiff.o audio_cdda.o audio_hex.o audio_null.o audio_raw.o audio_snd.o audio_wave.o audio_alsa.o -L/media/LinuxWorks/p760/multimedia/myworks/media_install/usr/lib /usr/lib/libasound.so -ldl -lpthread -lrt /media/LinuxWorks/p760/multimedia/myworks/media_install/usr/lib/libmad.so /media/LinuxWorks/p760/multimedia/myworks/media_install/usr/lib/libid3tag.so -lz -lm -Wl,--rpath -Wl,/media/LinuxWorks/p760/multimedia/myworks/media_install/usr/lib -Wl,--rpath -Wl,/media/LinuxWorks/p760/multimedia/myworks/media_install/usr/lib

直接修改最后一步:

/opt/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/bin/arm-softfloat-linux-gnu-gcc -Wall -O2 -fomit-frame-pointer -o madplay madplay.o getopt.o getopt1.o version.o resample.o filter.o tag.o crc.o rgain.o player.o audio.o audio_aiff.o audio_cdda.o audio_hex.o audio_null.o audio_raw.o audio_snd.o audio_wave.o audio_alsa.o -L/media/LinuxWorks/p760/multimedia/myworks/media_install/usr/lib /media/LinuxWorks/p760/multimedia/myworks/media_install/usr/lib/libasound.so -ldl -lpthread -lrt /media/LinuxWorks/p760/multimedia/myworks/media_install/usr/lib/libmad.so /media/LinuxWorks/p760/multimedia/myworks/media_install/usr/lib/libid3tag.so -lz -lm -Wl,--rpath -Wl,/media/LinuxWorks/p760/multimedia/myworks/media_install/usr/lib -Wl,--rpath -Wl,/media/LinuxWorks/p760/multimedia/myworks/media_install/usr/lib

make install

5.相关工具使用
./madplay tears.mp3
 

三、MPlayer在s3c2410上移植(软解码)

tar jxvf MPlayer-1.0rc2.tar.bz2

cd MPlayer-1.0rc2

./configure --cc=/opt/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/bin/arm-softfloat-linux-gnu-gcc --host-cc=gcc --target=armv4l-linux --prefix=/home/linux/driver/mplay/media_install/usr --disable-w32threads --disable-dvdread --disable-mencoder --disable-live --disable-mp3lib --disable-tv --disable-tv-v4l1 --disable-tv-v4l2 --disable-tv-bsdbt848 --disable-radio-v4l2 --disable-dvdnav --disable-cdparanoia --disable-bitmap-font --disable-ftp --disable-vstream --disable-ass --disable-network --enable-xv --enable-mad --enable-alsa --with-extraincdir=/home/linux/driver/mplay/media_install/usr/include --with-extralibdir=/home/linux/driver/mplay/media_install/usr/lib

make

在目录中就会生成mplayer可执行文件

mplayer软件对mpeg4解码还比较流畅;但H264的格式解码性能不够,音视频会不同步。

mplayer tears.mp3 //可以播放mp3文件
mplayer HarryPotter.avi //MPEG4格式480 x 272格式


关键字:S3C2410  mplayer  移植 引用地址:S3C2410下mplayer音视频播放器移植

上一篇:ARM异常处理总结
下一篇:S3C2440上移植Qt输入法

推荐阅读最新更新时间:2024-11-10 21:54

移植u-boot-2010.12.tar.bz2版本到s3c2440过程
1,tar解压 2,修改根目录下的makefile文件中的交叉编译为 arm-linux- 3,make distclean 4,make trab_bigflash_congfig 5, 修改/uboot/include/config.h,添加CONFIG_SYS_SDRAM_BASE=0等两个宏,不添加make会报错,所以根据错误添加一下 6,make all 7,make all会出错,提示找不到lstubs这个库,修改/u-boot/examples/standalone/makefile,将libstubs.o修改为libstubs.a,如果提示找不到其他库的话,按照同样的方法修改makefile.
[单片机]
stm32系统时钟详解&&移植
写作原由:今日接手用stm32f100xx芯片开发的项目,以前用的是stm8s 和stm32f103xx芯片;因为在别人的项目代码的基础上做2次开发,但是发现那个代码main函数中没有对系统时钟的设置的相关函数,一直纳闷,但也没有深究,直至昨日 调试时出现串口收发数据出错,源代码在原项目的板子上串口发送、接收数据正常,同样程序在项目板子上收发的数据不正确, 两块板子芯片一样,串口收发管脚一样,最后发现原来板子外部晶振是8MHZ ,新板子外部晶振是12MHZ; 而在STM32固件库中,默认的外部晶振是8MHZ,由于时钟源不正确,导致波特率不正确,当然收发的数据也不正确了.....我勒个去!都怪自己平时看问题“不求甚解”。 (波特率与
[单片机]
stm32系统时钟详解&&<font color='red'>移植</font>
S3C2410——LED灯实验
一、S3C2410输入/输出的原理 Linux主要有字符设备、块设备和网络设备3类驱动程序,我们一般编写的驱动都是字符设备驱动程序。 二、程序部分 编写程序控制3个LED灯,代码分为2个部分:控制LED的驱动程序、调用驱动程序的应用程序 1. 控制LED的驱动程序 (1) 常量和结构体的定义: //定义设备名字,分配设备号时使用 #define DEVICE_NAME UP-LED //定义次设备号 #define LEDRAW_MINOR 0 //定义端口C配置寄存器 #define GPCCON (*(volatile unsigned int *)S3C2410_GPCCON) //定义端口C数据寄存器 #d
[单片机]
<font color='red'>S3C2410</font>——LED灯实验
linux 2.6.22.6 移植
板子是国嵌的 GQ2440 主要移植步骤参考 韦东山老师的《嵌入式linux应用开发完全手册》 1、下载内核,打补丁 2、是用config_ok 配置内核 3、在 include/asm-arm/mach-types.h 中修改 MACH_TYPE_S3C2440 的值为 1999 因为MACH_TYPE_S3C2440 对应的机器结构在 arch/arm/mach-s3c2440/mach-smdk2440.c 中定义 所以 要把这个文件编译进内核,所以配置中有:System Type - s3c2440 Machines - SMDK2440 4、在arch/arm/mach-s3c2440/mach-smdk2440.c
[单片机]
UCOSIII在STM32F4xx上的移植
一、准备好UCOSIII的源码 ①通过UCOSIII官方下载:https://www.micrium.com/,进入官方网站后点击 ,找到Browse by MCU Manufacturer下对应的STM这一栏,选择对应的型号 这里点击STN32F4xx进去选择自己需要的下载即可 ②提供一份我已经下载好的UCOSIII源码:链接:https://pan.baidu.com/s/1hqDpzDigy1kg3ZaftQBJhQ 密码:1e5d 二、UCOSIII移植 ①准备好需要移植的工程,在工程文件夹里新建一个UCOIII文件夹,然后将UCOSIII源码里的uC_CPU、uC_LIB、UCOS_II
[单片机]
UCOSIII在STM32F4xx上的<font color='red'>移植</font>
基于s3c2410 2.6.25内核cs8900网卡驱动的移植
因为在驱动中使用的是虚拟地址,因此要首先将网卡的物理地址映射到虚拟地址 ************************************************************** 1 。在include/asm-arm/plat-s3c24xx/common-smdk.h文件中添加 其中必须使用宏__phys_to_pfn 即将物理地址右移12位,跟踪源码可知 与struct map_desc中的pfn相关 #define pSMDK2410_ETH_IO __phys_to_pfn(0x19000000) #define vSMDK2410_ETH_IO S3C2410_ADDR(0x04000000) #de
[单片机]
基于S3C2410的Linux驱动程序开发
1. 开发环境的建立在嵌入式系统中,由于目标机资源有限,因此通常是在主机上编译好驱动程序以及应用程序,然后通过串口、以太网、仿真器或其他通信手段与目标机通信。为了方便进行Linux设备驱动的开发和调试,首先必须建立良好的开发环境,包括交叉编译环境的建立、minicom的设置以及nfs网络文件系统的建立。 (1) 交叉编译环境由于我采用的是ARM9 S3C2410处理器,因此必须在主机上建立针对目标板处理器的GNU工具链,这个过程相当复杂繁琐,开发者可以采用编译好的针对ARM处理器的交叉工具链arm-linux-gcc,只需对其进行安装即可。首先,在/usr/local下建立目录arm,接着把压缩包arm-linux-gc
[单片机]
u-boot2010.03 移植篇(一) 建立编译目标
移植篇(一)-----修改Makefile,生成编译目标---S3C6410 ---------------------------------------------------------- 使用环境 PC: Centos5.4 kernel: 3.0.1 corss: arm-linux-gcc 4.4.1 arm: s3c6410 uboot: uboot-2010-03 ---------------------------------------------------------- 开始教程之前.你需要下载源码,解压....此处略过千万行~~源码为uboot2010.03这个..别整错了.错了
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved