mplayer 交叉编译

IMX6ULL-QT项目之mplayer音乐播放器-交叉编译mplayer 在linux环境下安装mplayer后,打开ubuntu里的QT,QT安装的版本5.12.9,QT界面的图标基本都是正点原子收集的图片,实现方式参考B站里的教学 简单介绍mplayer命令: 按键操作: 音量减小:/、9 音量增大:*、0 上、下键: 前进、后退1分钟, 左键、右键:前进、后退10秒 mplayer Music/* 这个就是播放Music目录下的所有音乐,是按顺序播放的 命令: -shuffle 随机播放 -playlis...... 阅读详情

一、为支持mp3的解码,在交叉编译mplayer时,加上 –enable-mad,否则在make的时候出现了:找不到 mad.h 的错误。
1.交叉编译libmad
下载libmad包(libmad-0.15.1b.tar.gz);
打开一个终端,进入libmad的目录,输入配置命令:
./configure --enable-fpm=arm --host=arm-linux --disable-shared(这个选项就是说明要静态编译) --disable-debugging --prefix=/usr/local/Program/libmad0.15/
CC=arm-linux-gcc(要保证arm-linux-gcc的路径已经有 export过,否则给出完整路径。)
make
make install
这样就可以看到 /usr/local/Program/libmad0.15/ 目录下多了include和lib目录,这些就是libmad相关的库。

二、MPlayer 的移植

    在准备好LIBMAD库以后,就可以进行mplayer的移植了,先下载mplayer的源文件,再进行解压缩。

其中:mplayer版本:mplayer-export-2010-03-07 最新版

         交叉编译链:4.2.2

1、  在mplayer-1.0pre7 目录下建立一个setup.sh的文件,把configure配置放里面。命令:touch setup.sh , chmod 777 setup.sh

2、  编辑setup.sh ,在 setup.sh 里加入一行configure的命令,./configure --host-cc=gcc --cc=arm-linux-gcc --target=arm-armv6-linux --enable-static --prefix=/usr/local/software/mplayer --disable-win32waveout  --disable-dvdread --enable-fbdev --disable-mencoder --disable-live --disable-mp3lib --enable-mad --enable-libavcodec_a    后面去掉--with-extraincdir=/usr/local/Program/libmad0.15/include –with-extralibdir=/usr/local/arm/Program/libmad0.15/lib 其中-with…这个参数已经在上面说明了,--host-cc=gcc 必须要有,不然就编译不通过,因为有个文件需要GCC来生成,而不是arm-linux-gcc

注意:由于新下载的mplayer源代码在配置的时候--with-extraincdir   –with-extralibdir提示没有此配置选项,因此需手动添加libmad库的支持,我的解决方法是将/usr/local/Program/libmad0.15/include下文件直接拷贝到mplayer源代码中,而对于其下面的库libmad.a,则修改config.mak中在-lmad -L/usr/local/Program/libmad0.15/lib,然后执行下一步即可。(上面仅是本人做法,并不保证正确)

注意:由于版本原因,编译此版本时并未出现下面总结的错误,而是在libmpeg处出现:libmpeg2/motion_comp_arm_s.S:29: Error: selected processor does not support `pld [r1]' 但解决方法参照下面最后一个错误的解决方法。

三、  配置好以后就进行编译make,一切顺利。到此已经移植完成了。

 

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

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

          --enable-static
          是设定静态连接,不需要一堆乱七八糟的动态库,尤其对我们这些新手来说省了很多的麻烦。如果设置了这个参数就不用设置--prefix了,另外也不用执行make install。

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

         --disable-win32dll
          禁用win32动态链接库支持。在pre版本中该参数为

        --disable-dvdread
        禁用libdvdread.

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

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

        --disable-mencoder
        禁止编码功能。项目上不需要此功能,禁掉以缩小尺寸。而且听说在这里编译mencoder会有问题,听说而已,没试过。

        --disable-live
        禁止live 555流媒体。(不知道干啥用)

        --enable-libavcodec_a

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

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

        --with-extraincdir和-with-extralibdir
        指定libmad和mad.h的路径。mad的路径被添加到编译参数-I和-L后面,替换libmad后需要指定。

        注:在pre版本中需要指定--host-cc=gcc配置参数。用来编译一些需要在host上执行的中间文件的,如codec-cfg,切记不能缺少。但在rc2版本中该参数可以省略掉。

 

 

四、转载其他人遇到的问题

 

mplayer破坏.  
 修改源码:
    libavcodec/bitstream.h:181行 
     加入如下语句.
 -------------------------------------------------  
#if defined(ARCH_ARMV4L)
typedef  int32_t intptr_t ; /* Add by Andrew Huang*/
#endif
--------------------------------------------------- 
   否则将会有如下编译错误
   编译错误:
   arm-linux-gcc -I../libswscale -I../libavcodec  -DHAVE_AV_CONFIG_H -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_ISOC9X_SOURCE -I.. -I.. -I../libavutil -Wdisabled-optimization -Wno-pointer-sign -Wdeclaration-after-statement -I. -I.. -I../libavutil -Wall -Wno-switch -Wpointer-arith -Wredundant-decls -O4   -pipe -ffast-math -fomit-frame-pointer -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -DHAVE_CONFIG_H -I/usr/X11R6/include   -c -o cyuv.o cyuv.c
    cc1: warning: include location "/usr/X11R6/include" is unsafe for cross-compilation
In file included from mpegvideo.h:32,
                 from cyuv.c:38:
bitstream.h: In function ''put_bits'':
bitstream.h:233: error: ''intptr_t'' undeclared (first use in this function)
bitstream.h:233: error: (Each undeclared identifier is reported only once
bitstream.h:233: error: for each function it appears in.)
bitstream.h:233: error: expected '')'' before ''s''
bitstream.h: In function ''init_get_bits'':
bitstream.h:777: error: ''intptr_t'' undeclared (first use in this function)
bitstream.h:777: error: expected '')'' before ''buffer''
bitstream.h:778: error: expected '')'' before ''buffer''
make[1]: *** [cyuv.o] Error 1

 

1.修改源码 libavcodec/armv4l/dsputil_arm_s.S, motion_comp_arm_s.S
在其开始的加入
-------------------------
#ifndef HAVE_PLD
.macro pld reg
.endm
#endif
-------------------------
否则会造成如下编译错误,
arm-linux-gcc -I../libswscale -I../libavcodec  -DHAVE_AV_CONFIG_H -D_FILE_OFFSET                                              _BITS=64 -D_LARGEFILE_SOURCE -D_ISOC9X_SOURCE -I.. -I.. -I../libavutil -Wdisable                                              d-optimization -Wno-pointer-sign -Wdeclaration-after-statement -I. -I.. -I../lib                                              avutil -Wall -Wno-switch -Wpointer-arith -Wredundant-decls -O4   -pipe -ffast-ma                                              th -fomit-frame-pointer -D_REENTRANT -DHAVE_CONFIG_H -I/home/workspace/MPlayer/M                                              Player-1.0rc2/../output/linux_arm/include -I/usr/X11R6/include  -c -o armv4l/dsp                                              util_arm_s.o armv4l/dsputil_arm_s.S
cc1: warning: include location "/usr/X11R6/include" is unsafe for cross-compilat                                              ion
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] 

错误原因是pld指令只在armv5te以上版本有效,在2440(armv4l)无效

 预读取PLD指令
功能:cache预读取(PLD,PreLoad),使用PLD指示存储系统从后面几条指令所指定的存储器地址读取,存储系统可使用这种方法加速以后的存储器访问。

格式:
PLD[Rn,{offset}]
其中:
Rn         存储器的基址寄存器。
Offset     加在Rn上的偏移量。含义同3。2。3节第1条指令。

 

 

五、其他

http://blog.chinaunix.net/u3/105675/showart_2148571.html

ffmpeg,live555,mplayer交叉编译 一.ffmpeg的编译 1.从官网http://ffmpeg.org/下载 ffmpeg-2.0.tar.gz 2.解压 tar -zxvf ffmpeg-2.0.tar.gz  3.配置生成makefile ./configure --enable-cross-compile --cross-prefix=arm-none-linux-gnueabi- --arch=arm --tar 阅读详情

相关推荐

Mplayer-arm交叉编译

下载源码 http://www.mplayerhq.hu/MPlayer/releases/ 编译libmad 也可以不用libmad可以在configure时使用–disable-mad tar -xzvf libmad-0.15.1b.tar.gz -C . 解压到当前目录下,使用以下命令configure ./configure --enable-fpm=arm --host=arm-linux-gcc --disable-shared --disable-debugging --prefix=YOU

HEDGEHOGc7的博客 511

交叉编译mplayer

因项目需要,花了几天交叉编译mplayer,遇到很多坑,网上也参考了好多资料,总算编译好了,现记录一下:     一、交叉编译libmad     1.首先下载libmad,我下载的版本为:libmad-0.15.1b.tar.gz      2.解压,输入配置指令:     $sudo ./configure CC=/opt/gcc-linaro-arm-linux-gnueabihf-

zqxwce821的博客 2208

【iMX6q-Linux】---交叉编译 移植 Mplayer 到 ARM开发板 (方法一)

在编程的艺术世界里,代码和灵感需要寻找到最佳的交融点,才能打造出令人为之惊叹的作品。而在这座秋知叶i博客的殿堂里,我们将共同追寻这种完美结合,为未来的世界留下属于我们的独特印记。

秋知叶i 2405

Qt+MPlayer音乐播放器开发笔记(二):交叉编译MPlayer以及部署到开发板播放演示

在ubuntu上arm交叉编译MPlayer播放器,并部署到开发板播放音乐。

长沙红胖子 Qt・西安|省级科研团队从业背景,深耕双一流体系高精尖技术配套研发|剥离高精尖机理,沉淀高端特种行业领域 Qt 工程化落地经验|博文仅分享通用技术总结,输出公开普适工程思路。 3万+

Linux 下播放器开发:交叉编译 MPlayer

本指南提供了在 Linux 系统上交叉编译 MPlayer 以在嵌入式设备上运行的逐步说明。MPlayer 是一个功能强大的媒体播放器,支持各种视频和音频格式。本指南提供了在 Linux 系统上交叉编译 MPlayer 以在嵌入式设备上运行的详细说明。通过遵循这些步骤,开发人员可以创建定制的媒体解决方案,在资源受限的环境中运行 MPlayer。

走向CTO的路上... 941

交叉编译移植 Mplayer 到 ARM 开发板

这个过程涵盖了安装交叉编译工具链、获取 Mplayer 源代码、配置交叉编译环境、配置 Mplayer 编译选项、编译和安装 Mplayer,以及在 ARM 开发板上运行 Mplayer。你可以从 ARM 开发板的官方网站或其他渠道获取适用于你的开发板的交叉编译工具链,并按照说明进行安装。我们将通过交叉编译的方式生成可在 ARM 环境中运行的 Mplayer 可执行文件,并提供相应的源代码和步骤。安装完成后,你将在交叉编译工具链的安装目录中找到生成的 Mplayer 可执行文件。

FslzLua的博客 604

mplayer linux arm,【嵌入式】交叉编译移植 Mplayer 到 ARM开发板

一、基本信息1、移植环境①:ubuntu16.04②:iMX6Q开发板2、移植所需软件源码①:libmad libmad 下载②:mplayer mplayer下载③:百度网盘下载:链接:https://pan.baidu.com/s/1KM3VNY4RWhBKFsN4me8shg提取码:rds1二、移植Libmad①:版本选择:libmad-0.15.1b.tar.gz②:libmad准备工作进...

weixin_34365042的博客 790

Linux下播放器开发-交叉编译Mplayer

MPlayer是一款开源多媒体播放器,在主流的Linux、windows、Mac OS 都能运行,主要广泛用在Linux系统上; Mplayer不仅支持图形界面、也支持命令行播放。这篇文章就介绍如何将MplayerJ交叉编译移植到嵌入式开发板上运行,在命令行上正常的播放视频,LCD屏采用的帧缓冲驱动框架渲染图像。

1685

为IMX6 交叉编译Mplayer

Mplayer版本:MPlayer-1.3.0.tar.gz configure shell: #!/bin/sh ./configure \  --enable-cross-compile --prefix=/usr/local/freescale \  --cc=arm-none-linux-gnueabi-gcc  --ar=arm-none-linux-gnueabi-ar  --a...

oZhangBoWen的专栏 1144

mplayer1.4交叉编译.pdf

移植mplayer至开发板(GEC6818)

龙芯(Loongson) loongarch平台下的mplayer交叉编译

loongarch交叉编译MPlayer-1.5配置文件

mplayer linux arm,MPlayer arm-linux交叉编译

1\安装yasmsudo apt-get install yasm2\交叉编译zlibCC=arm-linux-gnueabihf-gcc./configuremakemake install3\编译mplayer使用以下命令交叉编译mplayer其中/usr/local为第三方库的安装路径(zlib等)./configure--disable-mencoder --disable-live --...

weixin_31838473的博客 305

STM32F103C8T6通过ESP8266连接阿里云物联网平台(附代码)

STM32F103C8T6连接阿里云物联网平台(1)—阿里云lot Studio控制 Web开发 分享一下自己使用stm32f103c8t6通过ESP_01模块连接阿里云物联网平台,实现温湿度上传和控制命令下达的过程,能力有限,用的是最简单的方法,如有错误,多多担待。 一、硬件选型 1、 stm32f103c8t6 2、ESP_01 wifi模块 3、其他 二、硬件连接 WSP_01 STM32F103C8T6 RXD PA2 TXD PA3 RES PA4 VCC 3.3

weixin_A13253323604 3万+

Mplayer交叉编译

Mplayer下载网址: http://www.mplayerhq.hu/MPlayer/releases/ 选择版本MPlayer-1.0rc3(rc3以上的版本使用相同的方式编译会出现闪屏现象,原因不详) 编译步骤: 1.检查、配置 ./configure –prefix=/home/lxy/build/mplayer-arm –cc=arm-linux-gcc –ar=

远方的小西瓜 1493

LabVIEW+数据库应用系列保姆级教程,第一篇数据库连接

目录LabVIEW连接数据库的方法连接MySQL连接Oracle,SQL Server,Access等 LabVIEW连接数据库的方法 1、创建udl(Universal Data Link)是通用数据连接文件。界面操作,简单快捷。 2、编写连接字符串。需要熟悉连接字符串的结构,容易出错。 3、其他… 本教程教你使用第1种方法,也是最简单、最常用的方法。 连接MySQL 1、在MySQL Installer内安装MySQL Connector/ODBC,建议安装32位(X86),如下图: 2、创建ODBC

wwplh5520370的博客 1万+

2.设置Salesforce开发环境

Salesforce DX:salesforce Developer Experience (salesforce开发人员体验)LWC:Lightning Web Component(注意首字母是大写的,是一个概念,小写的话有组件本身的含义)CLI:Command Line Interface(命令行界面)version control system (VCS):版本控制系统。

nihaixiao的博客 2195

mplayer 在 mingw 上的交叉编译

mplayer是比较成熟的开源播放器框架了,但是开发文档却是稀少的很,这一点与微软的directshow没办法比。当然mplayer是同时支持linux、windows、macos的;相反directshow根本就不能跨平台。   不过我们这里只说移植,至于开发可以看看我的另一篇文章播放器插件实现系列 —— mplayer   各位可以先看看mplayer的跨平台移植说明: http:/

luansxx的专栏 2588

保姆级教程:在CentOS 8上用libvirt + QEMU/KVM搭建ARM64虚拟机(含UEFI配置与常见坑点)

本文提供在CentOS 8上使用libvirt + QEMU/KVM搭建ARM64虚拟机的详细教程,涵盖UEFI配置与常见问题解决方案。通过环境准备、特殊配置要点、UEFI固件安装等步骤,帮助用户在x86架构服务器上高效运行ARM64虚拟化环境,特别适合开发测试与跨平台应用场景。

weixin_30292745的博客 129

mplayer交叉编译configure选项设置

./configure --cc=arm-linux-gcc --target=arm-armv4l-linux --enable-static --prefix=/tmp/mplayer --disable-win32  --disable-dvdread --enable-fbdev --disable-mencoder --disable-live --disable-mp3lib   --

Bop to the top! 3376

Halcon图片拼接避坑指南:特征点匹配常见问题与解决方案

本文深入解析Halcon图片拼接中特征点匹配的常见问题与解决方案,涵盖特征点提取、匹配优化及变换模型选择等关键环节。针对工业视觉检测中的拼接错位、重影等问题,提供参数调优、图像预处理和算法选择等实战技巧,帮助开发者高效避坑并提升拼接精度。

weixin_28694169的博客 198

深度解析:企业AI效能度量框架的核心指标与落地路径,收藏级干货

资源成本:GPU利用率从31%提升到75%,云费用减少了50万元/年;工程效率:模型迭代周期从2周缩短到3天,部署成功率从70%提升到95%;模型性能:CTR从8%提升到12%,CVR从3%提升到4.5%;业务价值:增量收入达200万元/月,ROI达180%;伦理风险:推荐结果的差异影响比从0.7提升到0.9,用户投诉率下降了30%。现在,当CEO再问「AI项目值多少钱?

AI天才研究院 1807
上一篇: Qt多线程学习-用例子来理解多线程
下一篇: 视音频
futurepeter
博客等级 码龄19年 8粉丝 1原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值