Chinaunix首页 | 论坛 | 博客
  • 博客访问: 32795
  • 博文数量: 12
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 130
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-22 20:05
文章分类
文章存档

2010年(4)

2009年(8)

我的朋友

分类: 嵌入式

2010-01-09 20:48:42

主机系统:fedora8 + vmware 

目标板:utu2440 / linux-2.6.29.1
交叉编译器:
arm-linux-gcc-3.4.1
软件资源:libmad-0.15.1b.tar.gz

           MPlayer-1.0rc2.tar.bz2

 

移植步骤:

1.     编译libmad-0.15.1b.tar.gz //需要mad库播放音频, 之前编译madplay时已编译过,过程如下:

# CC=arm-linux-gcc ./configure --prefix=/opt/madplay --host=arm-linux --disable-shared

# make

# make install

 

2 解压mplayer

# tar jxf /mnt/hgfs/share/ MPlayer-1.0rc2.tar.bz2 –C /home/work_dir

 

3.     交叉编译mplayer

# ./configure --cc=arm-linux-gcc --target=arm-linux --enable-static \
     --prefix=/tmp/mplayer-rc2 --disable-win32dll --disable-dvdread \
     --enable-fbdev --disable-mencoder --disable-live --disable-mp3lib \
     --enable-mad --enable-libavcodec_a --language=zh_CN \
     --disable-armv5te --disable-armv6 \
     --with-extraincdir=/opt/madplay/include \

       --with-extralibdir=/opt/madplay/lib

 

配置主要参考了http://www.cnitblog.com/puppypyb/archive/2008/09/09/48875.html

配置参数含义如下:

  --cc
         
交叉编译工具,如果没添加到环境变量,就要指定完整路径


   --target
         
pre版本中,对于--target和这个配置参数是这样描述的:
===============================================
--target=arm-armv4l-linux
这个参数要注意的是一个分三部分,第一部分的arm是指arch,这里设定为arm;第二部分的armv4l是指具体的版本,这个要注意了,一定要跟libavcodec目录下的平台目录名一致,否则为这个平台的优化代码没办法编译进去(据我观察是这样的);第三部分是系统平台。
===============================================
         
但是在rc2版本中,只需要--target=arm-linux这样指定就好了。

         --enable-static
         
是设定静态连接,不需要依赖动态库


         --prefix=/tmp/mplayer-rc2
         make install
后,可执行程序就安装在/tmp/mplayer-rc2目录下。

         --disable-win32dll
         
禁用win32动态链接库支持。

        --disable-dvdread
       
禁用libdvdread.

        --enable-fbdev
      
支持fbdev,这个一定要选上。

        --disable-mp3lib
--enable-mad
        arm
系列的cpu,一般都没浮点运算单元,而mplayermp3解码默认使用mp3lib,这个是浮点运算库,在arm上肯定跑不了,使用ffmp3或者libmad(需要外部库libmad支持)应该就没问题了。所以这里需要禁止掉mencoder和使能libmad

        --disable-mencoder
       
禁止编码功能


        --disable-live
       
禁止live 555流媒体


        --enable-libavcodec_a

        启用静态的libavcodec解码。在pre版本中该参数为--enable-libavcodec

        --disable-armv5te --disable-armv6
       
禁用armv5tearmv6指令扩展。

        --with-extraincdir
-with-extralibdir
       
指定libmadmad.h的路径。mad的路径被添加到编译参数-I-L后面。
       
注:在pre版本中需要指定--host-cc=gcc配置参数。用来编译一些需要在host上执行的中间文件的,如codec-cfg,切记不能缺少。但在rc2版本中该参数可以省略掉。

 

# make

没编译几下,就停下来了,出现这样的错误:
./codec-cfg ./etc/codecs.conf > codecs.conf.h
/bin/sh: line 1: ./codec-cfg: cannot execute binary file

# file codec-cfg查看得知codec-cfg是已交叉编译过的可执行文件,在主机上是不能运行的,于是参考网上的方法先把mplayer重新配置编译成x86的代码,简单的 ./configure, make,然后将生成的codec-cfg改名为codec-cfg.x86。然后再按跨平台方式配置,编译,等编译器出现错误停止编译时,将codec-cfg.x86该名为codec-cfg,再make,这次编译通过。

 

4.拷贝mplayerrootfs/bin/,重启开发板,在命令行测试mplayer

 

[root@liuzg]# mplayer

MPlayer 1.0rc2-3.4.1 (C) 2000-2007 MPlayer Team

CPU: ARM

用法:   mplayer [选项] [URL|路径/]文件名

 

基本选项: (完整列表参见手册页)

 -vo         选择视频输出驱动 (查看驱动列表用“-vo help)

 -ao         选择音频输出驱动 (查看驱动列表用“-ao help)

 vcd://  播放 (S)VCD 轨迹号 (原始设备, 无需安挂)

 dvd://  从设备而不是普通文件上播放 DVD 标题号

 -alang/-slang    选择 DVD 音轨/字幕的语言(使用两字符的国家代号)

 -ss    寻找到给定(多少秒或时分秒 hh:mm:ss )位置

 -nosound         不播放声音

 -fs              全屏播放 (或者用 -vm, -zoom, 详见于手册页)

 -x -y     设置显示的分辨率(提供给 -vm 或者 -zoom 使用)

 -sub       指定字幕文件 (参见 -subfps, -subdelay)

 -playlist 指定播放列表文件

 -vid x -aid y    选择用于播放的 x 视频流和 y 音频流通道号

 -fps x -srate y  改变视频率为 x 帧秒(fps)和音频率为 y 赫兹(Hz)

 -pp     使用后期处理过滤器/滤镜 (详见于手册页)

 -framedrop       使用丢帧(用于慢机器)

 

基本控制键: (完整的列表参见于手册页, 同时也请核查 input.conf)

 <-  or  ->       后退/快进 10

 down or up       后退/快进 1 分钟

 pgdown or pgup   后退/快进 10 分钟

 < or >           跳到播放列表中的前一个/后一个

 p or SPACE       暂停播放(按任意键继续)

 q or ESC         停止播放并退出程序

 + or -           调整音频延迟增加/减少 0.1

 o                循环 OSD 模式:  /搜索条/搜索条加计时器

 * or /           增加或减少 PCM 音量

 x or z           调整字幕延迟增加/减少 0.1

 r or t           /下调整字幕位置, 参见“-vf expand

 

# mplayer vedio.mp4

[root@liuzg]# mplayer vedio.mp4

MPlayer 1.0rc2-3.4.1 (C) 2000-2007 MPlayer Team

CPU: ARM

 

正在播放 vedio.mp4

检测到 Quicktime/MOV 文件格式。

[mov] 找到视频流,-vid 0

[mov] 找到音频流,-aid 1

 

此时图像和音频都已正常输出。之前参考网上的各种方法试过其它几个版本的mplayerarm-linux-gcc-3.3.2 / arm-linux-gcc-3.4.1配合都未能成功,几经尝试总算匹配上了J

 

阅读(1264) | 评论(0) | 转发(0) |
0

上一篇:linux-2.6.29.1在utu2440上的移植--adc驱动

下一篇:没有了

给主人留下些什么吧!~~