基于嵌入式linuxMP4播放器---直接用
基于嵌入式Linux的MP3播放器设计
1. 2 MP3 的 Freame 格式
每个 Frame 都有一个帧头 , 长度是 4 BYTE ( 32 bit ) , 帧 头后面可能有 2 个字节的 CRC 校验 ,这 2 个字节是否存在 取决于 FRAMEHEADER 信息的第 16 bit : 为 0 则帧头后面无 校验 , 为 1 则 有 校 验 , 校 验 值 长 度 为 2 个 字 节 , 紧 跟 在
[2 - 8 ]
可编码之最大值 = 15 + 2linbits
(1)
在编码过程中 , 首先找到所要编码区域样值的最大 值 ,并依次查询各个霍夫曼码表 , 直到该码表能够对这一 最大值进行编码为 n ,然后计算用该码表进行编码所需的 比特数 ; 再尝试相同编码值域范围的另一些码表 , 找到最 小比特数需求的码表 ,最后进行编码 . 根据编码特点 ,Huffman 代码的Linux 的 MP3 播放器设计
王森林 ,庄圣贤
( 西南交通大学 电气工程学院 ,成都 610031)
Ξ
摘要 :设计了一种应用于嵌入式系统的 MP3 播放器 . 该播放器基于嵌入式 Linux 操作系统 、 应用 ARM 平台 . 介绍了 MP3 文件的编码原理 ,论述了解码过程及关键算法 ,并实现其在 ARM 平台的运 行 . 该播放器除能够播放 MP3 音乐外 ,还具有多国语言支持 、 按键控制 、 以及歌词同步显示等功能 . 关 键 词 :嵌入式 Linux ;MP3 ; 编码原理 ; 解码算法 中图分类号 :TP334. 3 文献标识码 :A 文章编号 :1671 - 0924 (2007) 03 - 0065 - 04
Wi =
基于Linux的MiniGUI线程动画编程方法
基于Linux的MiniGUI线程动画编程方法摘要:本文提出了在MiniGUI平台中使用Linux线程技术进行动画编程的基本实现方法。
通过该方法可以使多个个体按照各自的运动规律在显示屏上自由移动,从而实现基本的动画效果。
本文为基于嵌入式Linux平台的游戏动画、动态模拟等应用领域提供了切实可行的实现思路和方法。
关键词:MiniGUI 线程动画0 引言在本世纪初,嵌入式系统应用技术得到了飞速发展。
在工业控制、医疗设备军事、智能家电、娱乐设备等领域都可以看到嵌入式系统的影子。
随着电子计算技术和制造技术的快速发展,各种集成可视化图形操作界面的嵌入式设备更是层出不穷,大大增强了嵌入式系统的使用性能。
本文介绍的是在MiniGUI平台上使用Linux提供的多线程技术进行动画编程的基本实现方法,这为需要实现动画界面的手机游戏、MP4播放器等嵌入式娱乐设备提供了切实可行的实现思路和编程方法。
因此本文具有较高的使用价值和应用前景。
1 MiniGUI简介MiniGUI是一款轻量级嵌入式图形系统(GUI),由北京飞漫软件技术有限公司研发和发布。
MiniGUI具有体积小、运行效率高、可配置、移植性好的优点。
MiniGUI具有完善的窗口机制和稳定的消息驱动机制。
为了更好得适应复杂的嵌入式系统应用环境,MiniGUI提供了Threads、Processes、MiniGUI-Standalone三种运行模式。
这三种模式分别适用于普通多任务嵌入式操作系统、具有完整桌面操作系统特性的嵌入式操作系统、单任务操作系统应用环境。
目前,MiniGUI已经被广泛应用于工业医疗控制、仪器仪表、消费电子、通讯设备等领域。
MiniGUI提供了功能强大的图形设备接口GDI,用以在显示屏上进行各种图形图像和文本文字的输出。
GDI有力地支持了基于嵌入式平台的图形图像界面编程。
2 Linux多线程机制介绍在多任务操作系统中,进程是最小的资源分配单位。
也就是说,每个进程所占用的资源空间是独立的。
Linux下7款最佳的开源视频播放器
另一个令人印象深刻的开源视频播放器(从技术上讲,是视频播放器引擎)。 MPlayer可能不 会为您提供直观的用户体验,但它支持各种输出驱动程序和字幕文件。
与其他播放器不同,MPlayer不提供有效的GUI(它具有一个GUI,但不能按预期工作)。 因 此,您想使用终端来播放视频。 即使这不是一个流行的选择-它也可以工作,并且有几个受(或 基于)MPlayer启发但带有GUI的视频播放器。 如何安装MPlayer? linuxidc@linuxidc:~/$ sudo apt install mplayer mplayer-gui
内置编解码器 定制选项 跨平台 支持每种视频文件格式 扩展可用于增加功能
VLC Media Player无疑是最受欢迎的开源视频播放器。 不仅限于Linux,而且它是每个平台(包 括Windows)的必备视频播放器。 这是一个非常强大的视频播放器,能够处理各种文件格式和编解码器。 您可以使用外观自定义 外观,并借助某些扩展功能来增强功能。 还存在其他功能,如字幕同步,音频/视频过滤器等。 如何安装VLC? 您可以从软件中心在Ubuntu中轻松安装VLC或从官方网站下载。 如果您使用的是终端,则需要按照官方资源按照要求安装组件。 要安装播放器,只需输入: linuxidc@linuxidc:~/$ sudo apt install vlc
3、 SMPlayer
主要亮点:
支持所有主要视频格式 内置编解码器 跨平台(Windows和Linux) 播放无广告的YouTube视频 Opensubtitles整合 UI自定义可用 基于MPlayer 如前所述,SMPlayer使用MPlayer作为播放引擎。因此,它支持多种文件格式。除了所有基本 功能,它还使您可以从视频播放器中播放YouTube视频(摆脱烦人的广告)。 与VLC相似,它与编解码器一起提供,因此您无需担心找到编解码器并进行安装,除非有特定 需求。 如何安装SMPlayer? SMPlayer应该在您的软件中心中可用。但是,如果要使用终端,请输入以下内容: linuxidc@linuxidc:~/$ sudo apt install smplayer
基于嵌入式ARM-Linux的播放器的设计与实现
基于嵌入式ARM-Linux的播放器的设计与实现摘要随着21世纪的到来,人类进入了PC时代。
在这一阶段,嵌入式技术得到了飞速发展和广泛应用。
由此,本文提出了一种基于嵌入式ARM-Linux的播放器设计与实现的方案。
本文首先详细分析了ARM体系结构,研究了嵌入式Linux操作系统在ARM9微处理器的移植技术,包括交叉编译环境的建立、引导装载程序应用、移植嵌入式Linux内核及建立根文件系统,并且实现了嵌入式Linux到S3C2410开发板的移植。
由于嵌入式系统本身硬件条件的限制,常用在PC机的图形用户界面GUI系统不适合在其上运行。
为此,本文选择了Minigui作为研究对象,在对其体系结构等方面进行研究基础上,实现了Minigui到S3C2410开发板的移植,完成了嵌入式图形用户界面开发,使得系统拥有良好的操作界面。
对于播放器,本文实现了Linux系统下的通用媒体播放器—Mplayer到S3C2410开发板的移植。
通过对音频数据输出的研究,解决了Mp1ayer播放声音不正常的问题,实现了一个集音乐和视频播放于一体的嵌入式多媒体播放系统。
最后,总结了论文所做的工作,指出了嵌入式播放器所需要进一步解决和完善的问题。
关键词:嵌入式ARM-Linux; S3C2410; Mplayer; GUI界面; MiniguiPlayer Designing and Implement Based On Embedded ARM-LinuxAbstractAlong with the 21st century arrivals, the humanity enters the post PC time. In this stage, embedded technology gets rapidly developed and widely used. So, this paper aims to design a player based on embedded ARM-Linux.First, in this paper, ARM architecture and the characteristic are analyzed in detail. The emphasis of the study is put on the porting techniques of embedded Linux operation system based on the ARM9 micro-processor, which include setting cross complier、transplanting Bootloader、transplanting embedded Linux kernel and setting root file system; Furthermore, implement the technique of transplanting Embedded Linux to S3C2410 board.GUI (Graphical User Interfaces) systems which are supported by normal PCs cannot run well on the embedded systems, just because of the restriction of the hardware of embedded devices. So, this paper selects Minigui as research object. Based on the Minigui architecture and its other aspects, the technique of transplanting Minigui to S3C2410 board is given in detail, and then an embedded GUI system is established and it also makes the handle interface friendly.About the player, this paper implements transplanting the universal player on Linux-Mplayer to S3C2410 board. By learning of audio data, it solves the problem of sound abnormality, and achieves an embedded multimedia system which could play audio and video files.Key words: Embedded ARM-Linux; S3C2410; Mplayer; GUI interface; Minigui目录摘要 (I)Abstract ........................................................... I I 目录.............................................................. I II 第一章绪论.. (1)1.1系统研究背景 (1)1.1.1 多媒体播放器与嵌入式系统 (1)1.1.2 嵌入式多媒体播放器国内外发展现状 (1)1.2 嵌入式处理器 (3)1.3 嵌入式系统 (4)1.3.1嵌入式系统的概述 (4)1.3.2 嵌入式系统的选择 (5)1.4 本文的意义和主要工作 (7)第二章系统软硬件平台的搭建 (8)2.1 硬件开发平台的介绍 (8)2.1.1 核心板 (8)2.1.2 外设板 (8)2.1.3 设计所用硬件介绍 (9)2.2 硬件平台的设计方案 (9)2.2.1 核心板设计 (9)2.2.2 外设电路设计 (14)2.3 嵌入式软件开发环境 (15)2.3.1 引导装载程序 (16)2.3.2 宿主机开发环境配置 (17)2.3.3 交叉开发环境的建立 (18)2.3.4 内核的编译 (18)2.3.5 烧制内核映像和文件系统 (20)2.4 嵌入式图形用户界面的实现 (20)2.4.1 图形用户界面minigui的简介 (20)2.4.2 MiniGUI在S3C2410开发板上的移植过程 (21)第三章 Mplayer的移植 (25)3.1 Mplayer的简介 (25)3.2 Mplayer的移植 (25)3.2.1 安装交叉编译工具及解压源代码 (25)3.2.2 编译Mplayer (25)3.3 调试 (27)第四章嵌入式播放器Mplayer的设计 (31)4.1 播放器的工作流程 (31)4.2 播放器的逻辑结构 (31)4.3 Mplayer播放器的目录文件组织结构 (32)4.4 播放器对解码器和输出设备的管理方式 (34)第五章总结与展望 (36)5.1 本文主要完成的工作及结论 (36)5.2 完善与展望 (36)致谢 (37)参考文献: (38)第一章绪论1.1系统研究背景从上世纪末开始,随着计算机和电子技术的发展走上快车道,便携式电子设备,诸如智能手机,个人电子助理(PDA)的运算存储能力和通信能力都得到了长足的进步,便携式设备的用户界面也变的越来越友好,从早期的只能显示单色文字的LED,发展到现在大尺寸6万色彩色液晶屏幕。
mp4原理
MP4播放器的工作原理、底层系统、硬件架构和芯片方案等收藏一、MP4播放器的概念顾名思义,MP4播放器是一个能够播放MPEG4文件的设备,它可以叫做PVP(Persomal Video Player,个人视频播放器),也可以叫做PMP(Portable Media Player,便携式媒体播放器)。
现在对MP4播放器的功能没有具体界定,它除了看视频的基本功能外还支持音乐播放、浏览图片,甚至部分产品还可以上网。
MP4播放器产品范围比较广,根据是否采用液晶屏来看,有带液晶屏幕的MP4播放器,也有不带屏幕的MP4播放器,这种不带屏幕的MP4播放器同样支持VOB、DAT、AVI和MPEG4格式的文件播放,由于没有液晶屏幕,用户必须将它和电视连接才能看视频影像,通常这种不带液晶屏幕的MP4播放器也称为多媒体硬盘,这种设备通常都具有数码伴侣功能。
根据采用的存储介质来分,可分为闪存型MP4播放器和硬盘型MP4播放器,闪存型MP4播放器采用闪存芯片作为存储介质,具有功耗低、价格便宜的优点。
目前视频MP3播放器也开始火起来了,也许你会问,视频MP3播放器也可用来看视频,那它和MP4播放器有什么不同呢?其实视频MP3播放器和MP4播放器最大的区别除了采用的芯片方案不同外,支持的视频格式也是不一样的,或者说文件的压缩方式不一样。
但低端的闪存MP4播放器和高端的视频MP3播放器的区别不很明显,一些厂商也因此把屏幕较大的视频MP3播放器称为MP4播放器,让人弄不明白。
根据习惯,对有屏幕的MP4播放器来说,它们和视频MP3播放器最直观的区别就是MP4播放器的屏幕较大,一般在2英寸以上,而视频MP3播放器的屏幕一般在2英寸以下。
二、MP4的硬件架构与MP3播放器相比,MP4播放器的结构要复杂得多,因为MP4播放器需要性能强大的CPU或DSP、MCU芯片,以便进行视频的解码编码处理,并对LCD及USB接口等周边组件提供支持。
目前,推出MP4解决方案的半导体供应商多达十几家,这些解决方案大致可分为四类:一类是以德州仪器(Ti)、飞利浦为代表的基于CPU+DSP(Digital Signal Processor,数字信号处理器)芯片的解决方案;一类则是以Intel和AMD为代表的基于通用CPU的解决方案;第三种则是以飞思卡尔(Freescale)及深圳安凯为代表的基于MCU (Micro Control Unit,微控制器)芯片的解决方案;第四种是基于双CPU的解决方案。
基于MPlayer的嵌入式媒体播放器设计
“嵌入式信息系统课程设计”任务书题目3/8基于MPlayer的嵌入式媒体播放器设计主要内容MPlayer(Movie Player)是Linux 上一款非常优秀的开放源代码视频播放器,自带解码库,也可以通过外挂解码库以支持播放更多格式的视频文件或流媒体,目前MPlayer支持绝大多数主流标准视频格式,如MPEG、VOB、A VI、OGG、VIVO、ASF/WMV、QT/MOV、FLI、RM、NuppelVideo、yuv4mpeg、FILM、RoQ等。
本设计主要内容是在基于PXA270的嵌入式系统中实现MPlayer移植,测试其媒体播放功能,进而编写基于QT/E的嵌入式图形操作界面,实现图形化操作。
设计要求基本要求:1、移植MPlayer,实现PXA270平台上的本地媒体播放(解码);2、播放mms或rtsp协议的流媒体视频节目。
扩展部分:选作1个或多个功能,也可以自行设计其它扩展功能。
1、设计图形操作界面;2、扩展IPv6网络流媒体播放;3、实现视频编码功能,将视频压缩成MPEG4格式。
主要仪器设备1、PXA270嵌入式开发系统1套2、计算机1台,安装Linux操作系统及arm-linux交叉编译工具3、视频扩展模块或USB摄像头1个4、网线2根,IP地址2个课程设计进度计划(起止时间、工作内容)本课程设计共安排8个题目,这是其中题目之一。
每班2至6人为1个小组,1人1套设备,每组选作不同的题目。
3个班分共分3批,每批最多35人。
整个课程设计共3周折合48学时,具体进度如下:第1周掌握构建嵌入式Linux开发环境及开发应用程序的基本方法;理解所选题目要求,学习相关知识,搭建相应软件和硬件环境;第2周完成基本要求,移植MPlayer,播放本地视频文件,并实现流媒体播放功能;第3周进一步完善功能并进行扩展要求设计,现场检查、答辩;课程设计期间的其它时间实验室也一直开放,需要实验的同学在遵守实验室管理规定的条件下可以随时进行实验。
基于FFMPEG库的嵌入式媒体播放器的开发
中南民族大学硕士学位论文基于FFmpeg库的嵌入式媒体播放器的开发姓名:***申请学位级别:硕士专业:通信与信息系统指导教师:***2011-04-15中南民族大学硕士学位论文摘要目前,国家“十二五”规划关于发展新兴战略性产业的相关政策中已经明确提出将加快三网融合的推进工作和实施试点方案,三网融合的思想正深入通信行业,对各种嵌入式终端的要求进一步提高,嵌入式终端的软件开发显得尤为重要。
对于家庭媒体设备(高清数字电视机顶盒、家庭媒体网关等)而言,嵌入式媒体播放器所支持的流媒体格式需要也更加全面。
针对目前市场上机顶盒对各类媒体格式的支持还不够全面的问题,本文以低成本的MIPS架构作为硬件平台,以小巧的ITRON为操作系统,提出了一种基于FFmpeg库的嵌入式媒体播放器的开发方案,不仅支持流行的MP3,DivX等音视频格式,还支持在优酷、土豆、搜狐等各大视频网站中占重要地位的FLV,MP4等视频文件格式,为家庭媒体设备提供了更全面的媒体功能。
基于FFmpeg库的嵌入式媒体播放器采用NEC的µPD61326主芯片,该芯片具有高性能的MIPS32 4KEc CPU核,32位RISC MIPS架构,支持MIPS-I和MIPS-II 的指令集。
在该MIPS架构的开发板上,嵌入了当前日本颇为流行的ITRON操作系统,位于操作系统之上的适配层为系统提供API接口。
在适配层之上,本文引入了FFmpeg库作为中间件,并在掌握它的工作原理及流程的基础上对其进行有针对性的剪裁,使其在保证用户所需功能的同时,尽量减少占用的内存空间。
另外,对库进行封装,并预留了编程接口以供上层应用设计开发。
在嵌入式媒体播放器的软件设计部分,为了降低开发难度,使开发流程结构化,本文采用了模块化设计方案,将整个设计分为四个模块:文件解析模块、Demux 模块、解码模块以及播放器界面模块。
文件解析模块用于读取文件并对文件进行解析和播放控制,利用FFmpeg库预留出的API接口来完成此模块的设计;Demux 模块利用Demux设备和Demux线程,将文件解析模块输出的流媒体信息中的音频流和视频流分开;解码模块利用NEC芯片的硬件解码器分别对音频流和视频流进行解码;播放器界面模块实现与各模块接口的交互与数据传递,扫描并读取音视频播放文件,并接收用户响应,使用户能够通过摇控或按键来对播放器进行操作。
嵌入式系统课程设计_音乐播放器
课程设计说明书课程设计名称:嵌入式系统课程设计课程设计题目:音乐播放器学院名称:信息工程学院专业:计算机科学与技术班级:090451 学号:09045102 :评分:教师:2012年11月30 日摘要: (1)第一章课程设计要求和容 (2)1.1设计目标和要求 (2)1.2 设计容 (2)第二章开发工具介绍 (3)第三章系统设计与实现 (5)3.1 宿主机开发环境配置 (5)3.2功能分析与方案论证 (5)3.2.1 功能分析 (5)3.2.2 可行性分析 (5)3.3 需求分析 (6)3.4详细设计 (6)3.4.1 系统的功能模块设计 (6)3.4.2 界面窗口模块详细设计与实现 (7)3.4.5 MP3 文件播放控制模块详细设计与实现 (10)3.4.6 主要程序文件(代码见附录) (12)第四章调试分析 (12)第五章设计总结 (13)主要参考文献: (13)附录(流程图、源代码): (14)附录1 相关流程图 (14)附录2 系统运行效果 (16)附录3 程序源代码 (17)音乐播放器摘要:随着用户要求的不断提高,越来越多的嵌入式设备使用功能强大、价格低廉的嵌入式Linux作为操作系统并开始采用较为复杂的图形用户界面。
Qt以其强大的功能、良好的可移植性逐渐成为一种被广泛使用的GUI系统。
正是由于嵌入式操作系统及其相应图形用户界面的不断发展,嵌入式软件的开发显得越来越重要,其中嵌入式媒体播放器由于能够满足人们的视听享受已经逐渐成为了系统中不可或缺的重要组成部分,在嵌入式系统上开发媒体播放器已经成为了一个技术热点,当前许多嵌入式产品中都包含媒体播放器。
因此在基于Qt的嵌入式Linux系统中实现媒体播放器具有深刻的意义和实用价值。
本次课程设计运用Qt技术在Linux下进行GUI设计,以一个图形界面为例,运用QT creator软件编程,实现一个简单的音乐播放器。
此播放器能够播放本地的音频文件,在功能方面,它具备一些基本的音乐操作处理功能,如暂停、播放、音量调节、停止等,此外,界面还能显示歌曲信息,比如显示播放列表,播放的时候能够通过按钮来实现歌词显示的功能。
嵌入式Linux系统中图片解码和显示的高效实现方法
嵌入式Linux系统中图片解码和显示的高效实现方法嵌入式Linux系统在各种应用场景中得到了广泛的应用,其中包括图片解码和显示。
在嵌入式设备上高效地实现图片解码和显示是非常重要的,本文将介绍一些高效的实现方法。
一、图像解码方法1. 使用硬件解码器:通常,嵌入式设备中都会搭载硬件图像解码器,如图像编解码处理器(VPU)或者硬件加速器。
这些硬件解码器可以显著提高解码效率,减轻CPU的负担。
2. 使用软件解码器:如果嵌入式设备没有硬件解码器,可以选择一些高效的软件解码器。
例如,FFmpeg是一款广泛使用的优秀开源软件,可以实现多种图像和视频格式的解码。
3. 采用压缩格式:在图片存储和传输过程中,可以选择使用一些压缩格式的图像,如JPEG、PNG等。
这样可以减小图像文件的大小,加快传输速度,并且在解码时可以节省解码时间。
二、图像显示方法1. 使用硬件加速:嵌入式设备上常常会具备硬件加速能力,如GPU、DSP等。
利用硬件加速可以大大提高图像显示的效率和质量。
2. 双缓冲技术:在图像显示过程中,常常会遇到图像闪烁的问题。
为了解决这个问题,可以采用双缓冲技术,即使用两个缓冲区,一个用于解码图像,另一个用于显示图像。
这样可以在显示过程中避免图像闪烁,并提高显示效率。
3. 显示缩放:在嵌入式设备上,常常需要将高分辨率的图像或视频适配到设备屏幕的分辨率上。
为了高效地实现显示缩放,可以使用硬件加速器或者算法优化等方法。
三、优化策略1. 数据存取优化:图像解码和显示中,大量的数据需要被读取和写入。
为了提高效率,可以采用数据预读取、缓存机制等方法,减少数据存储和读写操作的时间。
2. 多线程并行处理:在现代嵌入式处理器中,多核处理器已经变得非常常见。
利用多线程并行处理的优势,可以同时进行图像解码和显示操作,提高整体处理效率。
3. 算法优化:在软件实现的图像解码和显示过程中,可以针对具体的应用场景进行算法优化。
例如,对于嵌入式设备的特殊特性,可以优化解码算法的复杂度,提高解码速度。
基于Linux的嵌入式Web服务器Thttpd的应用研究与实现
Linux论文设计题目:基于Linux的嵌入式Web服务器Thttpd的应用研究与实现学院:软件学院专业班级:Java08-2班姓名:饶本刚学号:200813100233姓名:康英学号:200813100217目录第1章案例设计引言1.1案例设计目的和意义1.2 本案例国内外研究现状1.3 系统设计的实验环境1.4 系统设计的技术分析第2章案例设计内容2.1案例需求分析2.2案例可行性分析2.3系统功能描述及功能结构图第3章案例详细设计3.1 系统模块功能设计3.2 实验环境的安装与调试3.3部分关键配置文件及代码分析第4章案例总结4.1 系统测试结果和分析4.2 系统存在的不足4.3系统展望第1章案例设计引言随着计算机科技的快速发展,信息共享程度的不断提高, 嵌入式Web服务器已成为嵌入式技术和网络技术结合的产物,是嵌入式技术网络化的一项重要应用。
嵌入式Web服务器主要应用在远程监测和控制方面,将Web服务器移植到接入网络的嵌入式设备后,客户端可借助浏览器对远端的嵌入式设备进行监测和控制。
它为我们管理、控制和监测各种各样的设备提供了一个很好的途径。
但对于一般的管理信息系统或中小型应用系统, 所需的Web服务功能比较简单, 若仍采用大型的通用Web 服务器, 将是一种资源的浪费,在某些专用嵌入式系统内, 由于内存容量有限, 对实时性要求高, 通用的Web 服务器不能适应市场需求。
此时, 使用功能相对简单、体积更小、消耗资源更少、可便携的简单嵌入式Web 服务器将更具优势。
目前,嵌入式Linux主要有HTTPD、THTTPD和BOA三种WebRemotemeasuringandcontrolHypertexttransferprotocol(http)服务器。
与传统的Web应用相比,嵌入式服务器要求代码小,节约空间和成本、实时性好。
本论文中设计了一种全新的基于ARMLinux嵌入式操作系统的嵌入式Web服务器。
基于嵌入式系统的多媒体音乐播放器
基于嵌入式系统的多媒体音乐播放器宫鹏;宫玥;王瑞宝【摘要】为了改善音乐播放器传统界面,扩充功能,提高音质,基于ARM7嵌入式系统平台和FAT 32文件系统,设计了一款带有文本阅览功能的多媒体音乐播放器.它不仅能正确识别并显示存储在SD,MMC等存储卡内的音频文件,支持环绕立体声调节和重低音调节,还可通过液晶屏浏览存储在存储卡内的中、英文TXT文档.该播放器选用具有出色音频解码能力的VS1053解码芯片,它支持320 Kb/s的MP3或256 Kb/s的WMA音乐文件的播放.该播放器通过视听验证,实现了4种以上不同的音效,满足使用者对音效的不同喜好.实现了环绕立体声调节和真正的立体声双声道音频输出.同时在操作上简单便捷,具有友好的人机界面.%To perfect the tranditional interface, extend the functions, and improve the tone quality of music player, a multimedia music player with text readLng function was designed based on Arm7 embedded platform and FAT32 file system. It not only can recognize and display MP3 and WMA files stored in memory cards (such as SD and MMC, etc. ) , support the tuning of surround sound and mega bass, but also can read Chinese or English TXT documents stored in memory card by LCD. The vs1053 decoding chip which has a perfect voice frequency decoding ability is chosen for the player. It supports the play of 320 kbps MP3 and 253kbps WMA files. More than four sound effects of the player can meet the requirement of different users.The tuning of surround sound and the output of real stereo dual-sound channel were achieved. Moreover, this system with excellent human-machine interface is easy to operate.【期刊名称】《现代电子技术》【年(卷),期】2011(034)012【总页数】4页(P100-103)【关键词】ARM7;SD卡;多媒体播放器;VS1053【作者】宫鹏;宫玥;王瑞宝【作者单位】青岛大学自动化工程学院,山东青岛266071;青岛有线电视网络中心,山东青岛266000;青岛有线电视网络中心,山东青岛266000【正文语种】中文【中图分类】TN911-34;TP3330 引言嵌入式系统具有处理速度快、低功耗、体积小、功能强大且易于移植等优点而得到广泛的应用。
LINUX下九款视频影音工具
LINUX下9款视频影音工具
对于新手上路linux,首先体验的是影音娱乐功能,本期我将给大家介绍9款容易上手的影音播放工具:
1、omi Player -一款强大易用的多媒体播放器。
2、Cheese - Cheese 用你的摄像头拍照和录像,还能加上神奇的特效,让你能够和别人分享快乐。
3、Kodi -一款获得殊荣的免费开源(GPL)软件,支持视频,音乐,图片,游戏以及更多内容的媒体中心。
4、Miro -免费,开放的视频,音乐以及互联网电视应用;它从成千上万的资源中带来视频频道,并且还有比其它平台更丰富的免费高清资源。
5、MPlayer - MPlayer 是一款支持多种系统和各种视频的视频播放器。
6、MPV -一款免费,开源,跨平台的媒体播放器。
7、SMPlayer -内置解码器的免费媒体播放器。
可播放所有的音频和视频格式。
8、SVP - SVP 让你可以使用帧插值在你的桌面电脑上观看任何视频,就像高端电视和投影仪支持的那样。
9、VLC - VLC 是一个免费且开源的跨平台媒体播放器以及框架,可以播放大多数格式的多媒体文件以及DVS,音频CD,VCD,以及各种流媒体协议。
嵌入式Linux荔枝派V3SNorFlashxt25f128bFlash使用
一、全志V3s出厂SD卡,需要增加对SPI NorFlash的支持SPI Flash 系统编译使用的是荔枝派zero上面焊接了一个芯天下的Nor Flash型号为:XT25F128B也就是16MByte。
内核:linux-zero-5.2.y1、嵌入式Linux 需要的程序⚫Uboot⚫Linux Kernel⚫Dtb设备树⚫根文件系统2、Nor Flash的支持,需要以下步骤1.配置uboot支持nor flash2.配置Linux kernel支持nor flash3.在设备树中添加nor flash的设备节点4.由于nor flash的特殊性需要选择JFFS2格式的文件系统3、Nor flash的分区XT25F128B,也就是16MByte NOR Flash作为启动介质,规划分区如下:由于内核中增加了网络驱动、音视频解码驱动,导致内核目前4.6MB左右,考虑到后期扩展,将内核分区扩大至6MB,文件系统分区缩小至8MB+960KB。
分区序号分区大小分区描述地址空间及分区名mtd0 1MB spl+uboot 0x0000000-0x0100000 : “uboot”mtd1 64KB dtb文件0x0100000-0x0110000: “dtb”mtd2 6MB linux内核0x0110000-0x0710000 : “kernel”mtd3 8MiB 960KiB 根文件系统 0x0710000-0x1000000 : “rootfs”三、编译Uboot由于目前Uboot环境变量固定存放在1MB位置之内,所有留给uboot的空间固定到flash前1MB的位置不变。
每个分区的大小必须是擦除块大小的整数倍,XT25F128B的擦除块大小是64KB。
1、下载uboot源码下载包含spi驱动的体验版本uboot,该驱动目前尚未合并到主线。
2、配置Flash支持型号执行make ARCH=arm menuconfig 打开uboot菜单配置,进入到Device Drivers ‣SPI Flash Support。
嵌入式Linux系统中图片解码和显示的实用工具推荐
嵌入式Linux系统中图片解码和显示的实用工具推荐在嵌入式Linux系统中,图片解码和显示是一个常见的需求。
为了满足这一需求,开发者通常会寻找实用工具来简化开发过程,并提高系统性能和用户体验。
本文将介绍几个在嵌入式Linux系统中广泛应用的图片解码和显示工具,并分析其特点和适用场景。
一、libjpeg-turbolibjpeg-turbo是一个针对JPEG图像格式的高性能编解码库。
它通过使用SIMD指令集和其他优化技术,提供了比传统libjpeg库更快的解码和编码速度。
libjpeg-turbo支持多种色彩空间和采样方式,并提供了简单易用的API接口,方便开发者在嵌入式系统中进行图像解码和显示。
由于其高性能和广泛的平台支持,libjpeg-turbo在嵌入式Linux系统中得到了广泛应用。
二、libpnglibpng是一个处理PNG图像格式的开源库。
它提供了一套用于解码和显示PNG图像的API接口,并支持不同压缩级别和颜色类型的PNG图像。
libpng库在解码PNG图像时具有较好的性能表现,并且能够处理各种不同的PNG图像特性,包括透明通道、图像间隔和颜色空间转换等。
在嵌入式Linux系统中,libpng是一个常用的图片解码和显示工具,尤其适用于处理透明度要求较高的PNG图像。
三、DirectFBDirectFB是一个轻量级的图形库,旨在提供快速且可扩展的图像显示解决方案。
它直接访问硬件,绕过X Window System,从而加快了图像显示的速度和响应时间。
DirectFB支持多种图像格式和硬件加速功能,可以在嵌入式Linux系统中高效地进行图片解码和显示。
另外,DirectFB还提供了简洁而灵活的API接口,使得开发者能够快速实现嵌入式系统中的图像展示功能。
四、FBI(Framebuffer Image Viewer)FBI是一个基于Linux帧缓冲设备的图像查看器和播放工具。
它可以直接在帧缓冲中显示各种图像格式,而无需使用X Window System或其他图形库。
基于ARM和Linux的网络视频采集传输方案的设计和实现
基于ARM和Linux的网络视频采集传输方案的设计和实现刘宇;车进【摘要】针对现有的视频采集设备占用较多空间,而且需要使用专用资源的情况,设计了一个基于嵌入式的网络视频采集传输方案.该方案采用ARM11为核心处理器,嵌入式Linux为软件平台,搭建嵌入式平台.将视频服务器MJPG-streamer移植到该嵌入式平台,实现图像的采集、压缩和传输,使用者可在Web浏览器中观察到远端的实时视频画面.实验结果表明,该方法能够很好地采集、处理和发送视频,实现远程观察实时的视频画面,且设备占用空间较小.【期刊名称】《宁夏工程技术》【年(卷),期】2014(013)001【总页数】4页(P30-32,36)【关键词】嵌入式系统;Linux;MJPG-streamer;视频图像采集【作者】刘宇;车进【作者单位】宁夏大学物理电气信息学院,宁夏银川 750021;宁夏大学物理电气信息学院,宁夏银川 750021【正文语种】中文【中图分类】TN919.8;TP368.1在日常生活中,视频采集的应用场合很多,诸如门禁、安防、远程视频会议等.现有的视频采集设备,模块较多,在使用中要占用很多空间.因此,本文提出了一种基于B/S结构的嵌入式Linux的网络视频采集传输方案,该方案取代了以前占用空间较多的视频采集设备,而将图像采集、图像的压缩和编码以及网络传输集成到一个体积小、占用资源少的嵌入式系统中,通过远端的浏览器观察视频画面.1 总体设计本方案采用飞凌嵌入式公司出品的ARM11开发板TE6410作为硬件平台,Linux 操作系统作为软件平台,通过USB摄像头采集图像,然后利用MJPG-streamer 视频流服务器及其相关插件获取、处理图像[1],并通过网络发送到用户平台,用户可以通过浏览器查看视频.方案整体结构见图1.图1 方案整体结构图2 方案硬件设计本方案主要采用ARM11开发板TE6410、USB摄像头和一台计算机.TE6410开发板搭载了三星公司出品的s3c6410核心板,主频高达533MHz,配有256 MB的DDR内存和4GB的NAND FLASH.TE6410开发板有3个串口,一个LCD扩展口,一个100 M网口.它标配的USB Host插口和USB Slave插口均为2.0标准,采用8位拨码开关选择不同的启动方式.外部扩展端口包括一个SD卡槽,一个Wi-Fi扩展接口,以及摄像头接口和J-TAG接口等.USB摄像头采用罗技公司的C270网络摄像头.采用一台运行Ubuntu12.10操作系统的计算机作为用户平台.方案硬件结构见图2.图2 方案硬件结构图3 方案软件设计本方案软件设计主要包括U-Boot,Linux内核,rootfs.yaffs2,MJPG-streamer 软件的修改和移植[2].方案软件框图见图3.U-Boot是在操作系统运行之前运行的一段小程序,用来完成硬件设备的初始化,从而将系统软硬件环境带到合适状态,为最终调用操作系统做好准备.编译好的U-Boot可以在TE6410开发板附带的光盘里找到.Linux内核采用3.0.1版本,该版本的内核包含USB摄像头的驱动和V4L2驱动框架[3].当内核烧写到开发板中,插上USB摄像头便自动识别.本方案采用rootfs.yaffs2作为TE6410的文件系统.rootfs.yaffs2是一个专门为NAND FLASH存储器设计的嵌入式文件系统,适用于大容量的存储设备,而且它是开源软件,所以采用rootfs.yaffs2作为文件系统[4].MJPG-streamer是一个开源项目,通过支持Linux-UVC的网络摄像头采集JPEG 图像,并且将采集到的图像流式传输成为M-JPEG视频流,通过网络传输给浏览器.它是一个可移植的Linux-UVC流媒体应用.之前,国外的嵌入式爱好者将MJPG-streamer项目移植到了Mini2440平台,并设立了一个名为mjpg-streamer-mini2440的开源项目.基于TE6410开发板,笔者在mjpg-streamer-mini2440开源项目的基础上进行拓展,使之能够移植到TE6410开发板上正常使用.图3 方案软件框图3.1 交叉开发环境的搭建TE6410开发板采用U-Boot作为引导程序、嵌入式Linux系统镜像(版本号为3.0.1)和rootfs.yaffs2文件系统.将这3个文件从开发板附带的光盘里复制到SD 卡中,SD卡插入开发板的SD卡槽,开发板设置为SD卡启动模式,启动开发板一键安装嵌入式Linux系统.交叉开发环境需要Linux桌面系统,选用Ubuntu12.10.首先在计算机安装VMware8.0虚拟机,在虚拟机中安装Ubuntu12.10;再在Uubuntu12.10中安装交叉编译工具链Arm-Linux-Gcc-4.3.2;之后使用VMware8.0自带的VMware-Tools实现虚拟机和主机的文件共享;最后将虚拟机设置为桥接方式使之能够上网,并将虚拟机和开发板设为同一网段后使用ping命令将虚拟机和开发板连通.3.2 MJPG-streamer移植过程将MJPG-streamer视频流服务器移植到TE6410开发板上运行,从而实现图像采集和网络传输,具体移植过程如下:(1)下载mjpg-streamer-mini2440项目源代码:mjpg-streamer-mini2440-read only,并放在ubuntu的一个文件夹中(比如/mnt/webcamera文件夹). (2)进入 webcamera文件夹中,用 VI编辑start_uvc_yuv.sh 的内容[5]:执行以下命令进行编译链接并打包[6]:在当前目录下会生成mjpg-streamermini2440-bin.tar.gz.经过以上步骤,已将参数配置成适合TE6410开发板和USB摄像头的环境,将它复制到SD卡中.(4)在TE6410开发板上安装MJPG-streamer.将SD卡插入开发板的SD卡槽里,在开发板的终端输入以下命令安装MJPG-streamer:3.3 M-JPEG压缩算法研究与实现M-JPEG视频编码格式,把运动的视频序列当作连续的静止图像来处理,该压缩方式单独完整地压缩每一帧,在编辑的过程中可随机存储每一帧,可进行精确到帧的编辑.其主要特点是基本不考虑视频流中不同帧之间的变化,只单独对某一帧进行压缩.M-JPEG单帧压缩算法为JPEG算法,即把一幅图像分成8×8的方阵之后进行离散余弦变换(DCT).离散余弦变换是将光强数据转换成频率数据,从而得知强度变化情况.因为人类视觉系统对图像的低频成分比对高频成分有更高的敏感度,因此如果对图像的高频成分进行量化,再还原成光强数据,尽管与原图像有些差异,但人眼难以分辨[7].JPEG压缩是有损压缩,损失的部分是人类视觉不容易觉察到的高频成分,节省大量需要处理的数据信息.以下就是JPEG所使用的二维DCT公式式中:f(i,j)为像素值,F(u,v)为变换系数,u,v为系数下标.在压缩时,将原始图像分成很多个8×8像素的图像数据块.之后,通过零均值化,将每个字节的值从0~255转为-128~+127,并以此作为离散余弦正变换FDCT(Forward DCT)的输入.FDCT将每个数据块的值换为64个DCT系数,第1个系数称为直流系数,而其余63个系数则称为交流系数.在解压缩时,经逆向IDCT(Inverse DCT)将64个DCT系数还原为8×8像素的数据块,然后组成完整图像[8].4 方案测试USB摄像头插入开发板的USB Host端口,开发板上电.首先,在超级终端下进入TE6410开发板,使用ping命令将虚拟机和开发板连通.之后,启动开发板上的服务器端.此时,MJPG-streamer启动,并且其输入组件通过USB摄像头采集JPEG 格式的图像,保存到内存中;网络服务器输出组件能够从内存中获取JPEG格式的图像,并将图像流式传输成为M-JPEG视频流,通过网络服务器发送给计算机.在虚拟机的Web浏览器中输入开发板IP地址发出访问请求,服务器收到访问请求后与客户端建立连接并将视频数据发送到客户端监听端口,用户可以在虚拟机的Web浏览器中观察到实时的视频画面.测试在Ubuntu12.10操作系统下完成,采集原始图像的格式为YUYV,分辨率为640×480,转换成JPEG格式图片的压缩率为0.8∶1.在此测试环境中,视频画面清晰、流畅,实时性好.本方案的测试对照结果见图4,图4a是开发板的液晶屏上显示的YUYV格式图像,图4b是用户平台的Web浏览器中显示的JPEG格式图像.图4 方案的测试对照结果5 结语本方案使用支持Linux-UVC的USB摄像头采集图像,采用飞凌公司出品的ARM11开发板TE6410和嵌入式Linux操作系统处理图像,通过移植MJPG-streamer视频流服务器,实现基于网络的视频采集传输.本方案是一种结构紧凑、占用空间很小的网络视频采集传输方案,不仅USB摄像头非常容易获得,而且充分利用现有的网络资源,不必使用额外的设备或资源.本嵌入式视频采集传输方案将在视频会议、交通监控等方面有很好的应用前景.参考文献:【相关文献】[1]杨宏,张志文.基于Web的嵌入式远程监控系统的研究与实现[J].计算机与数字工程,2012(10):70-72.[2]冯兴乐,王建建,张哲,等.基于嵌入式Linux的无线图像传输在车联网的应用[J].电视技术,2012(21):156-159.[3]于艳萍,朱晓智,王中训.基于ARM9和USB摄像头的网络视频采集系统设计[J].现代电子技术,2011(24):49-51.[4]陈毅辉,王存堂,钱帅杰,等.模糊智能控制在卷绕系统中的应用[J].机械设计与制造,2006(7):146-148.[5]庄严,王骁,汤建敏.嵌入式C/C++系统工程师实训教程[M].北京:清华大学出版社,2011.[6]韦东山.嵌入式Linux应用开发完全手册[M].北京:人民邮电出版社,2009.[7]祝宁,叶念渝.JPEG图像文件格式的分析及应用[J].电脑与信息技术,1999(3):21-24.[8]许刚,廖斌,李承毅.JPEG图像文件格式分析[J].计算机系统应用,1998(10):37-39.。
linux播放视频命令
打开终端,解压文件下载来的“install_flash_player_11_linux.x86_64.tar.gz”,指令为:”tar -xzvf install_flash_player_11_linux.x86_64.tar.gz“(不含引号),将解压出来的文件”libflashplayer.so“拷贝到浏览器Firefox的文件夹”/usr/bin/lib/mozilla/plugins/“下,如图(上到下第6~7行):
step 3
更改文件夹”/usr/bin/lib/mozilla/plugins/“下的“libflashplayer.so”的权限,如图(倒数第3、2行):
4step 4
重启Firefox浏览器,便能播放网页视频了,如图:
下面由学习啦小编为大家整理了linux播放视频命令的相关知识希望Hale Waihona Puke 家喜欢linux播放视频命令
linux系统下我们要看视频的话怎么办呢?下面由店铺为大家整理了linux播放视频命令的相关知识,希望大家喜欢!
linux播放视频方法
step 1
到官网下载下载来的“install_flash_player_11_linux.x86_64.tar.gz”,如图:
Linux终端命令的音频和视频处理技巧玩转多媒体
Linux终端命令的音频和视频处理技巧玩转多媒体在现代数字化生活中,多媒体已经成为人们日常生活和工作的重要组成部分。
而对于Linux操作系统的用户来说,掌握终端命令行的音频和视频处理技巧无疑可以极大地丰富其使用体验。
本文将介绍一些常用的Linux终端命令,帮助您玩转多媒体。
一、音频处理技巧1. 播放音频文件在Linux终端中,可以使用`aplay`命令来播放音频文件。
例如,要播放名为"music.wav"的音频文件,只需在终端中输入以下命令:```aplay music.wav```这将直接在终端中播放音频文件,让您在无需打开其他媒体播放器的情况下即可收听音频。
2. 转换音频格式如果您需要将音频文件从一种格式转换为另一种格式,可以使用`ffmpeg`命令。
例如,要将名为"audio.mp3"的MP3文件转换为"WAV"文件,可以运行以下命令:```ffmpeg -i audio.mp3 output.wav```此命令将通过转换使音频文件的格式得到改变,方便您在不同场景下使用。
3. 录制音频Linux终端中的`arecord`命令可用于录制声音。
例如,要录制10秒钟的音频并将其保存为"recording.wav"文件,可以输入以下命令:```arecord -d 10 -f cd -t wav recording.wav```此命令将启动音频录制,并在录制10秒钟后将音频保存为指定的文件。
二、视频处理技巧1. 播放视频文件与音频播放类似,Linux终端中也可以使用`mplayer`命令来播放视频文件。
例如,要播放名为"video.mp4"的视频文件,只需在终端中输入以下命令:```mplayer video.mp4```这将会在终端界面中播放视频。
2. 截取视频帧使用`ffmpeg`命令,您可以在Linux终端中轻松截取视频的帧。
linux vlc 命令 例子
linux vlc 命令例子在Linux系统中,VLC是一个流行的多媒体播放器,它具有丰富的命令行选项,可以通过命令行来控制它的播放和功能。
以下是一些常见的VLC命令和例子:1. 播放媒体文件:vlc /path/to/your/file.mp4。
这个命令会使用VLC播放器打开指定路径的MP4视频文件。
2. 控制播放:vlc --play-and-exit /path/to/your/file.mp3。
这个命令会播放指定路径的MP3音频文件并在播放结束后退出VLC。
3. 调整音量:vlc --volume 200 /path/to/your/file.mp4。
这个命令会将音量设置为200%并播放指定的MP4视频文件。
4. 截取视频截图:vlc --video-filter=scene --vout=dummy --start-time=10 --stop-time=11 --scene-format=png --scene-replace/path/to/your/file.mp4 vlc://quit.这个命令会在指定的时间范围内从视频中截取一张PNG格式的截图。
5. 转码视频文件:vlc /path/to/your/input/file.mp4 --sout='#transcode{vcodec=theo,vb=800,scale=1,acodec=vorb,ab= 128,channels=2,samplerate=44100}:std{access=file,mux=ogg,dst=/path/to/your/output/file.ogg}'。
这个命令会使用VLC将输入的MP4视频文件转码为Ogg格式的输出文件。
以上是一些常见的VLC命令和例子,你可以根据自己的需求和情况来使用这些命令,或者在命令行中输入 `vlc --help` 来查看更多的命令选项和用法。
希望这些例子能够帮助到你。
基于嵌入式ARM—Linux平台的多通道MP3音乐播放系统
U A R T , 以太 网控制器 , S P I 控制器 , I 2 C 控制器等。 其性 能 完全 满足 本 系统设 计需 求 。音 频解 码 芯 片采 用 芬
兰V L S I 公 司提供 的V S 1 0 0 3 ,它是 一款 单核 心 的音频 解 码 芯 片 , 内置 高 性 能 、低 功 耗 的 D S P 处 理 器 核 D S P , 具 有 一个 高质量 的可变 采样频 率 的A D C, 一 个D A C 以及耳机放大器接 口,同时支持S P I 总线传输
关键词 : V S 1 0 0 3 ; A R M; L i n u x 中图分类号:T M5 3 1 . 4 文献标识码 : A
1 引 言
便 获取 而 广为 使用 。 目前市 场 上 的MP 3 播 放 器 只能 单通 道播 放 , 不 能 同时输 出多路 不 同的音源 。 而 大型
V S 1 0 0 3 进 行通 信 。
V S1 0 0 3 初 始 化
在S P I 总线 的p r o b e 方法 中将调用v s l 0 0 3 一 h w — i n i t ( )
4 软件设计
计 主 要完 成 V S 1 0 0 3 的功 能实 现 , 驱 动 将 基 于L i n u x 操 作 系 统 进 行 开发 。A T 9 1 S A M 9 2 6 0 使用S P I 总 线 和
乐进 行解 码操 作 ,从 而可 以降低 软件 程 序 的开 发难
加 速 系统开 发速度 。 在 多媒 体音 频 领 域 , 由于MP 3 文 件 体积 小 , 最方 度 ,
软件系统将 以L i n u x 操作系统为平台。 L i n u x 作为
一
个 成 熟 的操 作 系统 ,已经 广泛 应用 于 电脑 和 各种
毕业设计(论文)-基于mini2440的mp3音乐播放器[管理资料]
项目组号 9密级公开X X X X X X X X X X X学校二○一一届毕业设计文档项目名称基于mini2440的mp3播放器专业嵌入式软件技术指导教师项目组成员二○一一年六月摘要本文设计了一种基于mini2440的MP3音乐播放器。
设计中采用广州友善之臂科技有限公司提供的mini2440进行控制,利用U盘和SD卡作为存储器芯片,通过mini2440上的6个按键来控制播放。
由于Linux具有可移植度高、自由、免费等特性,最近几年,它在移动设备和个人电脑领域的应用也越来越广泛,因此我们选择Linux操作系统,本文就以linux系统的移植为核心来描述一个MP3播放器实现的整个过程。
目录前言 (4)第一章系统方案设计与选型论证 (8)硬件设计方案 (8)软件设计方案 (10)第二章搭建嵌入式开发环境 (13)在windows中配置虚拟机 (13)在虚拟机中安装linux系统 (24) (47)Linux下建立建立交叉编译环境 (48)第三章 Linux系统移植 (51)Linux源码修改 (51)相关驱动移植 (64)按键驱动移植 (64)添加yaffs2文件系统到内核 (73)移植UDA1341音频驱动 (77)SD卡驱动移植 (82)USB驱动移植 (84)编译镜像 (88)构建文件系统 (88)第四章应用程序编程 (101)madplay的下载与安装 (101)基于Mini2440的按键控制 (108)结束语 (110)谢辞 (111)附录 (112)参考文献 (114)前言随着计算机技术、微处理器技术、电子技术、通信技术、集成电路技术的发展,嵌入式系统已成为计算机技术和应用领域的一个重要组成部分,嵌入式产品在人们的日常生活中也扮演着越来越重要的角色。
目前,计算机和网络已经全面渗透到日常生活的每一个角落。
对于我们每个人来说,需要的已经不再仅仅是那种放在桌上处理文档、进行工作管理和生产控制的计算机机器。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于嵌入式Linux的MP3播放器的设计与实现摘要:本文详细介绍了嵌入式系统的特点以及嵌入式系统开发的流程,分析基于嵌入式Linux 的MP3播放器的关键技术,设计和实现了一种基于嵌入式系统的MP3 播放器。
该播放器利用QT 技术和开源的音频解码器libmad编程实现,运行在嵌入式Linux和ARM9 硬件平台。
最后就今后播放器开发过程中一些问题进行了探讨。
关键字:嵌入式Linux MP3 播放器QTDesign and implementation of MP3 player based on embedded LinuxZHAO Peng(Department of Computer Science and Technology, Taiyuan Normal University, Taiyuan ,Shanxi 030012) Abstract:This paper gives the characteristic of the embedded system and the process of the embedded system development. Based on the analysis of the MP3 player key technology a kind of MP3 player is designed and implemented by use of QT technology and open-source audio decoder library libmad. It can run on the Linux and ARM9 hardware platform. At last the paper gives some issues in the farther research.Key words:embedded; Linux; MP3 player; QT;我们身处在物联网、云计算、3G和三网合一这样的一个风起云涌的时代,在这些技术背后有一个很重要的技术支撑平台——嵌入式系统开发。
更有人提出我们现在身处在后PC 时代,即嵌入式时代。
嵌入式不仅广泛应用于工业控制、通信设备、信息家电、医疗仪器等领域,而且大量应用于手机、PDA等消费类电子设备。
MP3 作为高质量音乐压缩标准,数据压缩比率大,回放质量高。
在这些个人消费电子设备中实现MP3播放功能显得十分有必要。
本文在研究分析了MP3 文件格式与解码原理后,详细介绍了基于Linux 操作系统的嵌入式MP3 播放器的设计与实现过程。
1.前言嵌入式系统是以应用为中心,以计算机技术为基础,软硬件可裁剪,适用于应用系统,对功能、可靠性、成本、体积、功耗等方面有特殊要求的专用计算机系统[1]。
嵌入式产品的特点:从性能角度看,嵌入式产品范围广,不同的产品的方向不同,这些方向主要有:体积、成本、功耗、稳定性、实时性、功能和外观等。
从技术角度看,软硬件结合,操作系统在嵌入式产品中的应用越来越广,所有的通用计算机技术都有可能被应用在嵌入式产品中,需要和具体行业技术结合,开发难度大,周期短。
嵌入式系统与一般PC系统的区别●嵌入式系统专用于特定的应用,而PC是通用计算机;●使用多种类型的处理器与处理器的体系结构;●关注成本;●大多有功耗约束;●经常在极端的环境下运行;●系统资源比PC少的多;●需要专用工具和方法进行开发设计;●嵌入式系统的数量远远超过PC.2.嵌入式产品开发的流程嵌入式产品开发流程:●开发前期准备工作需求分析,可行性分析;●具体的技术开发硬件设计、嵌入式系统构建、驱动编程、应用编程、GUI开发、电源管理、启动时间、算法优化、实时性优化、系统测试、产品模具结构设计及组装;●开发后期工作用户体验测试、产品送检、小批量生产测试、大批量生产;3.基于嵌入式Linux的MP3播放器的技术3.1Linux文件I/O文件是Linux系统中最基本也是最重要的一个概念。
Linux系统提供的一个非常重要的功能就是文件系统。
Linux遵循一切都是文件的理念,因此,绝大多数交互操作都可以使用类似文件的读取和写入等来实现,即使所操作的对象不是普通的文件爱你,而是硬件设备,也是一样来对待,从而实现了一定的统一。
文件只有被打开才能被访问。
文件可以以只读方式或者只写的方式来打开,也可以两者兼有。
一个被打开的文件通常使用文件描述符的唯一标识进行引用,这个描述符是打开文件的元数据到它本身的映射。
在Linux系统内核中,文件描述用一个非负的整数来表示,文件描述符在用户空间共享,允许用户应用程序通过文件描述符来直接操作文件。
当打开一个现存文件或者创建一个新文件时,内核就会向进程返回一个文件描述符,当读写一个文件时,用open或者creat返回的文件描述符用来标识这个文件,将它作为参数传递给read或者write。
3.2Linux进程和线程编程进程就是指系统正在执行的程序,也就是队列中正在执行的任务,进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。
通俗的讲程序是一个包含可以执行代码的文件,是一个静态的文件。
而进程是一个开始执行但是还没有结束的程序的实例。
就是可执行文件的具体实现。
一个程序可能有许多进程,而每一个进程又可以有很多子进程。
在系统里面只有进程没有程序,为了区分各个不同的进程,系统给每一个进程分配了一个ID以便识别。
为了充分的利用资源,系统还对进程区分了不同的状态,将进程分为新建、运行、阻塞、就绪和完成五个状态。
每个进程至少需要一个线程。
进程由两部分组成:进程内核对象,地址空间。
线程也由两部分组成:线程内核对象,操作系统用它来对线程实施管理。
线程堆栈,用于维护线程在执行代码时需要的所有函数参数和局部变量。
进程是不活泼的。
进程从来不执行任何东西,它只是线程的容器。
线程总是在某个进程环境中创建的,而且它的整个寿命期都在该进程中。
3.3QT编程目前的桌面机操作系统大多有着美观、操作方便、功能齐全的GUI(图形用户界面),例如KDE或者GNOME。
GUI(图形用户界面)是指计算机与其使用者之间的对话接口,可以说,GUI是当今计算机技术的重大成就。
它的存在为使用者提供了友好便利的界面,并大大地方便了非专业用户的使用,使得人们从繁琐的命令中解脱出来,可以通过窗口、菜单方便地进行操作。
[2]在嵌入式系统中,GUI的地位也越来越重要,但是不同于桌面机系统,嵌入式GUI要求简单、直观、可靠、占用资源小且反应快速,以适应系统硬件资源有限的条件。
另外,由于嵌入式系统硬件本身的特殊性,嵌入式GUI应具备高度可移植性与可裁减性,以适应不同的硬件条件和使用需求。
嵌入式GUI特点:●体积小;●运行时耗用系统资源小;●上层接口与硬件无关,高度可移植;●高可靠性;●在某些应用场合应具备实时性Qt/Embedded是Trolltech公司(目前已被Nokia收购)为嵌入式系统开发的Qt版本。
从Qt 4.1版本开始,Qt/Embedded改名为Qtopia Core,又从Qt 4.4.1版本开始,Qtopia Core 又改名为Qt for Embedded Linux.4.基于嵌入式Linux的MP3播放器的设计与实现由于Linux 具有开放源码,软件资源丰富,性能高效、稳定,支持多种体系结构,大小、功能都可定制,价格低廉等优点,本MP3 播放器系统基于嵌入式Linux操作系统来实现。
而MP3 播放器的界面设计则采用Qt/Embedded技术,它是著名的Qt 库开发商挪威Troll-Tech 公司面向嵌入式系统的Qt 版本。
其特点是可移植性好,产品较成熟,开发文档和SDK齐全,对内存资源需求少,显示性能好等[3]。
而对于MP3 播放器一些底层功能的实现,可以基于一些开源音频解码库,只要开发者遵循开发协议即可,这样可以加快开发速度和减少开发成本。
在本MP3 播放器的设计和实现的过程中,主要采用libmad 解码库。
libmad是一个开源的高精度MPEG音频解码库,它提供24-bit 的PCM输出。
用libmad 解码库对MP3 文件进行解码播放的音质比较好,而且使用libmad提供的API,可以实现MP3 数据解码和顺序播放[4]。
#include <sys/types.h>#include <sys/stat.h>#include <stdlib.h>#include <fcntl.h>#include <sys/soundcard.h>#include <unistd.h>#define BUF_SIZE 4096int audio_fd;unsigned char audio_buffer[BUF_SIZE];int main(void){//-- 1. 打开声卡设备文件, 可写的audio_fd = open("/dev/dsp",O_WRONLY);//-- 2. 打开声卡设备文件失败if(audio_fd < 0 ){perror("open error\n");exit(1);}//-- 3. 设置声卡读取格式int format;format = AFMT_S16_LE;if(ioctl(audio_fd,SNDCTL_DSP_SETFMT, &format) == -1){perror("SNDCTL_DSP_SETFMT");exit(1);}//-- 4. 设置声卡的声道int channels = 2;if(ioctl(audio_fd,SNDCTL_DSP_CHANNELS, &channels) == -1){perror("SNDCTL_DSP_CHANNELS");exit(1);}//-- 5. 设置声卡的播放速度int speed = 44100;if(ioctl(audio_fd, SNDCTL_DSP_SPEED, &speed) == -1){perror("SNDCTL_DSP_SPEED");exit(1);}//-- 6. 打开音乐文件int fd;fd = open("nuannuan.wav",O_RDONLY);if(fd<0){perror("open sound file error\n");close(audio_fd);exit(1);}int ret;while(1){//-- 读音频文件ret=read(fd, audio_buffer, sizeof(audio_buffer));if(ret<0){perror("read error\n");break;}if(ret==0){break;}//-- 往声卡设备文件中写ret = write(audio_fd,audio_buffer,ret);if(ret<0){perror("write error\n");break;}}close(fd); //关闭文件close(audio_fd); //关闭声卡return 0;}5.小结本系统实现了播放MP3的功能,达到了市场上其他MP3播放器的效果。