zoukankan      html  css  js  c++  java
  • 移植mplayer到开发板

    转载 移植mplayer的时候出错从这位小哥得到了启发
    https://wenku.baidu.com/view/3d3f7c8f8762caaedd33d4c4.html
    mplayer播放是出错: [AO OSS] audio_setup: Can't open audio device /dev/dsp: No such file or directory
    解决办法: 原因是你的linux系统的linux内核版本中没有加入oss的音频输入框架。
    默认的情况想2.4以上的内核默认只带alsa的架构的。而你当前版本的mplayer里面不支持alsa输出。
    用命令:./mplayer -ao -help得到的打印中:
    oss OSS/ioctl audio output
    mpegpes DVB audio output
    v4l2 V4L2 MPEG Audio Decoder output
    null Null audio output
    pcm RAW PCM/WAVE file writer audio output
    没有alsa输出可选。
    明白了上面的两种区别之后就有两种解决办法:其一是在你现有的内核版本中加入oss输出的支持,
    其二就是让mplayer支持alsa输出。在这里我选择了第二个解决方式。

    上述只是音频问题的解决,如果mplayer视频观看不正常,同理可用./mplayer -vo help查看
    当前的mplayer支持哪些视频播放模式,如果缺少某一种就在后叙编译的时候enable上


    先指定交叉编译器
    #echo PATH=/usr/local/arm/4.5.1/bin:$PATH
    #vi ~/.bashrc查看一下是否指定交叉编译器了
    #source ~/.bashrc使配置生效

    配置安装alsa-lib1.1.5
    #./configure --host=arm-none-linux-gnueabi --prefix=/usr/local/arm4.5-mplayer
    #make
    #make install

    配置安装alsa-utils1.1.5
    #./configure --host=arm-none-linux-gnueabi --prefix=/usr/local/arm4.5-mplayer --with-alsa-inc-prefix=/usr/local/arm4.5-mplayer/include --with-alsa-prefix=/usr/local/arm4.5-mplayer/lib --disable-alsamixer --disable-xmlto
    #make
    #make install


    配置安装zlib1.2.3
    执行如下操作:
    #./configure --prefix=/usr/local/arm4.5-mplayer
    修改Makefile中的如下内容的值如下:
    CC=arm-none-linux-gnueabi-gcc
    LDSHARED=arm-none-linux-gnueabi-gcc
    CPP=arm-none-linux-gnueabi-gcc -E
    AR=arm-none-linux-gnueabi-ar rc
    RANLIB=arm-none-linux-gnueabi-ranlib
    然后执行继续如下操作:
    #make
    #make install

    配置安装libid3tag0.15.1b
    执行如下操作:
    #./configure --host=arm-none-linux-gnueabi CC=arm-none-linux-gnueabi-gcc CPPFLAGS=-I/usr/local/arm4.5-mplayer/include LDFLAGS=-L/usr/local/arm4.5-mplayer/lib --prefix=/usr/local/arm4.5-mplayer
    上面的相关参数意义如下
    CPPFLAGS 添加一个自定义头文件路径
    LDFLAGS 添加一个自定义的库文件路径
    #make
    #make install

    配置安装libmad0.15.1b
    执行如下操作:
    #./configure --host=arm-none-linux-gnueabi CC=arm-none-linux-gnueabi-gcc --enable-fpm=arm --disable-debugging CPPFLAGS=-I/usr/local/arm4.5-mplayer/include LDFLAGS=-L/usr/local/arm4.5-mplayer/lib --prefix=/usr/local/arm4.5-mplayer
    #make
    #make install

    注:上诉所有库的安装不建议静态编译(将参数--enable-static ---disable-shared加上的话,库安装完成之后,就只生成静态库文件不生成动态文件)
    具体的configure配置命令可参考当前目录下,执行./configure -h查看

    make过程中可能会出现的错误:
    1
    注意:根据自己的错误提示来输入命令
    如果提示是t-ru.gmo的话,就用命令:touch alsaconf/po/t-ru.gmo
    如果提示是t-ja.gmo的话,就用命令:touch alsaconf/po/t-ja.gmo
    值得注意的地方是:如果还是报错,那就make clean一下
    避免之后make报错
    2
    cc1: error: unrecognized command line option “-fforce-mem”
    (其实这个错误是编译安装libmad时候引起的,audacity包含libmad)
    解决方式是:找到libmad configure之后的Makefile,并vi Makefile
    去掉129行"-fforce-mem"字符串,因为arm-eabi编译器都不支持这个选项,将其删除之后,就ok了
    3

    4
    5
    6

    配置安装mplayer1.1以上
    ./configure --cc=arm-none-linux-gnueabi-gcc --host-cc=gcc --target=arm-none-linux-gnueabi --disable-win32dll --disable-dvdread --disable-ivtv --enable-alsa --enable-static --enable-fbdev --disable-mencoder --disable-live --disable-mp3lib --enable-mad --language=zh_CN --disable-armv5te --disable-armv6 --extra-cflags="-I/usr/local/arm4.5-mplayer/include/ -DHAVE_ARMV8=0" --extra-ldflags="-L/usr/local/arm4.5-mplayer/lib/ -lz -lasound"
    make
    不需make install(没必要)
    make过程中可能会出现的问题:
    1
    Error:motion_comp_arm_s.S

    在libmpeg2/motion_comp_arm_s.S文件的最前面加上如下的内容:

    #ifndef HAVE_PLD
    .macro pld reg
    .endm
    #endif
    2
    vo_ivtv.c:79: error: storage size of ’sd’ isn’t known

    vo_ivtv.c:80: error: storage size of ’sd1′ isn’t known

    在./configure配置命令添加--disable-ivtv
    3
    undefined reference to `video_out_ivtv'

    在文件 file libvo/video_out.c, 找到
    #ifdef HAVE_DXR2
    extern vo_functions_t video_out_dxr2;
    #endif
    extern vo_functions_t video_out_dxr3;
    #ifdef HAVE_IVTV
    extern vo_functions_t video_out_ivtv;
    #endif
    edit it like this:
    #ifdef HAVE_DXR2
    extern vo_functions_t video_out_dxr2;
    #endif
    #ifdef HAVE_DXR3 //这一句是要添加的
    extern vo_functions_t video_out_dxr3;
    #endif //这句是要添加的
    #ifdef HAVE_IVTV
    extern vo_functions_t video_out_ivtv;
    #endif

    使用arm-linux-gcc 3.3.2编译mplayer可能会出现in.h头文件错误如下:

    /usr/local/arm/3.3.2/include/netinet/in.h:259: parse error before '(' token
    /usr/local/arm/3.3.2/include/netinet/in.h:259: parse error before "__u32"
    /usr/local/arm/3.3.2/include/netinet/in.h:260: parse error before '(' token
    /usr/local/arm/3.3.2/include/netinet/in.h:260: parse error before "__u16"
    /usr/local/arm/3.3.2/include/netinet/in.h:262: parse error before '(' token
    /usr/local/arm/3.3.2/include/netinet/in.h:262: parse error before "__u32"

    需要修改一下/usr/local/arm/3.3.2/include/netinet/in.h中,在 __BEGIN_DECLS 后面增加下述文字

    #undef ntohl
    #undef ntohs
    #undef htonl
    #undef htons
    4

    5
    6

    成功移植后的mplayer拷贝到arm板子执行,如果缺少什么库就去编译主机的/usr/local/arm4.5-mplayer/lib目录下找,拷贝到板子的/lib目录即可(拷贝时要注意软连接和硬链接)
    音频测试:./mplayer *.mp3/*.wma/...
    视频测试:./mplayer *.mp4/*.avi/... -fs

  • 相关阅读:
    二叉树中序遍历 2021.4.14
    简单题 好数对题目 2021.4.13
    2021.4.3 在排序数组中查找元素的第一个和最后一个位置
    力扣刷题记录2021.4.13 最富有客户的资产总量
    iOS开源项目阅读整理
    Missing iOS Distribution signing identity解决方案
    微信票选项目遇到的坑
    [转]从此爱上iOS Autolayout
    [转]iOS应用性能调优的25个建议和技巧
    iOS中用json接收图片的二进制流
  • 原文地址:https://www.cnblogs.com/cyyz-le/p/12555914.html
Copyright © 2011-2022 走看看