移植环境(红色粗字体字为修改后内容,蓝色粗体字为特别注意内容)
1,开发板:韦东山JZ2440
2,linux 版本:linux-3.4.2
3,系统版本:Ubuntu9.10
4,交叉编译环境:arm-linux-gcc-4.4.3
5,参考文献:
http://blog.chinaunix.net/uid-20587912-id-405026.html、https://www.linuxidc.com/Linux/2011-02/32616.htm
————————————————

经过笔者亲测,这种方式应该是依赖最少的移植方式,只需要安装两个包,分别是libmad和MPlayer。相比网上其他方法要简便得多!这两个包的下载地址如下:

libmad:https://nchc.dl.sourceforge.net/project/mad/libmad/0.15.1b/libmad-0.15.1b.tar.gz

Mplayer:http://www.mplayerhq.hu/MPlayer/releases/MPlayer-1.0rc2.tar.bz2

Step1:编译libmad

libmad-0.15.1b# CC=arm-linux-gcc ./configure --host=arm-linux --disable-shared --enable-static --prefix=/work/software/madplayer/_install

root@ubuntu:/home/sxbg/madplayer/libmad-0.15.1b# make

cc1: error: unrecognized command line option "-fforce-mem"

make[2]: *** [version.lo] Error 1
make[2]: Leaving directory `/home/sxbg/madplayer/libmad-0.15.1b'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/sxbg/madplayer/libmad-0.15.1b'
make: *** [all] Error

解决方法:将Makefile中的"-fforce-mem"选项去掉

root@ubuntu:/home/sxbg/madplayer/libmad-0.15.1b# make
root@ubuntu:/home/sxbg/madplayer/libmad-0.15.1b# make install

Step2:编译mplayer

./configure --cc=arm-linux-gcc --target=arm-linux --enable-static --prefix=/work/software/madplayer/MPlayer-1.0rc2/_install --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=/work/software/madplayer/_install/include --with-extralibdir=/work/software/madplayer/_install/lib --host-cc=gcc --enable-ossaudio

错误一:

vo_ivtv.c: In function 'ivtv_reset':
vo_ivtv.c:79: error: storage size of 'sd' isn't known
vo_ivtv.c:80: error: storage size of 'sd1' isn't known
vo_ivtv.c:84: error: 'IVTV_STOP_FL_HIDE_FRAME' undeclared (first use in this function)
vo_ivtv.c:84: error: (Each undeclared identifier is reported .ly .ce
vo_ivtv.c:84: error: for each function it appears in.)
vo_ivtv.c:87: error: 'IVTV_IOC_STOP_DECODE' undeclared (first use in this function)
vo_ivtv.c:97: error: 'IVTV_IOC_START_DECODE' undeclared (first use in this function)
vo_ivtv.c:80: warning: unused variable 'sd1'
vo_ivtv.c:79: warning: unused variable 'sd'
make[1]: *** [vo_ivtv.o] Error 1
make[1]: Leaving directory `/data1/wdy-tools/smplayer/MPlayer-1.0rc2/libvo'
make: *** [libvo/libvo.a] Error 2

解决方案:加入config加入--disable-ivtv选项,最终的config如下:

./configure --cc=arm-linux-gcc --target=arm-linux --enable-static --prefix=/work/software/madplayer/MPlayer-1.0rc2/_install --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=/work/software/madplayer/_install/include --with-extralibdir=/work/software/madplayer/_install/lib --host-cc=gcc --enable-ossaudio --disable-ivtv

错误二:

armv4l/dsputil_arm_s.S: Assembler messages:
armv4l/dsputil_arm_s.S:79: Error: selected processor does not support `pld [r1]'
armv4l/dsputil_arm_s.S:90: Error: selected processor does not support `pld [r1]'
armv4l/dsputil_arm_s.S:100: Error: selected processor does not support `pld [r1]'
armv4l/dsputil_arm_s.S:111: Error: selected processor does not support `pld [r1]'
armv4l/dsputil_arm_s.S:122: Error: selected processor does not support `pld [r1]'
armv4l/dsputil_arm_s.S:141: Error: selected processor does not support `pld [r1]'
armv4l/dsputil_arm_s.S:152: Error: selected processor does not support `pld [r1]'
armv4l/dsputil_arm_s.S:162: Error: selected processor does not support `pld [r1]'
armv4l/dsputil_arm_s.S:173: Error: selected processor does not support `pld [r1]'
armv4l/dsputil_arm_s.S:184: Error: selected processor does not support `pld [r1]'
armv4l/dsputil_arm_s.S:203: Error: selected processor does not support `pld [r1]'
armv4l/dsputil_arm_s.S:215: Error: selected processor does not support `pld [r1]'
armv4l/dsputil_arm_s.S:228: Error: selected processor does not support `pld [r1]'
armv4l/dsputil_arm_s.S:241: Error: selected processor does not support `pld [r1]'
armv4l/dsputil_arm_s.S:253: Error: selected processor does not support `pld [r1]'
armv4l/dsputil_arm_s.S:272: Error: selected processor does not support `pld [r1]'
armv4l/dsputil_arm_s.S:284: Error: selected processor does not support `pld [r1]'
armv4l/dsputil_arm_s.S:297: Error: selected processor does not support `pld [r1]'
armv4l/dsputil_arm_s.S:310: Error: selected processor does not support `pld [r1]'
armv4l/dsputil_arm_s.S:322: Error: selected processor does not support `pld [r1]'
armv4l/dsputil_arm_s.S:343: Error: selected processor does not support `pld [r1]'
armv4l/dsputil_arm_s.S:357: Error: selected processor does not support `pld [r1]'
armv4l/dsputil_arm_s.S:363: Error: selected processor does not support `pld [r1]'
armv4l/dsputil_arm_s.S:374: Error: selected processor does not support `pld [r1]'
armv4l/dsputil_arm_s.S:378: Error: selected processor does not support `pld [r1]'
armv4l/dsputil_arm_s.S:385: Error: selected processor does not support `pld [r1]'
armv4l/dsputil_arm_s.S:397: Error: selected processor does not support `pld [r1]'
armv4l/dsputil_arm_s.S:401: Error: selected processor does not support `pld [r1]'
armv4l/dsputil_arm_s.S:408: Error: selected processor does not support `pld [r1]'
armv4l/dsputil_arm_s.S:420: Error: selected processor does not support `pld [r1]'
armv4l/dsputil_arm_s.S:424: Error: selected processor does not support `pld [r1]'
armv4l/dsputil_arm_s.S:431: Error: selected processor does not support `pld [r1]'
armv4l/dsputil_arm_s.S:452: Error: selected processor does not support `pld [r1]'
armv4l/dsputil_arm_s.S:466: Error: selected processor does not support `pld [r1]'
armv4l/dsputil_arm_s.S:472: Error: selected processor does not support `pld [r1]'
armv4l/dsputil_arm_s.S:483: Error: selected processor does not support `pld [r1]'
armv4l/dsputil_arm_s.S:487: Error: selected processor does not support `pld [r1]'
armv4l/dsputil_arm_s.S:494: Error: selected processor does not support `pld [r1]'
armv4l/dsputil_arm_s.S:506: Error: selected processor does not support `pld [r1]'
armv4l/dsputil_arm_s.S:510: Error: selected processor does not support `pld [r1]'
armv4l/dsputil_arm_s.S:517: Error: selected processor does not support `pld [r1]'
armv4l/dsputil_arm_s.S:529: Error: selected processor does not support `pld [r1]'
armv4l/dsputil_arm_s.S:533: Error: selected processor does not support `pld [r1]'
armv4l/dsputil_arm_s.S:540: Error: selected processor does not support `pld [r1]'
armv4l/dsputil_arm_s.S:625: Error: selected processor does not support `pld [r1]'
armv4l/dsputil_arm_s.S:633: Error: selected processor does not support `pld [r1]'
armv4l/dsputil_arm_s.S:633: Error: selected processor does not support `pld [r1]'
armv4l/dsputil_arm_s.S:637: Error: selected processor does not support `pld [r1]'
armv4l/dsputil_arm_s.S:637: Error: selected processor does not support `pld [r1]'
armv4l/dsputil_arm_s.S:641: Error: selected processor does not support `pld [r1]'
armv4l/dsputil_arm_s.S:641: Error: selected processor does not support `pld [r1]'
armv4l/dsputil_arm_s.S:645: Error: selected processor does not support `pld [r1]'
armv4l/dsputil_arm_s.S:645: Error: selected processor does not support `pld [r1]'
armv4l/dsputil_arm_s.S:661: Error: selected processor does not support `pld [r1]'
armv4l/dsputil_arm_s.S:669: Error: selected processor does not support `pld [r1]'
armv4l/dsputil_arm_s.S:669: Error: selected processor does not support `pld [r1]'
armv4l/dsputil_arm_s.S:673: Error: selected processor does not support `pld [r1]'
armv4l/dsputil_arm_s.S:673: Error: selected processor does not support `pld [r1]'
armv4l/dsputil_arm_s.S:677: Error: selected processor does not support `pld [r1]'
armv4l/dsputil_arm_s.S:677: Error: selected processor does not support `pld [r1]'
armv4l/dsputil_arm_s.S:681: Error: selected processor does not support `pld [r1]'
armv4l/dsputil_arm_s.S:681: Error: selected processor does not support `pld [r1]'
make[1]: *** [armv4l/dsputil_arm_s.o] Error 1
make[1]: Leaving directory `/work/software/madplayer/MPlayer-1.0rc2/libavcodec'
make: *** [libavcodec/libavcodec.a] Error 2

解决方案:

vim libavcodec/armv4l/dsputil_arm_s.S

去掉ARM pld指令的支持
 修改源码 libavcodec\armv4l\dsputil_arm_s.S, libmpeg2\motion_comp_arm_s.S
在其开始的加入,这段代码意思是定义一个空的ARM汇编宏 pld,这样当代码出现pld指令,就变成一条空指令

#ifndef HAVE_PLD
.macro pld reg
.endm
#endif

pld指令只在armv5te以上版本有效,在2440(armv4l)无效.必须取消掉,这个指令的格式是
预读取PLD指令
功能:cache预读取(PLD,PreLoad),使用PLD指示存储系统从后面几条指令所指定的存储器地址读取,存储系统可使用这种方法加速以后的存储器访问。
格式:
PLD[Rn,{offset}]
其中:
Rn         存储器的基址寄存器。
Offset     加在Rn上的偏移量。含义同3。2。3节第1条指令。

错误三:

libvo/libvo.a(video_out.o):(.data+0x8): undefined reference to `video_out_ivtv'
collect2: ld returned 1 exit status
make: *** [mplayer] Error 1

解决方案:vim libvo/video_out.c
定位到101行

extern vo_functions_t video_out_dxr2;
100 #endif
101 extern vo_functions_t video_out_dxr3;
102 #ifdef HAVE_IVTV
103 extern vo_functions_t video_out_ivtv;
104 #endif

改为

extern vo_functions_t video_out_dxr2;
100 #endif
101 #ifdef HAVE_DXR3
102 extern vo_functions_t video_out_dxr3;
103 #endif
104 #ifdef HAVE_IVTV

错误四:
make install报错

install -m 755 -s mplayer /work/software/madplayer/MPlayer-1.0rc2/_install/bin
strip: Unable to recognise the format of the input file `/work/software/madplayer/MPlayer-1.0rc2/_install/bin/mplayer'
install: strip process terminated abnormally
make: *** [install-mplayer] Error 1

解决方案:查资料看install带-s 参数时会自动调用strip来strip应用程序。但是arm编译时要调用arm-linux-strip才有正确处理。解决办法是取消-s参数
 vim Makefile
可以看到,在该文件的256行,-s是如下
$(INSTALL) -m 755 $(INSTALLSTRIP) mplayer$(EXESUF) $(BINDIR)
的INSTALLSTRIP设置的,它默认是-s,因此只要简单在Makefile的前面(95行)加入。

INSTALLSTRIP :=  #将其置为空即可

最后来欣赏一下播放界面!

2440LCD上播放视频报错 :

MPlayer 被 11 信号中断(属于 decode_video 模块)
- 过度使用 CPU/FPU/RAM 导致 MPlayer 崩溃。
  使用 --enable-debug 重新编译 MPlayer 并用调试程序“gdb”反跟踪和
  反汇编。具体细节看 DOCS/zh/bugreports.html#crash。
- MPlayer 崩溃了。这不应该发生。
  这可能是 MPlayer 代码中 _或者_ 你的驱动中 _或者_ 你的 gcc 版本中的一个
  错误。如你觉得这是 MPlayer 的错误,请阅读 DOCS/zh/bugreports.html
  并遵循上面的步骤报告错误。除非你在报告一个可能的错误时候提供我们
  所需要的信息, 否则我们不能也不会帮助你。

可能是播放了h264编码的高质量视频,导致2440解码压力太大!造成崩溃,遇到这种情况,需要将该视频转为wmv。默认是使用帧缓冲设备/dev/fb0进行视频输出,播放效果如下:

./mplayer ms.wmv -framedrop -quiet -vf rotate=1,scale=320:
240
MPlayer 1.0rc2-4.4.3 (C) 2000-2007 MPlayer Team
CPU: ARM正在播放 ms.wmv。
检测到 ASF 文件格式。
[asfheader] 找到视频流,-vid 1
[asfheader] 找到音频流,-aid 2
VIDEO:  [WMV2]  136x240  24bpp  1000.000 fps    0.0 kbps ( 0.0 kbyte/s)
打开视频滤镜: [scale w=320 h=240]
打开视频滤镜: [rotate=1]
==========================================================================
请求的视频编解码器族 [wmv8] (vfm=dshow) 不可用。
请在编译时启用它。
请求的视频编解码器族 [wmvdmo] (vfm=dmo) 不可用。
请在编译时启用它。
打开视频解码器: [ffmpeg] FFmpeg's libavcodec codec family
已选视频编解码器: [ffwmv2] vfm: ffmpeg (FFmpeg M$ WMV2/WMV8)
==========================================================================
==========================================================================
打开音频解码器: [ffmpeg] FFmpeg/libavcodec audio decoders
AUDIO: 44100 Hz, 2 ch, s16le, 128.0 kbit/9.07% (ratio: 16000->176400)
已选音频编解码器: [ffwmav2] afm: ffmpeg (DivX audio v2 (FFmpeg))
==========================================================================
AO: [oss] 44100Hz 2ch s16le (2 bytes per sample)
开始播放...
VDec: vo 配置请求 - 136 x 240 (色彩空间首选项: Planar YV12)
VDec: 使用 Planar YV12 作为输出 csp (没有 0)
电影宽高比未定义 - 没使用预放大。
SwScaler: reducing / aligning filtersize 5 -> 4
SwScaler: reducing / aligning filtersize 5 -> 4
SwScaler: reducing / aligning filtersize 5 -> 4
SwScaler: reducing / aligning filtersize 5 -> 4
[swscaler @ 0x871744]SwScaler: BICUBIC scaler, from yuv420p to dithered bgr565 using C
[swscaler @ 0x871744]SwScaler: using C scaler for horizontal scaling
[swscaler @ 0x871744]SwScaler: using n-tap C scaler for vertical scaling (BGR)
[swscaler @ 0x871744]SwScaler: using C YV12->BGR16 Converter
[swscaler @ 0x871744]SwScaler: 240x136 -> 320x240

LCD屏幕显示视频。

2440移植Mplayer详细过程(最简便的方法)以及报错解决相关推荐

  1. idea安装及项目导入过程中pom报错解决办法

    1.idea安装可用破解版或者在淘宝上买正版账号(20多块钱一年,挺便宜的) 2.pom报错解决办法: 在项目导入过程中pom报错: 原因:相关jar包未下载完.(下载速度慢,因为下载的链接是国外的节 ...

  2. TFT-LCD移植LVGL详细过程记录

    TFT-LCD移植LVGL LVGL(轻量级和通用图形库)是一个免费和开源的图形库,它提供了创建嵌入式GUI所需的一切,具有易于使用的图形元素,美丽的视觉效果和低内存占用. LVGL更多介绍:http ...

  3. 详细记录一次npm i canvas报错的解决过程

    npm i canvas 报错信息 $ npm i canvas> canvas@1.6.13 install /Users/jayson/Documents/workspace/xuebang ...

  4. 【Linux开发】OpenCV在ARM-linux上的移植过程遇到的问题1---cvNamedWindow调用报错的问题...

    问题描述: 这个实际上是最后一部的问题,将生成的共享库文件放入到了/usr/local/opencv-arm/lib下,并且设置了LD_LIBRARY_PATH中为/usr/local/opencv- ...

  5. linux yum nothing,Centos6.9 yum安装htop报错解决过程

    今天在学习linux过程中需要安装htop,但是我在直接yum -y install htop之后,系统提示: No package htop available. Error: Nothing to ...

  6. path manipulation怎么解决_超详细的toad报错解决--no valid oracle clients found.

    概述 前几天分享了怎么安装toad for dba工具,但是Toad安装后,在启动Toad时报"No valid Oracle Client found"错,下面分享下解决的过程. ...

  7. 记一次ARM-鲲鹏服务器读写parquet报错解决过程

    背景: 最近客户现场使用华为提供的ARM-鲲鹏服务器集群,使用spark2.4.0,输出数据格式为parquet时,下游流程再使用该输出作为输入时出现报错,报错日志如下: Caused by: jav ...

  8. [Linux Audio Driver] 移植外部CODEC常见编译报错解决(持续更新)

    0. 背景 最近一直在调试codec芯片,好多代码FAE给的和平台不适配,比如结构体改了之类的,一些编译问题老是忘记,就想着顺手写下总结. 1. function definition is not ...

  9. 阿里云rds for mysql 大表添加字段复制到自建备库报错,解决过程

    表的大小大概3600W数据,一次添加多个字段(12个字段) 使用的是mysql5.6 在线ddl操作 在rds上大概执行了70多分钟,添加完毕 临时空间大概使用70个G 监控自建备库的执行,执行大概1 ...

最新文章

  1. Dubbo实现RPC调用使用入门
  2. 科大星云诗社动态20210509
  3. 关于stable_sort()和sort()的区别:
  4. c语言链表查找的代码与题目,链表的C语言实现之单链表的查找运算_c语言
  5. Java ThreadLocal的使用
  6. 如何使YouTube视频连续循环播放
  7. matlab数学实验结课作业答案,matlab数学实验第一次答案
  8. ECS中的Entity实体
  9. oracle+表的更新日志,测试oracle插入 删除 更新表的日志开销
  10. Filecoin Gas基础费率升至5.06 nanoFIL
  11. 八、Python 之内置函数(。。。)
  12. python问卷星微信登录_Python+Selenium自动刷问卷星问卷
  13. 关于node-pyg的路径问题导致build失败
  14. 中文转换为日文的几点注意事项
  15. Salesforce触发器面试题
  16. 参考文献起止页码怎么写_怎么看论文的起止页码
  17. 2022-06-01 postgres的insert语句执行的关键流程
  18. css3控制html中图片,如何使用CSS控制前端图片HTTP请求
  19. 你的样子抖音版,架子鼓版
  20. 随机获取小区/酒店名称

热门文章

  1. Titanium中如何实现正在加载时,旋转的小圆圈
  2. 自己写时间的Arduino时钟
  3. 判断一个数是否能被3或5整除
  4. 全球及中国生狗粮行业需求潜力及未来前景战略研究报告2021年版
  5. 这几款文档笔记工具,你习惯用哪个?
  6. linux打包命令tgz,Centos命令tgz文件解压到指定目录
  7. 微信开发者管理工具上线内测版,增加了内置的git管理和支持npm安装,6666666……
  8. Linux Vim增加行号
  9. Shopee店铺怎样注册?虾皮电商小技巧
  10. 矩阵范数、矩阵序列相关的题