LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 887|回复: 0

MadPlayer移植到mini2440上(avi)

[复制链接]
发表于 2010-12-23 16:45:13 | 显示全部楼层 |阅读模式
MadPlayer移植到mini2440上(avi)
2010-12-21   by 雨焰  QQ:839903061
硬件平台: RedHat Linux 5、mini2440(arm9)开发板
软    件:arm-Linux-gcc-4.4.3
资    源:  arm-linux-gcc-4.4.3.tar.gz
libstdc++.so.6.0.10
libmad-0.15.1b.tar.gz
MPlayer-1.0rc2.tar.gz
一个.avi格式的小视频
步                骤:
a)        首先搭建交叉编译环境
i.        将arm-linux-gcc-4.4.3.tar.gz解压到一个空文件夹中
#tar zvxf arm-linux-gcc-4.4.3.tar.gz –C / (C的后面有空格)
ii.        改变环境
#gedit  /root/.bashrc
iii.        将路径改为/opt/FriendlyARM/toolschain/4.4.3/bin
expotr  PATH=$PATH:/ opt/FriendlyARM/toolschain/4.4.3/bin
保存退出之后,要重启一下机子命令如下
   #reboot
iv.        重启之后查看是否编译成功
# arm-linux-gcc –v
在最后一行如果出现了版本号就是编译成功了
b)        修改编译调用的库链接
i.        # strings /usr/lib/libstdc++.so.6 | grep GLIBC
   结果的最后一句话:
GLIBCXX_3.4      没有GLIBCXX_3.4.9
ii.        # ls -l  /usr/lib/libstdc++.so.6
结果链接(快捷方式)为
/usr/lib/libstdc++.so.6 -> libstdc++.so.6.0.8
iii.        # rm –rf /usr/lib/libstdc++.so.6 -> libstdc++.so.6.0.8
iv.        #ls -l  /usr/lib/libstdc++.so.6
出现:/usr/lib/libstdc++.so.6:没有那个文件或目录
v.        把(资源)libstdc++.so.6.0.10放入/usr/lib中
vi.        重新做链接
#ln -s /usr/lib/libstdc++.so.6.0.10  /usr/lib/libstdc++.so.6
c)        创建文件夹 在根目录中建mywork
   #cd mywork
        #mkdir libmad libmab myplayer
        #cd libmab
        #mkdir mad myplayer
d)        编译安装库文件
1.        下载库文件libmad-0.15.1b.tar.gz并解压到         /mywork/libmad
2.        cd /mywork/libmad/libmad-0.15.1b
3.        ./configure CC=arm-linux-gcc --host=arm-linux --disable-shared --disable-debugging --prefix=/mywork/libmab/mad
4.        make
完成之后会出现错误,找到Makefile并删除“--fforce-mem”就OK了, 原因是gcc 4.4.3已经将其去除了,所以会出现上面的错误
5.        make install
e)        编译安装MPlayer
6.        下载MPlayer-1.0rc2.tar.gz解压到/mywork/mplayer中。
7.        cd /mywork/mplayer/MPlayer-1.0rc2
8.        ./configure  --prefix=/mywork/mplayer --disable-mencoder --enable-linux-devfs --disable-iconv --enable-network --disable-live  --disable-dvdnav --disable-dvdread --disable-dvdread-internal --disable-libdvdcss-internal --enable-ftp  --enable-libavcodec_a  --enable-libavcodec_mpegaudio_hp --enable-mad --disable-mp3lib --disable-ivtv --enable-fbdev --enable-ossaudio --enable-cross-compile --cc=arm-linux-gcc --host-cc=gcc --target=arm-linux --enable-static --with-extraincdir=/mywork/libmab/mad/include --with-extralibdir=/mywork/libmab/mad/lib 2>&1 |tee logfile
注意:如果不加--disable-ivtv会出现ivtv文件产生的错误。
        MPlayer不支持常见的--host来修改编译工具前缀.必须用--cc,--ar,--ranlib这样参数来修改.
        --disable-mp3lib是关闭默认的MP3解码库,--enable-mad 是使用libmad支持.
        --disable-dvbhead --disable-dvdread --disable-dvdnav  --disable-dvdread-internal 都是跟DVD相关库
        --enable-fbdev  打开framebuffer支持.ARM开发板必须的.
        --enable-static 如果使用静态编译尺寸大约是8M,动态编译是6M多,这样可能是无论哪种编译方式,mplayer都把自带的解码库链接到自身,多出2M应该是系统标准库的尺寸。
        --enable-static 设置静态连接
        --disable-mencoder 禁止编码功能
        --disable-live 禁止live 555流媒体(我也不知道是什么玩意儿。。。)
        --enable-libavcodec_a 启用静态的libavcodec解码
9.        在make之前修改两个地方,否则会出现不支持pld [r1]指令的问题
在MPlayer-1.0rc2/libmpeg2/motion_comp_arm_s.S文件
和MPlayer-1.0rc2/libavcodec/armv4l/dsputil_arm_s.S文件的开始处写入
#ifndef HAVE_PLD
.macro pld reg
.endm
#endif
然后make
10.        make install
会出现一个错误↓↓↓↓
make: *** [install-mplayer] 错误 1
可以不管它,因为此时mplayer已经出来了,也就是说已经成功了。。。。
11.        把mplayer通过tftp软件传到开发板中,在传一个视频文件eg:new.avi
tftp的使用方法:在PC机上面打开tftp软件
               进入开发板要下载的文件夹
输入命令如下:
#tftp –g –r 要下载的文件  PC的IP
                          下载过以后可以  ls  查看一下!!!
12.       
输入
mkdir -p /dev/sound
ln -s /dev/dsp /dev/sound/
是为了让有声音
输入
./mplayer new.avi -framedrop -quiet -vf rotate=1,scale=240:320测试
注释:目标系统上有 /dev/dsp 音频设备文件,只是OSS音频驱动需要的是 /dev/sound/dsp 设备文件,这问题的简单解决方法是建一个符号链接,当然这两条命令可以写在系统的启动文件的适当位置,即修改系统的/etc/init.d/rcS文件。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表