带音频播放的MPlayer播放器在ARM上的移植笔记

news2024/9/24 7:24:56

前言

mplayer想要播放带音频的视频文件,需要依赖alsa-lib和zlib,所以交叉编译mplayer前还需要先编译alsa-lib和zlib

一、alsa-lib

        alsa-lib 是 ALSA 提供的一套 Linux 下的 C 语言函数库,需要将 alsa-lib 移植到板卡上,这样基于 alsa-lib 编写的应用程序才能成功运行

        如果想不用mplayer,直接使用alsa测试音频,还需要移植 alsa-utils,alsa-utils 包含了一些用于测试、配置声卡的工具,譬如 aplay、arecord、alsactl、alsaloop、alsamixer、amixer 等,在开发板出厂系统上可以直接使用这些工具,这些应用程序也都是基于 alsa-lib 编写的。

aplay 是一个用于测试音频播放功能程序,可以使用 aplay 播放 wav 格式的音频文件,需要注意的是,aplay 工具只能解析 wav 格式音频文件,不支持 mp3 格式解码

alsamixer 是一个很重要的工具,用于配置声卡的混音器,它是一个字符图形化的配置工具

1、下载源码

下载链接:

AlsaProject (alsa-project.org)

Advanced Linux Sound Architecture (ALSA) project · GitHub

选用版本:1.2.2

2、linux下解压

tar -vxjf alsa-lib-1.2.2.tar.bz2

3、config

注意 alsa-lib 编译过程中会生成一些配置文件,而这些配置信息的路径都是绝对路径,因此为了保证 ubuntu 和开发板根文件系统中的路径一致!需要在 ubuntu 和开发板中各创建一个路径和名字完全一样的目录。路径为 /usr/app_install/common/lib/alsa

./configure --host=arm-linux-gnueabihf --prefix=/home/wwyc/srv/winShared/lib-install/alsa --with-configdir=/usr/app_install/common/lib/alsa

--prefix:安装目录

--with-configdir:配置文件目录

3、编译安装

make

sudo make install //因为配置文件会生成到/usr目录下,所以需要root权限

4、遇到问题

解决办法:

二、alsa-utils(可选)

1、下载源码

下载链接:

AlsaProject (alsa-project.org)

Advanced Linux Sound Architecture (ALSA) project · GitHub

选用版本:1.2.2

2、linux下解压

tar -vxjf alsa-utils-1.2.2.tar.bz2

3、config

./configure --host=arm-linux-gnueabihf --prefix=/home/wwyc/srv/winShared/lib-install/alsa-utils --with-alsa-inc-prefix=/home/wwyc/srv/winShared/lib-install/alsa/include/ --with-alsa-prefix=/home/wwyc/srv/winShared/lib-install/alsa/lib/ --disable-alsamixer --disable-xmlto

--prefix:安装目录

--with-alsa-inc-prefix:alsa头文件路径

--with-alsa-prefix:alsa库路径

--disable-alsamixer:禁止编译alsamixer工具

4、编译安装

make

sudo make install

5、遇到问题

configure: error: No linkable libasound was found.

解决办法:

config前先导出先环境变量, source /etc/profile

三、zlib

1、下载源码

下载链接:zlib Home Site

选用版本:1.2.11

2、linux下解压

tar -vxzf zlib-1.2.11.tar.gz

3、config

CC=arm-linux-gnueabihf-gcc LD=arm-linux-gnueabihf-ld AD=arm-linux-gnueabihf-as ./configure --prefix=/home/wwyc/srv/winShared/lib-install/zlib

4、编译安装

make

make install

完成后会在安装目录下生成如下文件

四、mplayer

1、下载源码

下载链接:Index of /MPlayer/releases

选用版本:1.4

2、linux下解压

tar -vxzf MPlayer-1.4.tar.gz

3、config

./configure --cc=arm-linux-gnueabihf-gcc --host-cc=gcc --target=arm-linux-gnueabihf --disable-ossaudio --enable-alsa --prefix=/home/wwyc/srv/winShared/lib-install/mplayer --extra-cflags="-I /home/wwyc/srv/winShared/lib-install/zlib/include -I /home/wwyc/srv/winShared/lib-install/alsa/include" --extra-ldflags="-L/home/wwyc/srv/winShared/lib-install/zlib/lib -Iz -L/home/wwyc/srv/winShared/lib-install/alsa/lib -lasound" --enable-fbdev --disable-mencoder

--extra-cflags:指定 zlib 和 alsa-lib 的头文件路径

--extra-ldflags:指定 zlib 和 alsa-lib 的库文件路径

配置完成以后打开 config.mak 文件,找到“INSTALLSTRIP = -s”这一行,取消掉后面的“-s”,否则“make install”命令会失败!

4、编译安装

make

make install

完成后会在安装目录下的bin目录下生成 mplayer 工具

五、移植到ARM

1、将alsa-lib编译生成的lib库和配置文件 全部拷贝到板卡/usr/lib 路径下,注意软连接,需要生成tar包拷贝到设备后再解压缩

2、将alsa-utils编译生成的bin目录下二进制工具拷贝到板卡 /usr/bin 路径下,使用aplay可以直接播放 wav格式的音频文件。

3、将 mplayer 编译生成的bin程序拷贝到板卡/usr/bin 路径下,使用mplayer就可播放带音频的视频文件了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/131972.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

人话解读LGPLv3

大家都知道:你调用了 LGPL的库,你还是可以开发一个闭源程序。这就说明,LGPL比GPL要宽松。但并不像想象的那么简单。一、为什么会有LGPL作为GPL的发明人Stallman,是自由软件的死忠坚定维护者,为什么还允许让别人用了自己…

2022年终总结-2023新年快乐

这是学习笔记的第 2446篇文章新的一年了,还是得总结点东西,本来想盘一下自己买了多少书,做了哪些有意义的事情,想想我还是自己先慢慢盘吧,发不发出来另说,还是希望写点自己的感悟,也希望对大家有…

LabVIEW共享变量

LabVIEW共享变量 创建共享变量 要创建共享变量,必须先打开一个LabVIEW项目。在项目浏览器窗口中,右键单击终端、项目库或项目库中的文件夹,从快捷菜单中选择新建(New) 变量(Variable),打开共享变量属性(Shared Variable Proper…

dubbo源码实践-SPI扩展

1 概述 SPI的官方文档说明:Dubbo SPI | Apache Dubbo SPI 全称为 Service Provider Interface,是一种服务发现机制。SPI 的本质是将接口实现类的全限定名配置在文件中,并由服务加载器读取配置文件,加载实现类。这样可以在运行时&…

我的2022总结

博客记录 踏石留印 抓铁有痕 使用csdn写博客,发帖子,帮助网友回答问题。都是实实在在满足了学习,交流的需求 这是我自己使用 CSDN 各种功能记录: 工作方面: 年初参与了公司的一个产品,主要负责串口服务…

Allegro上如何计算阻抗操作指导

Allegro上如何计算阻抗操作指导 Allegro上同样可以快捷的进行阻抗计算,免去了用第三方软件计算的麻烦,以下图为例 具体操作如下 选择X-section在层叠中把每个层的Dielectric Constant填写正确,即板材的Er值

01月份图形化二级打卡试题

活动时间 从2023年 1月1日至1月21日,每天一道编程题。 本次打卡的规则如下: (1)小朋友每天利用10~15分钟做一道编程题,遇到问题就来群内讨论,我来给大家答疑。 (2)小朋友做完题目后&…

阿里云迎来新主帅,张勇将交出怎样的答卷?

‍‍数据智能产业创新服务媒体——聚焦数智 改变商业岁末年尾,回顾过去展望新篇之际,阿里巴巴集团于29日通过两封邮件宣布了组织架构的调整。以“沉稳内敛”著称的张勇,在解决公司问题时,却尽显雷霆手段。敢于作出不完美的决定在…

【算法】静态单链表、双链表、单调栈与单调队列

文章目录1.单链表2.双链表3.单调栈4.单调队列1.单链表 考虑到效率问题,如果每次都去new结点效率比较慢,平时做题时不采用动态:在有严格的时间要求的环境中,不能频繁使用new操作,new的底层涉及内存分配,调用构造函数,指…

2023创业可以做什么项目,适合新手的六个创业项目推荐

大家好,我是蝶衣王的小编 ​2022年已经进入最后一天了,明天就要步入2023年,个人感觉,明年注定是不平凡的一年,疫情解封,经济生产逐渐恢复,明年开始,创业或者做副业的人肯定会越来越…

视频分割很简单,教你方法三分钟搞定视频剪辑

很多朋友不知道怎么分割视频,今天小编就分享怎么在电脑上分割视频的方法,使用媒体梦工厂操作起来不难,新手小白也能轻松学会,一起接着往下看吧。 第一步,开始剪辑之前,小编准备了多段视频用于演示分割效果&…

【金猿案例展】某大型国有银行——智慧金融产业大脑建设

‍拓尔思案例本项目案例由拓尔思投递并参与“数据猿年度金猿策划活动——《2022大数据产业年度创新服务企业》榜单/奖项”评选。‍数据智能产业创新服务媒体——聚焦数智 改变商业该银行为提高金融领域产业经济分析能力,建设智慧金融产业大脑,通过投融资…

计算机组成原理【1】

目录 考点1:硬件发展———————————————————————————— 一.计算机硬件的基本组成 1.早期冯诺依曼机 (1)冯.诺依曼计算机的特点: 2.现代计算机的结构 3.总结图 二.各个硬件的工作原理 1.寄存器MAR,MDR 2.主存…

Redis 如何解决内存占用过大、不释放的问题

错误日志 通过 redis.log 可以看到错误日志如下:Cannot allocate memory 15602:M 30 Dec 2022 17:39:09.988 * RDB memory usage when created 19775.56 Mb 15602:M 30 Dec 2022 17:39:44.766 # Done loading RDB, keys loaded: 529954, keys expired: 26. 15602:…

基于长短期记忆网络和凸优化算法的综合智能电网的可再生能源预测(Python代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

string(四)————底层实现

目录 引言 外层包装 成员变量设计 接口实现 引言 在之前的博客中我简单介绍了string的相关使用方法和接口,现在我们自己来模拟实现一下它的底层(注:不同编译器底层实现不同,这里只是其中一种的实现)。 外层包装 …

Allegro如何在PCB上查看焊盘信息操作指导

Allegro如何在PCB上查看焊盘信息操作指导 在做PCB设计的时候需要查看焊盘的信息,Allegro上支持直接在PCB上查看焊盘的信息,如下图 具体操作如下 选择Tools-Pad stack选择Modify Design Padstack

【漏洞复现】Django SQL注入漏洞 (CVE-2022-28346)

文章目录一、简介二、漏洞概述三、漏洞影响版本四、漏洞分析五、漏洞复现六、修复方法一、简介 Django是用Python开发的一个免费开源的Web结构,几乎包括了Web使用方方面面,能够用于快速建立高性能、文雅的网站,Diango提供了许多网站后台开发…

pcl 姿态变换 之 旋转平移

一、简介 最近在做一个点云的项目,姿态的变换是一个很重要的环节,从数学上需要彻底理解这些东西之前一直在使用,但是没有系统的总结过,接着2023年元旦的三天时间好好学习一下,然后在同事面前说自己是数学系的很丢人啊…

【MySQL进阶】从计算机层面看索引凭什么让查询效率提高这么多?

【MySQL进阶】从计算机层面看索引凭什么让查询效率提高这么多? 文章目录【MySQL进阶】从计算机层面看索引凭什么让查询效率提高这么多?磁盘IO和预读:索引是什么?BTree索引BTree索引让我们先来了解一下计算机的数据加载。磁盘IO和预…