董立志等
摘 要:本文研究了一种基于嵌入式Linux操作系统的Media Player播放器。应用GTK+图形开发工具完成播放界面的模块化设计,利用视频解码器来增强对数字视频进行压缩、解压缩的程序或者设备进行处理来实现对媒体格式和传输协议的可拓展能力,来实现播放系统的所有功能。通过嵌入式技术在播放器设计中的研究结果表明,嵌入式技术具有良好的可移植性和可拓展性。
关键词:嵌入式;播放器;GTK+
背景意义
在众多多媒体网络播放器中,由于嵌入式系统的使用,linux系统上多媒体技术应用要求有了更大的凸显,为了研制一种基于linux的具有丰富的传输协议格式和多种相应的嵌入式的媒体播放器,使其适应何种传输协议和媒体格式以及即将出现的媒体格式和传输协议。
1.引言
在多媒体网络播放器中,系统中有许多多媒体组件,都是不可缺少的组成部分,伴随着嵌入式系统广泛应用,使得linux系统上多媒体技术应用要求有了大幅提高。因此,研制一种基于linux的具有丰富的传输协议可拓展性高的格式的播放器,使其适应各种传输协议和媒体格式,已经成为当今的主流研发趋势。
2.嵌入式平台搭建
2.1研究对象及需求
以嵌入式Linux系统媒体播放器开发为对象,根据用户的具体应用需求,首先应选择相应的嵌入式处理器以及外围设备来搭建硬件平台,然后选择适当的嵌入式操作系统,基于此操作系统进行相应的用户需求开发,最后是整个系统测试,此系统开发流程图.
2.2开发环境
建立和安装交叉开发环境通常是开发嵌入式软件首要做的事情。在嵌入式系统中,由于硬件能力有限,不可能在嵌入式系统上安装编译器、连接器,这样就出现了交叉编译器。编译器可以生成在与编译器本身所在的计算机和操作系统(平台)相同环境下运行的目标代码,编译器也可以生成用来在其它平台上运行的目标代码,这种编译器就叫做交叉编译器。除此之外还需要其他工具:相关的二进制工具、针对目标平台的C头文件,针对目标平台的C函数库、网络文件系统及其配置。
3.系统结构设计
3.1嵌入式媒體播放器的基本步骤:
嵌入式操作系统的播放器的设计既要满足设计发展的系统需求,所以就要做到以下几点要求:第一是支持嵌入式Linux操作系统,要具有友好的用户图形界面,操作快捷、方便;第二是播放器基本结构是根据分层设计的原理,使得各个模块功能层次上结构分明,条理清晰;第三是提供更多的解码器编译接口,这样可以快捷的添加解码协议的扩展功能,对更方便的调节解码格式。
3.2嵌入式媒体播放器的基本架构
嵌入式Linux系统是通过使用C语言进行开发的;强大的用户界面是由GTK+来提供的;而解码工作是采用FFMpeg开源解码库来完成,其功能强大,并支持多种音视频编解码标准;音视频的输出是利用SDL来完成的,并且可以免除对框架的依赖,保证可移植性的良好。
4.用户图形界面设计
图形用户界面(GraphicalUserInterface,GUI)是指采用图形方式显示的计算机操作环境用户接口,主要完成用户和播放系统的交互。对于GTK+总体而言,其是一个可移植性强、稳定性好而且使用多平台的用户图形界面支持系统,在开发过程中可以保持桌面系统与嵌入式系统中相关界面功能处理模块的统一设计与开发。
GTK+库提供丰富的控件供编程使用,应用开发系统功能界面作为主控制界面进行相应的系统功能调用,如可使用窗口配合功能按钮或菜单完成主控制界面,根据相应控件的接口函数来搭建控件、设置属性、创建好信号连接器并调用显示函数gdk_show_all()显示主体窗口,在调用函数gtk_main()进入主体函数进行循环,当调用到函数gtk_main_quit()退出循环体,程序运行结束,最后界面自动生成处理结构。
对媒体播放器进行模块划分:window、control和PlayList。对任意的一个操作响应都有相应响应函数,即控制了对MPlayer的全部操作。当window框架中的按键被点击时,controll类中的相应操作就会被调用。而Playlist类是对播放文件的操作,例如更新文件、下载文件、查找文件等操作。
5.音视频解码模块设计
音视频解码模块主要包括音视频分离器、解码器和数据的解码选择器等部分。网络上存在各式各样的数字化音频、视频、图像,如果按照原数据进行传输,那么网络传输的数据量是很大的。本播放器采用的解码库支持很多解码编制。其对应的操作解码函数都被安放在一个链表中,其中表头操作编码存放静态变量链表中,将需要应用解码器解码接口函数,把一个新AVCodec结构将安放在这个添加链表中。
6.媒体播放器系统控制设计和实现
6.1媒体播放器的系统控制结构设计
系统控制模块首先通过用户图形界面模块为用户提供一个播放器的控制接口,然后负责协调管理用户图形界面、音视频解码模块等模块的协同工作。播放器在演放过程中会接触到集中状态的转换,其中有播放、后退、快进、暂停、停止等操作,通过系统的控制模块对这些操作进行协同调度,实现播放状态的转换。
6.2媒体播放器控制实现
系统控制模块是媒体播放器核心模块,它控制播放器所有功能。在用户界面上进行点击按键可以通过系统控制模块发布的命令实现后台播放器控制,如果主窗口的按钮被点击过后,Controll类函数会对相应的action()函数所调用,相应的操作就会被action函数命令来执行,并且调用系统控制系统中发送命令函数。例如当按下stop按钮时,Controll类函数的actionStop()函数被调用进行相应的处理,该函数又将调用操作系统中的quit()函数,“quit”操作命令会被发送给后台来进行管理,最后播放器将会停止当前工作。
7.结论
7.1本文设计的嵌入式Linux媒体播放器通用控制系统兼顾了播放器的通用功能。
7.2将媒体编码技相关技术和嵌入式Linux有机的融合在一起,通过媒体播放器的多种功能测试表明,能支持常用的传输协议和多种的媒体格式文件,满足了设计规格说明书的需求。
7.3编程软件是基于嵌入式Linux操作系统的,因很多开发能源都是开源的,有利于更好地创建和开发好用的操作系统。(作者单位:北方民族大学)