0 卖盘信息
BOM询价
您现在的位置: 首页 > 技术方案 >工业控制 > 基于DirectFB开发库实现可分解的嵌入式播放器的设计方案

基于DirectFB开发库实现可分解的嵌入式播放器的设计方案

来源:
2024-11-14
类别:工业控制
eye 5
文章创建人 拍明芯城

基于DirectFB开发库实现可分解的嵌入式播放器的设计方案

引言

随着嵌入式与数字多媒体技术的发展,嵌入式播放器因其体积小、功能全、存储量大、携带方便等特点,已成为当前研究的一个技术热点。开发支持各种音视频格式和传输协议的嵌入式播放器,具有广泛的市场前景。DirectFB作为一个轻量级的GUI开发库,通过Framebuffer以及回调函数,实现了对硬件设备的完全抽象,加速了图形操作,成为开发嵌入式播放器的理想选择。本文提出了一种基于DirectFB的嵌入式播放器解决方案,旨在降低嵌入式系统的资源消耗,适用于CPU频率小于400MHz的中低端嵌入式系统。

image.png

DirectFB介绍

DirectFB是一个轻量级的提供硬件图形加速、输入设备处理特性和抽象的图形库,集成了支持半透明的视窗系统以及在Linux Framebuffer驱动之上的多层显示。它用软件封装当前硬件无法支持的图形算法来完成硬件加速的层,并集成了快速的支持半透明的视窗系统。DirectFB通过Framebuffer驱动访问硬件设备,提供了图形设备的加速、输入设备处理提取、透明窗口和多重显示层的功能。

DirectFB的设计之初就充分考虑了嵌入式系统的固有特性,体积小巧、资源消耗低,是嵌入式系统中强大的图形处理库,成为Linux下一代处理的一个新标准(CELF AVG1.0标准)。DirectFB提供了一套C接口来方便用户进行界面开发,例如IDirectFBSurface接口提供了对文本、BILT、画线以及画矩形的操作;IDirectFBFont接口提供了对字体的操作;而IDirectFBVideo接口提供了对多媒体进行播放控制的操作。

嵌入式播放器设计方案

1. 总体架构

本嵌入式播放器采用DirectFB开发的Lite作为图形界面,与用户进行直接交互;调用DirectFB的Video实现了音视频的插件接口和解码器模块。该接口将FFmpeg、xine、libmpeg3等多媒体库封装成统一接口,具备很强的扩展性。基于Framebuffer的输出,消除了对特定架构的依赖,有效地增强了系统的可移植性。

2. 图形界面开发

图形界面以Lite为基础开发,Lite是基于DirectFB开发的以box为基类的对话框。通过调用Lite可以编写各种暂停、播放、音量等控件,用户使用这些控件与播放器进行直接交互。DirectFB本身并不提供窗口以及对话框管理功能,因而DirectFB更多地被用作底层图形库。上层API支持DirectFB的有XDirectFB、DirectFBGL、DFBTerm、DFBSee、DFBPoint、QT on DireelFB、SDL等。

采用Lite进行开发的目的,主要是因为它直接使用DirectFB开发对话框,而且源代码只有5MB左右,具有很快的响应速度,能够有效降低嵌入式设备资源的消耗。

3. 插件接口与解码器

插件接口将对解码器的操作放到了Video统一的开发式接口中,该接口实现了分离音视频、解码音视频、播放、暂停、调节音量、调整播放速度等各种功能。通过该接口,播放器的扩展性得到了很大的提高,因此该接口是媒体播放器的核心。

DirectFB通过对FFmpeg进行封装,形成一组统一接口方便用户调用。FFmpeg是一个开源的多媒体框架,能够解码、编码、转码、mux、demux、流、过滤和播放几乎所有已知格式的音视频文件。通过DirectFB对FFmpeg的封装,播放器可以支持多种音视频格式的播放。

具体的封装过程包括以下几个函数:

  • Probe函数:通过检查文件扩展名来确定播放器是否支持播放该文件,可以识别的扩展名有wav、au、snd、mp2、mp3、m2a、swf、wma、rm等。用户可以通过添加新的解码器来支持更多新的文件格式。

  • Construct函数:通过调用FFmpeg的一些库函数,首先将输入的视频文件头信息读取出来,接着把视频文件分离成音频和视频流,并申请音频和视频流的缓冲区,然后识别出音视频解码器。该函数同时会将用户写的一些非标准函数指针赋给标准API函数,方便用户的调用。

  • FFmpegInput函数:该函数管理将对解码出的音视频包送入各自的FIFO队列,同时设置了一些标志位来管理FIFO队列,例如音视频队列当前的状态,当用户拖动进度条进行偏移时用户需要有一个拖动标志位,拖动的长度用来重新计算播放时间。

  • FFmpegVideo以及FFmpegAudio函数:这两个函数主要用于播放音频流和数据流,同时有一些用于音视频的同步控制。

  • FFmpeg_PlayTo函数:该函数是给用户提供的接口函数,该接口函数在DirectFB中为PlayTo。在函数中,PlayTo同时启动了3个线程,这3个线程分别调用了FFmpegInput、FFmpegVideo、FFmpegAudio函数,用于将音视频送入FIFO队列,从FIFO队列取出数据并播放。

4. 数据流程与控制函数

音视频处理过程是同步进行的。此外还有一些控制函数,例如文件播放PlayTo、播放停止Stop、按时间跳转SeekTo、调整音量SetVolume、获取音量GetVolLume、调整播放速度SetSpeed、获取播放速度GetSpeed等函数,这些函数在construct函数中被封装成标准接口便于用户使用。

Video接口通过调用FFmpeg对音视频解码进行了有效的封装。通过Lite,用户与播放器实现有效交互。Lite弥补DirectFB在工具箱以及窗口管理上的不足,相比于其他的GUI,它在提供对话框和按钮的同时,资源消耗较小,适合嵌入式开发。

5. 音频处理

Fusionsound是一个DirectFB的子库,它基于oss或者alsa驱动。Fusionsound将音频数据输出到了扬声器上,该函数库能够支持一些基本操作,例如WAV格式文件的播放,同时它也提供一系列的声音播放、调节播放速度、调高音量、声音缓冲区管理等接口。

主控芯片型号及其作用

在嵌入式播放器的设计中,主控芯片的选择至关重要。以下是几种常见的主控芯片型号及其在设计中的作用:

  1. STM32F103ZE

    STM32F103ZE是一款高性能、低功耗的ARM Cortex-M3内核微控制器,适用于各种嵌入式应用。它具有丰富的外设接口,如USB、USART、SPI、I2C等,能够满足嵌入式播放器与外部设备通信的需求。STM32F103ZE的主频高达72MHz,具备强大的数据处理能力,能够高效地运行DirectFB图形库和音视频解码算法。

  2. Intel CE3100

    Intel CE3100是一款专为支持互联网连接的消费类电子设备开发的高度集成的媒体处理器。它集成了强大的图形处理单元和音视频解码器,能够支持高清视频的播放。CE3100还支持Linux操作系统,为开发嵌入式播放器提供了良好的开发环境。在基于CE3100的嵌入式播放器设计中,可以利用DirectFB开发图形用户界面,并通过FFmpeg等多媒体库实现音视频解码和播放。

  3. 其他主控芯片

    除了STM32F103ZE和Intel CE3100外,还有许多其他类型的主控芯片可供选择,如ARM9、ARM11、DSP等。这些芯片各有优缺点,具体选择应根据实际需求和预算进行权衡。在选择主控芯片时,需要考虑其处理能力、功耗、外设接口、价格等因素。

在主控芯片的作用下,嵌入式播放器能够实现以下功能:

  • 音视频解码:通过主控芯片内置的音视频解码器或外部解码库(如FFmpeg),实现对各种音视频格式的解码。

  • 图形处理:利用DirectFB等图形库,实现图形用户界面的开发,提供美观易用的用户界面。

  • 外设控制:通过主控芯片的外设接口,实现对外部设备(如USB存储设备、红外遥控器等)的控制。

  • 网络通信:如果主控芯片支持网络通信功能,还可以实现嵌入式播放器的网络视频播放和远程控制等功能。

结论

本文提出了一种基于DirectFB的嵌入式播放器解决方案,通过详细的方案设计,实现了资源消耗少、可移植性强、系统各个模块间依赖度小的嵌入式播放器。该播放器采用DirectFB开发的Lite作为图形界面,与用户进行直接交互;调用DirectFB的Video实现了音视频的插件接口和解码器模块,具备很强的扩展性。通过选择适合的主控芯片,实现了音视频解码、图形处理、外设控制和网络通信等功能。该方案适用于CPU频率小于400MHz的中低端嵌入式系统,具有广泛的应用前景。


责任编辑:David

【免责声明】

1、本文内容、数据、图表等来源于网络引用或其他公开资料,版权归属原作者、原发表出处。若版权所有方对本文的引用持有异议,请联系拍明芯城(marketing@iczoom.com),本方将及时处理。

2、本文的引用仅供读者交流学习使用,不涉及商业目的。

3、本文内容仅代表作者观点,拍明芯城不对内容的准确性、可靠性或完整性提供明示或暗示的保证。读者阅读本文后做出的决定或行为,是基于自主意愿和独立判断做出的,请读者明确相关结果。

4、如需转载本方拥有版权的文章,请联系拍明芯城(marketing@iczoom.com)注明“转载原因”。未经允许私自转载拍明芯城将保留追究其法律责任的权利。

拍明芯城拥有对此声明的最终解释权。

标签: 嵌入式播放器

相关资讯

拍明芯城微信图标

各大手机应用商城搜索“拍明芯城”

下载客户端,随时随地买卖元器件!

拍明芯城公众号
拍明芯城抖音
拍明芯城b站
拍明芯城头条
拍明芯城微博
拍明芯城视频号
拍明
广告
恒捷广告
广告
深亚广告
广告
原厂直供
广告